3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

はじめに

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

また、今回はNode.jsでの作成となります。

スクリプト

bucketnameobjectnameuploadfileアクセスキー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」を利用した方が良さそうですね。

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?