AWS cloudfront から s3 への Origin Access Identityを使ったアクセス

S3で静的サイトを公開するのですが、その際、直接S3へのアクセスを許可したくないので、特定のディストリビューションでのCloudfront経由のみから「Origin Access Identity」を使い特定アクセスを許可するよう設定を進めていました。

S3の設定で、

  • 静的ウェブサイトホスティング」 = OFF
  • アクセス権限やパケットポリシーなし = Privete

とし、Cloudfrontの設定を下記の記事を参考に設定しました。
https://dev.classmethod.jp/cloud/aws/cloudfront-s3-origin-access-identity/
※大変参考になりました。ありがとうございます。

ただ、設定を完了し、いざ試す際に想定どおり動きませんでした。
S3直アクセスは、403でアクセスできないのはわかるのですが、
Cloudfrontで生成されるURLにアクセスすると、s3のURLへリダイレクトされてしまい、S3に直でアクセスしているのと同じ挙動になってしまいました。

色々と調べてたら、

時間が立てばリダイレクトしなくなる
https://forums.aws.amazon.com/thread.jspa?threadID=216814

ということでした笑。

cloudfrontのディストリビューションは「deployed」になってるのに、その後も時間が少しかかるみたいですね。
落ち着いて待ちましょう。

一応、s3の設定内容の整理です。

静的ウェブサイトホスティング

これは、そのままの意味で、webとして、ホスティングする際に必ずONにする必要があります。
cloudfront経由のみのアクセスを可能にする場合OFFにします。

Amazon S3 での静的ウェブサイトのホスティング

アクセス権限やパケットポリシーについて

アクセス権限は、あくまで、そのパケット自体や、各ファイルに設定するアクセスの権限です。
パケット全体のアクセスをパブリックにせず、特定のファイルのみ、パブリックにすることも可能です。

Cloudfront経由のみのパブリック・アクセスにしたい場合は、パブリックにしない
デスク