Codable Tech Blog

iPhoneアプリケーション開発と AWS(Amazon Web Service)活用に関する記事を配信

Amazon S3 署名付きURLの作成

署名付きURLとは

一時的にユーザーに対してオブジェクトへのアクセスを許可したい時に利用するURL。例えばある商品の購入特典として特定ユーザーに3日間オブジェクトを公開したい場合などに利用する。署名URLを利用しておけば仮にURLが漏洩したとして被害をオブジェクト公開している期間だけに抑えることができる

署名付きURL発行手順

  1. IAMロールの作成
  2. IAMロールをEC2インスタンスに付与
  3. EC2インスタンスからS3に対して署名付きURLを要求

IAMロールの作成

EC2がS3に対して署名付きURLの発行を要求できるようにするために権限を付与する必要がある。この権限設定にIAMロールを使用する。
以下の手順に従ってIAMロールを作成する。

  1. IAM > ロール > ロールの作成
  2. AWSサービス > EC2
  3. ユースケースの選択でEC2を選択
  4. アクセス権限でAmazonS3ReadOnlyAccessを選択
  5. 任意のロール名と説明を入力してIAMロールを作成する

IAMロールをEC2インスタンスに付与

S3へ署名付きURLの発行を要求するEC2にIAMロールを以下の手順で付与する

  1. EC2 > インスタンス > S3へ署名付きURLの発行を要求するEC2インスタンスを選択
  2. アクション > インスタンスの設定 > IAMロールの割り当て/置換を選択
  3. IAMロールに「IAMロールの作成」の項で作成したロールを指定する

署名付きURLコマンドの実行

以下の手順で署名付きURLを生成する

  1. IAMロールを割り当てたEC2にログインする。
  2. 署名付きURLを生成したいオブジェクトに対して以下のコマンドを実行。有効期限の単位は秒で指定すること。コマンド実行後URLが発行される。発行されたURLにアクセスしてアクセスできることを確認する。
aws s3 presign s3://バケット名/オブジェクト名 --expires-in 有効期限

補足事項

  • フォルダに対して署名付きURLを指定してもフォルダ配下のオブジェクトにはアクセスできない
  • 署名付きURLの有効期限の確認はdateコマンドで行う。expiresの値は署名付きURLの中にexpires=xxxxxxの形式で記載されている。
date --date @expiresの値