はじめに
AWS SDK for Ruby バージョン 2 で期限付きURLの発行の内容のJavaScriptバージョンです。
なので対象の準備とかは省略します。
また、今回はNode.jsでの作成となります。
スクリプト
bucketname、objectname、uploadfileとアクセスキーIDとシークレットアクセスキーは適宜変更してください。
バケットのリージョンをTokyoにしなかった場合も適切なリージョンに変更する必要があります。
presigned_url.js
var AWS = require('aws-sdk');
var bucketname = "kohei-no-bucket"; // バケット名
var objectname = "ceresso.png"; // オブジェクト名
AWS.config.update({
"accessKeyId": "********************", // アクセスキーID
"secretAccessKey":"****************************************", // シークレットアクセスキー
"region": "ap-northeast-1" // Tokyoリージョン
});
var s3 = new AWS.S3();
var params = {Bucket: bucketname, Key: objectname, Expires: 60}; // Expires:有効期限(秒)
s3.getSignedUrl('getObject', params, function (err, url) {
console.log(url);
});
aws-sdkをインストールしておくのも忘れずに。
aws-sdkインストール
$ npm install aws-sdk
実践!
URL発行
$ node presigned_url.js
https://kohei-no-bucket.s3-ap-northeast-1.amazonaws.com/ceresso.png?AWSAccessKeyId=********************&Expires=1472183082&Signature=gcmfSyy1xxWqAQnZANxNm1sWRXk%3D
おわりに
ポイントはgetSignedUrlです。Rubyでのpresigned_urlにあたります。
ただ、Rubyの場合は「604800秒(1週間)」の制限がありましたがJavaScriptの場合だとドキュメントに記載がないのでそれがないみたいで、期限付きURLも問題なく発行できました。
となると今回の場合は「AWS SDK for JavaScript」を利用した方が良さそうですね。