在AWS JavaScript SDK中设置签名

时间:2015-03-09 21:01:48

标签: amazon-web-services aws-sdk

使用AWS JavaScript SDK发出AWS请求时是否可以手动设置签名?我想直接将文件上传到S3,但我不想让我的密钥以明文形式提供给客户端。所有官方示例都要求您对密钥和密钥进行硬编码(同时明确告诉您不要这样做)。我正在计算签名服务器端,但我还没有办法将该签名放入SDK中。

1 个答案:

答案 0 :(得分:1)

我最终使用AWS STS为此做了一个不同的路线。但是,如果你想做这样的事情就是解决方案:

使用AWS JavaScript SDK,您可以在AWS.Request对象上订阅“请求构建事件”。这些事件(validatebuildsign)将允许您在发送请求之前访问和修改请求状态(标题,正文等)。大多数调用都会返回AWS.Request个实例(除了.upload以外的S3)。

以下是一个例子:

var request = s3.putObject({
  Bucket: 'MyBucket',
  Key: file.name,
  ContentType: file.contentType,
  Body: file
});

request.on('sign', function() {
  request.httpHeaders.Authorization = 'AWS Signature';
});

request.send(function(err, data) {
  // Do something here
});

我认为这里的诀窍是在创建请求(我的示例中为.putObject)并使用.send方法启动请求时不指定回调。

文档:http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Request.html