如何向S3.upload()请求添加“授权”标头?

时间:2019-12-05 01:33:38

标签: amazon-s3 aws-sdk aws-sdk-js

我的代码使用AWS Javascript SDK直接从浏览器上传到S3。在上传发生之前,我的服务器会向其发送一个值以用于“授权”。

但是我看不到可以添加此标头的AWS.S3.upload()方法。

我知道在.upload()方法下面使用了AWS.S3.ManagedUpload,但这似乎也没有在任何地方返回Request对象供我添加标头。

当我在S3()对象中对凭据进行硬编码时,它在我的开发环境中成功运行,但是在生产环境中无法做到这一点。

如何将Authorization标头添加到upload()调用中?

2 个答案:

答案 0 :(得分:0)

客户端

此帖子说明了如何使用预先生成的签名从html表单发布 How do you upload files directly to S3 over SSL?

服务器端

初始化S3时,可以传递访问密钥和密码。

const s3 = new AWS.S3({
  apiVersion: '2006-03-01',
  accessKeyId: '[value]',
  secretAccessKey: '[value]'
});

const params = {};
s3.upload(params, function (err, data) {
  console.log(err, data);
});

参考:https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html

或者,如果您在AWS服务(例如EC2,Lambda,ECS等)中运行此代码,则可以为正在使用的服务分配IAM角色。可以将权限分配给IAM角色

答案 1 :(得分:0)

我建议您使用presigned urls