[英]S3 gives SignatureDoesNotMatch error for PutObject command pre-signed url using aws-sdk v3
[英]Using aws javascript sdk putObject with a pre-signed URL
我有一個可行的解決方案,允許用戶使用服務器生成的策略,簽名和有效期將文件上傳到s3,如下所示:
<form id="uploadForm" action=*myBucketUrl* method="post" enctype="multipart/form-data">
<input type="hidden" name="AWSAccessKeyId" >
<input type="hidden" name="key">
<input type="hidden" name="Content-Type" >
<input type="hidden" name="acl" value="private">
<input type="hidden" name="policy">
<input type="hidden" name="signature">
</form>
這很好,所以CORS,S3,簽名等都可以正常工作。
我想使用適用於Java的AWS開發工具包嘗試相同的方法。 我找不到任何提及如何將我的價值觀用於“政策”和“簽名”的信息。 到目前為止,這是我的代碼:
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.');
});
是否可以將AWS JS SDK的s3.putObject與預簽名請求結合使用?
我們最近想從定制實現過渡到AWS JS SDK,並且遇到了同樣的問題。 不幸的是,據我所知,這是沒有辦法的。 但是,還有另一種方法:
您可以為此使用Cognito。 每次用戶上載是必要的(或上載)時,請執行認知調用以獲取未經身份驗證的用戶令牌。 可以授予與未經身份驗證的用戶關聯的IAM角色訪問您要放入用戶文件的存儲桶的權限。然后,可以使用Cognito憑據對請求進行簽名。 這就是我們現在的做法,並且效果很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.