我有一个可行的解决方案,允许用户使用服务器生成的策略,签名和文件上传文件到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与预先签名的请求结合使用?
答案 0 :(得分:0)
我们最近想从自定义实现迁移到AWS JS SDK并遇到同样的问题。不幸的是,据我所知,没有办法做到这一点。然而,还有另一种方法:
您可以使用Cognito进行此操作。每次用户上传都是nessecary(或上传)时,请执行cognito调用以获取未经身份验证的用户令牌。可以为与未经身份验证的用户关联的IAM角色授予您希望将用户文件放入的存储桶的访问权限。然后可以使用Cognito凭据对请求进行签名。这就是我们现在这样做的方式,而且效果非常好。