使用带有预签名URL的aws javascript sdk putObject

时间:2016-02-03 16:46:10

标签: javascript amazon-web-services amazon-s3

我有一个可行的解决方案,允许用户使用服务器生成的策略,签名和文件上传文件到s3。到期,如此:

var bucket = new AWS.S3({
    accessKeyId: $("#uploadForm input[name='AWSAccessKeyId']").val(),
    params: {
        Bucket: myBucket
    }
});
var params = {
    Key: $("#uploadForm input[name='key']").val(),
    ContentType: $("#uploadForm input[name='Content-Type']").val(),
    Body: blob,
};
bucket.upload(params, function(err, data) {
    console.log(err ? 'ERROR!' + err : 'UPLOADED.');
});

这很好用,所以CORS,S3,签名等工作正常。

我想使用AWS SDK for Javascript尝试相同的方法。我找不到如何将我的值用于“策略”和“签名”。到目前为止,这是我的代码:

{{1}}

是否可以将AWS JS SDK的s3.putObject与预先签名的请求结合使用?

1 个答案:

答案 0 :(得分:0)

我们最近想从自定义实现迁移到AWS JS SDK并遇到同样的问题。不幸的是,据我所知,没有办法做到这一点。然而,还有另一种方法:

您可以使用Cognito进行此操作。每次用户上传都是nessecary(或上传)时,请执行cognito调用以获取未经身份验证的用户令牌。可以为与未经身份验证的用户关联的IAM角色授予您希望将用户文件放入的存储桶的访问权限。然后可以使用Cognito凭据对请求进行签名。这就是我们现在这样做的方式,而且效果非常好。