AWS SDK for JavaScript (Node.js) で期限付きURLの発行

AWSJavaScriptNode.jsaws-sdk

Written by Kohei Yamada Posted on 2016/09/27



はじめに

AWS SDK for Ruby バージョン 2 で期限付きURLの発行の内容のJavaScriptバージョンです。
なので対象の準備とかは省略します。


スクリプト

bucketnameobjectnameuploadfileアクセスキー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です。Rubyでのpresigned_urlにあたります。
ただ、Rubyの場合は「604800秒(1週間)」の制限がありましたがJavaScriptの場合だとドキュメントに記載がないのでそれがないみたいで、期限付きURLも問題なく発行できました。
となると今回の場合は「AWS SDK for JavaScript」を利用した方が良さそうですね。