2017-06-25 144 views
0

S3のプライベートファイルtest.png用に事前設定されたURLを作成しようとしています。 マイコード:aws-sdkのAWS S3で署名されたURLが「AuthorizationQueryParametersError」で失敗する

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> 

私は完全に立ち往生していますし、本当に... おかげでそれを解決する方法についていくつかのアイデアをお願い申し上げますを示しています!

+0

署名されたURLにエラーのすべてのパラメータがリストされていませんか?そうすべき。あなたは例を見せてもらえますか? –

答えて

0

あなたのコードをテストしました。私はkeybucketに変更を加えました。できます。あなたが使用しているaws sdkバージョンと使用しているnodejsバージョンを知っているかもしれませんか?私のテストはnodejs 8.1.2と[email protected]で実行されました。

私はカールを実行したときにエラーを再現できました。

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"(働いていた)

あなたは二重引用符なしでカール場合、アンパサンドは、バックグラウンド・プロセスとしてシェルによって解釈されます。

また、生成されたリンクをブラウザに貼り付けることもできます。

これが役に立ちます。

関連する問題