0
0

More than 3 years have passed since last update.

S3をWebサーバーにしてコンテンツを公開する②(S3署名付きURL編)

Last updated at Posted at 2021-03-08

S3をWebサーバーにして静的コンテンツを公開する方法を紹介します。

  1. S3パブリック編
  2. S3署名付きURL編 ←コレ!
  3. CloudFrontパブリック編
  4. CloudFront署名付きURL編
  5. CloudFront署名付きCookie編

手順

バケットの作成

まずはバケットを作成しましょう。

マネジメントコンソールでS3のページを開きます。
バケットを作成をクリックします。

s3.console.aws.amazon.com_s3_home_region=ap-northeast-1(iPad).png

バケットの名前を入れて、リージョンを選択します。
バケット名は世界中のS3で一意である必要があります。

s3.console.aws.amazon.com_s3_home_region=ap-northeast-1(iPad) (1).png

署名付きURLで公開する場合は、「バケットのブロックパブリックアクセス設定」はデフォルトのすべてブロックで問題ありません。

s3.console.aws.amazon.com_s3_home_region=ap-northeast-3(iPad).png

これでバケット作成は完了です。

HTMLの格納

作成したバケットを選択します。
そして、HTMLファイルをドラッグアンドドロップします。

s3.console.aws.amazon.com_s3_home_region=ap-northeast-1(iPad) (3).png

設定が色々ありますが、画面最下部のアップロードを実行します。

s3.console.aws.amazon.com_s3_home_region=ap-northeast-1(iPad) (4).png

複数ファイルやフォルダーまるごとアップロードすることも可能です。

公開する

署名付きURLのURLはマネジメントコンソールでは作成できず、CLIなどを利用して作成します。
CloudShellを使うと簡単にCLIを実行できます。

ap-northeast-1.console.aws.amazon.com_cloudshell_home_region=ap-northeast-1(iPad).png

実行するコマンドはaws s3 presignです。

[cloudshell-user@ip-XX-XX-XX-XX ~]$ aws s3 presign s3://website-2721ae93/index.html --expires-in 604800 --region ap-northeast-3

expiresは署名付きURLの有効期限です。(604800を指定すると、一週間有効となります。)
少しだけハマったのですが、CloudShellが東京リージョンで実行されてて、S3のバケットが大阪リージョンの場合、明示的に--region ap-northeast-3をつけないと、無効な署名付きURLが生成されます。(生成は成功しますが、アクセスするとAuthorizationQueryParametersErrorというエラーとなります)

発行された署名付きURLは、クエリパラメータに以下の文字が付与されており、コレが適切に設定されている場合のみ、ファイルにアクセスができるという仕組みです。

X-Amz-Algorithm=XXXXXXXXXX
X-Amz-Credential=XXXXXXXXXX
X-Amz-Date=XXXXXXXXXX
X-Amz-Expires=XXXXXXXXXX
X-Amz-SignedHeaders=XXXXXXXXXX
X-Amz-Security-Token=XXXXXXXXXX
X-Amz-Signature=XXXXXXXXXX
0
0
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
0
0