AWS S3の期限付きURLを作成し、S3にあるファイルをダウンロードする

AWS S3の期限付きURLを作成し、S3にあるファイルをダウンロードする

AWS S3のファイルを期限付きURLというURLにttlを持たせて、そのURLが有効な時間にアクセスすると指定されたファイルをダウンロードすることができる、というとても素晴らしい機能です。

以下、バケットにあるzipファイルの期限付きURLを作成し、SNSのトピック、サブスクリプションで指定したメールアドレスに送信します。

const aws = require('aws-sdk');

exports.handler = function(event, context){
  const s3 = new aws.S3();
  const params = {Bucket: 'sig-v4', Key: 'SSL.zip', Expires: 60};
  const url = s3.getSignedUrl('getObject', params);

  const sns = new aws.SNS();
  sns.publish(
    {
      TopicArn: 'arn:aws:sns:us-xxxxx:xxxxxxxxxxxx:test',
      Message: url,
      Subject: 'タイトル'
    }, function (err, data) {
    if (!err) {
      context.done(null,'');
    }else{
      context.fail();
    }
  });
};

これで指定したメールに送信され、URLをクリックすると、上記で言うSSL.zipというファイルがダウンロードされます。

有効期限の単位は「秒」なので、このサンプルでは60秒です。

60秒を超えてURLにアクセスすると以下の画面になります。

AWS S3の期限付きURLを作成し、S3にあるファイルをダウンロードする

AWS SNSは管理者や運用者宛のPUB/SUBだと思います

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました