2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OACを使用してCloudFrontからS3にアクセスする

Last updated at Posted at 2024-02-28

はじめに

この記事のゴールは、CloudFrontのOACを用いてS3に接続し、S3のオブジェクトをCloudFront経由で配信することです。

全体の流れ

  1. プライベートなS3バケット作成
  2. 作成したS3バケットにオブジェクト追加
  3. CloudFrontのディストリビューション作成(OAC設定)
  4. S3バケットにCloudFrontのOACからのオブジェクト取得を許可するポリシー追加
  5. CloudFrontのディストリビューションドメインからS3のオブジェクトにアクセスできることを確認

前提のお話

OACとは

正式名称は「Origin Access Control」で、CloudFrontからS3へ接続する際に使用されるコンポーネントです。
OACが出る前は、「Origin Access Identity(OAI)」が使用されていましたが、このOAIではSSE-KMSで暗号化されたバケットには使用できないなどいくつかの制限がありました。
OACはそのようなOAIでは制限されていたことにも対応できるようになっており、AWS公式でもOACの使用が推奨されています。

本題

1. プライベートなS3バケット作成

スクリーンショット 2024-02-28 11.46.09.png

各項目の設定値は以下のようにしました。
ACLを無効にして、パブリックアクセスをすべてブロックすることでプライベートなバケットにしています。
今回、暗号化はSSE-S3を設定していますが、OACはSSE-KMSにも対応していますので、SSE-KMSも選択可能です。

項目 設定値
オブジェクト所有者 ACL無効
このバケットのブロックパブリックアクセス設定 すべてブロック
バケットのバージョニング 無効
デフォルトの暗号化 SSE-S3

2. 作成したS3バケットにオブジェクト追加

今回は、index.htmlerror.html という2つのHTMLファイルをアップロードしました。

スクリーンショット 2024-02-28 12.01.08.png

3. CloudFrontのディストリビューション作成(OAC設定)

オリジンドメインに先ほど作成したS3バケットを指定します。
そして、オリジンアクセスで「Origin access control settings」を選択します。
「Create new OAC」からOACを作成(※)して、それを指定します。

今回は、この他の設定項目はすべてデフォルト値としました。
ちなみに、この作成画面でもOAIは「Legacy access identities」と表記されていますね。

※CloudFrontコンソールのサイドメニュー「セキュリティ > オリジンアクセス」から事前にOACを作成することも可能です。

スクリーンショット 2024-02-28 12.07.58.png

4. S3バケットにCloudFrontのOACからのオブジェクト取得を許可するポリシー追加

CloudFrontディストリビューションを作成すると、下の画像のようにアラートバーが表示されます。
アラートバー内の「ポリシーをコピー」をクリックすると、S3バケットに設定するポリシー(JSON文字列)をコピーできます。
コピーできれば、次にアラートバー内のリンクをクリックするとS3バケット設定画面に遷移します。

スクリーンショット_2024-02-28_13_27_04.png

遷移先のS3バケット設定画面でバケットポリシーを編集し、先ほどコピーしたポリシーをペーストします。このポリシーを確認すると、先ほど作成したディストリビューションからのみGetObjectが許可されていることがわかります。

スクリーンショット 2024-02-28 13.27.52.png

5. CloudFrontのディストリビューションドメインからS3のオブジェクトにアクセスできることを確認

S3バケットにアップロードした2つのHTMLファイルにアクセスできます。

スクリーンショット 2024-02-28 13.37.29.png

スクリーンショット 2024-02-28 13.37.44.png

最後に

特に面倒な行程もなく、簡単に構築できました。
今回はS3バケットの暗号化にSSE-S3を使用しており、OAIを使用することも可能です。
せっかくならOACで対応可能になったSSE-KMSを使用しても良かったんですが...。

また、今回構築したCloudFront+S3環境を使用してCloudFrontの署名付きCookieについてまとめた記事もありますので、もしご興味があればこちらもご覧ください。

最後まで読んでいただきありがとうございました。

参考ページ

本記事作成にあたり参考にさせていただきました。
ありがとうございました。

2
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?