簡體   English   中英

使用 aws-sdk 的 AWS S3 簽名 URL 失敗並顯示“AuthorizationQueryParametersError”

[英]AWS S3 signed URLs with aws-sdk fails with “AuthorizationQueryParametersError”

我正在嘗試為 S3 上的私有文件 test.png 創建一個預先簽名的 URL。 我的代碼:

var AWS = require('aws-sdk'); 

AWS.config.region = 'eu-central-1';

const s3 = new AWS.S3();

const key = 'folder/test.png';
const bucket = 'mybucket';
const expiresIn = 2000; 

const params = {
    Bucket: bucket,
    Key: key,
    Expires: expiresIn,
};
console.log('params: ', params);
console.log('region: ', AWS.config.region);

var url = s3.getSignedUrl('getObject', params);
console.log('url sync: ', url);

s3.getSignedUrl('getObject', params, function (err, urlX) {
    console.log("url async: ", urlX);
});

它在控制台中返回一個 URL。 當我嘗試訪問它時,它顯示

<Error>
<Code>AuthorizationQueryParametersError</Code>
<Message>
Query-string authentication version 4 requires the X-Amz-Algorithm, X-Amz-Credential, X-Amz-Signature, X-Amz-Date, X-Amz-SignedHeaders, and X-Amz-Expires parameters.
</Message>
<RequestId>97377E063D0B1D09</RequestId>
<HostId>
6GE7EdqUvCEJis+fPoWR0Ffp2kN9Mlql4gs+qB4uY3hA4qR2wYrImkZfv05xy4XVjsZnRDVN63s=
</HostId>
</Error>

我完全被困住了,真的很感激一些關於如何解決它的想法。

我測試了你的代碼。 我只對keybucket進行了修改。 它有效。 我可以知道您使用的 aws sdk 版本和您使用的 nodejs 版本嗎? 我的測試是在 nodejs 8.1.2 和aws-sdk@2.77.0上執行的。

當我執行 curl 時,我能夠重現您的錯誤。

curl url (錯誤)-> <Error><Code>AuthorizationQueryParametersError</Code><Message>Query-string authentication version 4 requires the X-Amz-Algorithm, X-Amz-Credential, X-Amz-Signature, X-Amz-Date, X-Amz-SignedHeaders, and X-Amz-Expires parameters.</Message>

curl "url" (工作)

如果在沒有雙引號的情況下卷曲,shell 會將 & 符號解釋為后台進程。

或者,您可以嘗試在瀏覽器中粘貼生成的鏈接。

希望這會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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