不毛な投稿

ラジオ「不毛な議論」DP 30 Pointを目指して

大きいファイルを簡単に人にダウンロードしてほしい(一時的に・・・)

AWS S3を使って一時的に大きなファイルを渡したい」

 

  • もちろんPublicアクセスはなし
  • 一時的にちょっと渡すだけ
  • 追加でIAMとか用意するのめんどい
  • S3 Explorer など持っていない

 

利用するAWSサービス

  • S3(署名付きURLを利用)

 

最終形

  • 署名付きURLを渡す
  • ブラウザでクリックするだけで表示(ダウンロード)
  • 指定時間後、アクセスできなくなる

準備する設定

  • Publicアクセス禁止「パブリックアクセスをすべてブロック」のS3バケット
  • 対象S3バケットにアクセス可能なIAMユーザ
  • ファイルを置く&aws s3 presign コマンド(CLI)を実行する。s3 presign は対象のS3バケット(ファイル)に対するReadが必要。

 

実行コマンド

 

aws s3 presign S3 URI --expires-in SECONDS

 

エラー事例

aws s3 presignコマンドを実行した環境設定のregionがファイルを置いているregionと違っていた。そのURLでアクセスするとアクセスエラー。

The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.

Publicアクセス禁止状態で署名なしの通常のエンドポイントURLにアクセスした場合

<Code>AccessDenied</Code>
<Message>Access Denied</Message>

制限時間切れ

<Code>AccessDenied</Code>
<Message>Request has expired</Message>
<X-Amz-Expires>300</X-Amz-Expires>

AWS CLI V1の場合、署名アルゴリズムが古くためにエラー

CLIインストール
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2-windows.html

 

参考

AWS Blackbelt S3


www.youtube.com