Ch.5 ストレージとデータ管理

S3を利用した静的コンテンツ配信のセキュリティ設定

バケットポリシーを利用する場合、実施しなくてはならない設定は3つ

  1. (バケット生成時に)「パブリックアクセスを全てブロック」を解除する。
  2. バケットのプロパティで静的Webサイトホスティングを有効にする。
  3. バケットポリシーを下記の様に記述する。 (4. ファイルをアップロードする。)
{
  "Version":"2012-10-17",
  "Statement":[{
     "Sid":"PublicReadGetObject",
     "Effect":"Allow",
     "Principal": "*",
     "Action":["s3:GetObject"],
     "Resource":["arn:aws:s3:::pyons-texh-blog/*"]
  }]
}

一方、ACLを利用した公開も利用できる。 ACLを利用する場合、下記のような手順になる。

  1. (バケット生成時に)「パブリックアクセスを全てブロック」を解除する。
  2. (バケット生成時に)ACLを有効にする。
  3. バケットのプロパティで静的Webサイトホストティングを有効にする。
  4. (ファイルのアップロード時に)ACLを設定する。事前定義ACLを使ってパブリックアクセス可能にする。

f:id:Pyons:20220213072833p:plain
バケット初期化時にACLを有効化

ACLにはBucketACLとObjectACLが存在する。 下記の様にオブジェクトをアップロードする際に表示されるのはObjectACLの設定画面。

ObjectACLの設定を変更すると静的Webサイトホストティングによりオブジェクトへのアクセスが可能になる

f:id:Pyons:20220213073331p:plain
オブジェクトACLの設定

またはバケットの設定画面からBucketACLを変更することも出来る。 ただし確認したところ、BucketACLでアクセスを許可しただけだと、オブジェクトに対するアクセスは403エラーとなった

f:id:Pyons:20220213080041p:plain
BucketACLの設定