簡體   English   中英

將AWS javascript sdk putObject與預簽名URL一起使用

[英]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,簽名等都可以正常工作。

我想使用適用於JavaAWS開發工具包嘗試相同的方法。 我找不到任何提及如何將我的價值觀用於“政策”和“簽名”的信息。 到目前為止,這是我的代碼:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM