基于PIX4D API的Nest.js后端S3图片上传403授权错误求助
基于PIX4D API的S3图片上传403授权错误问题
我正在开发一个基于PIX4D API的项目,后端采用Nest.js,前端为React TypeScript。目前已完成令牌创建、项目创建、获取项目AWS凭证等操作,但使用获取到的凭证向S3存储桶上传图片时,始终出现axios 403授权错误,暂时找不到解决方向。
以下是Nest.js中用于S3图片上传的代码:
async uploadPhotoS3(fileData: Buffer): Promise<any> { try{ const {id} = await this.projectService.createProject({ name: 'firstproject' }); const awsConfig = await this.awsService.getCredentials(id); console.log(awsConfig); const s3 = { accessKeyId: awsConfig.access_key, secretKey: awsConfig.secret_key, sessionToken: awsConfig.session_token, bucket: awsConfig.bucket, key: awsConfig.key, region: awsConfig.region } // Prepare the request options const requestOptions = { host: `https://s3.amazonaws.com/${s3.bucket}`, url: `https://s3.amazonaws.com/${s3.bucket}/${s3.key}`, path: `/${s3.key}`, method: 'PUT', headers: { 'Content-Type': 'multipart/form-data', // 'Authorization': `AWS4-HMAC-SHA256 Credential=${accKey}/20230606/${region}/s3/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-content-sha256;x-amz-date, Signature=${awsConfig.Signature}` }, service: 's3', region: s3.region, data: fileData, body: fileData, }; // Sign the request using aws4 const signedRequest = AWS4.sign(requestOptions, { accessKeyId: s3.accessKeyId , secretAccessKey: s3.secretKey, sessionToken: s3.sessionToken, }); console.log(signedRequest); delete signedRequest.headers['Host']; const response = await axios({ ...signedRequest, url:`https://s3.${s3.region}.amazonaws.com/${s3.bucket}/${s3.key}`, data: requestOptions.body }); console.log(response); return response; } catch(error){ console.log(error); } }
有没有熟悉PIX4D API与S3存储桶的开发者能帮忙排查这个403错误?参考文档为PIX4D Cloud API文档。
内容的提问来源于stack exchange,提问作者Christophoros Feggaris
相关产品推荐
相关产品推荐

