AWS S3 POST 问题

问题描述 投票:0回答:1

在 javascript SDK 中使用此版本的 createPresignedPost 属性(我知道这是一个较旧的 SDK...由于节点版本,我被迫使用它)我正在为文件上传生成 POST 标头。

当我在 Postman 中设置这些标头时,出现以下错误:

Bucket POST 必须包含名为“key”的字段。

当我指定“密钥”时,我收到一个新错误

根据政策无效:额外输入字段:key。

知道这是什么意思以及如何让 AWS 发挥良好作用以便我最终可以上传文件吗?

我确实将文件作为最后一个参数,如其他类似问题中提到的那样

amazon-s3 aws-sdk
1个回答
0
投票

事实证明我最初没有正确传递我的密钥。

最初我是这样传递的:

const params = {
      Bucket: BUCKET, // replace with your bucket name
      Expires: 3600, // URL validity (1 hour in this case)
      Key: uploadFileKey
    };

s3.createPresignedPost(params, (err, data) => {
      if (err) {
        
      } else {
          console.log('data', data);
      }
    });

没有将密钥返回到字段中:

{
url: 'https://s3.amazonaws.com/ss-usa',
fields: {
    bucket: 'my-bucket',
    'X-Amz-Algorithm': 'AWS4-HMAC-SHA256',
    'X-Amz-Credential': 'SOMECREDENTIAL/20231020/us-east-1/s3/aws4_request',
    'X-Amz-Date': '20231020T143349Z',
    Policy: 'SOMEPOLICY=',
    'X-Amz-Signature': 'SOMESIGNATURE'
    }
}

我需要执行以下操作:

const params = {
      Bucket: BUCKET, // replace with your bucket name
      Expires: 3600, // URL validity (1 hour in this case)
      Fields: {
        key: targetFilePath,
      },
    };

s3.createPresignedPost(params, (err, data) => {
      if (err) {
        
      } else {
          console.log('data', data);
      }
    });

它确实将密钥返回到字段中,从而允许我在 Postman 中添加密钥字段并成功发布我的文件

{
url: 'https://s3.amazonaws.com/ss-usa',
fields: {
    key: 'my-key'
    bucket: 'my-bucket',
    'X-Amz-Algorithm': 'AWS4-HMAC-SHA256',
    'X-Amz-Credential': 'SOMECREDENTIAL/20231020/us-east-1/s3/aws4_request',
    'X-Amz-Date': '20231020T143349Z',
    Policy: 'SOMEPOLICY=',
    'X-Amz-Signature': 'SOMESIGNATURE'
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.