AWS SDK for JavaScript (Node.js) で期限付きURLの発行
はじめに
AWS SDK for Ruby バージョン 2 で期限付きURLの発行の内容のJavaScriptバージョンです。 なので対象の準備とかは省略します。
# スクリプト **bucketname**、**objectname**、**uploadfile**と**アクセスキーID**と**シークレットアクセスキー**は適宜変更してください。 バケットのリージョンをTokyoにしなかった場合も適切なリージョンに変更する必要があります。
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をインストールしておくのも忘れずに。
$ npm install aws-sdk
# 実践!
$ node presigned_url.js
https://kohei-no-bucket.s3-ap-northeast-1.amazonaws.com/ceresso.png?AWSAccessKeyId=********************&Expires=1472183082&Signature=gcmfSyy1xxWqAQnZANxNm1sWRXk%3D
# おわりに ポイントは[getSignedUrl](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrl-property)です。Rubyでの[presigned_url](http://docs.aws.amazon.com/sdkforruby/api/Aws/S3/Object.html#presigned_url-instance_method)にあたります。 ただ、Rubyの場合は「**604800秒(1週間)**」の制限がありましたがJavaScriptの場合だとドキュメントに記載がないのでそれがないみたいで、期限付きURLも問題なく発行できました。 となると今回の場合は「**AWS SDK for JavaScript**」を利用した方が良さそうですね。