署名付きURLを作成する前にオブジェクトをチェックする必要があります。私はカスタムExpiresを使用する必要があります。私は次のコードを使用しています。Node.JSのAWS S3バケットにオブジェクトがあります
var AWS = require('aws-sdk');
AWS.config.update({accessKeyId: 'YOURKEY', secretAccessKey:'YOURSECRET'});
var s3 = new AWS.S3()
params = {Bucket:'BUCKET_NAME', Key: 'TEST.pdf', Expires: 10000}
s3.headObject(params, function(err, data) {
if (err) console.log(err,err.code); // an error occurred
else
{
s3.getSignedUrl('getObject', params, function (err, url) {
if (err) {
console.log('error: ' + err);
} else {
console.log('Signed URL: ' + url);
}
});
} // successful response
});
headObjectで次のエラーが発生しています。私はheadObjectがExpiriesをサポートしていないことを知っています。
{ [UnexpectedParameter: Unexpected key 'Expires' found in params]
message: 'Unexpected key \'Expires\' found in params',
code: 'UnexpectedParameter',
time: Wed Apr 06 2016 10:14:53 GMT-0500 (CDT) }
headheadとgetSignedUrlの両方でカスタム期限切れのparamsを使用するにはどうすればよいですか?
'headObject'呼び出し用のparamsオブジェクトと' getSignedUrl'呼び出し用のもう1つのparamsオブジェクトを作成します。なぜあなたは両方の呼び出しで同じオブジェクトを使用する必要があると思いますか? –
私はそれを行うことができます。有効期限が切れていないと、デフォルトは900秒です。私はカスタムの有効期限を使用する方法を見つけるためにこの質問を投稿しました。 – Lutfor
私はあなたが理解しているとは思わない。 HeadObjectは、あなたのエラーメッセージが言っているものとまったく同じexpiresパラメータをとらないので、そのメソッド呼び出しにexpiresパラメータを渡すことはできません。そのメソッド呼び出しで渡すのは意味がありません。なぜなら、オブジェクト上に何も設定していないからです。単純にオブジェクトデータを取得するだけです。そのメソッド呼び出しの有効期限を設定するものは何もありません。期限切れにする必要があるURLを作成するのは、getSignedUrlメソッド呼び出しでexpiresヘッダーを渡すだけです。 –