【初心者向け】CloudFront経由でS3のファイルを見る【やってみた】

2020.04.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

恩塚です!

  • CloudFront経由でS3のファイルにアクセス
  • オリジンアクセスアイデンティティ(OAI)の設定でプライベートに接続

をやってみました。

やってみた

(完成イメージ)

S3内のファイルを直接見ることができないがCloudFront経由では見ることができる

S3にファイルを置く

  • S3メニュー>バケットを作成>適当なバケット名で作成
  • ブロックパブリックアクセスのバケット設定についてはデフォルト(オフ)のまま次に行ってOK
  • バケットを選択>アップロード>適当な画像ファイルをアップロード
  • S3のファイルに直接アクセスされないように画像のような設定にしておく(デフォルトでこうなっている)

S3の直URLでファイルをみてみると

  • ファイルを選択>概要>オブジェクトURL

ファイルが非公開で見れないのが確認できた!

CloudFrontのディストリビューションを作成

  • ディストリビューションはCloudFrontに割り当てられたドメインとそれに紐づく各種設定だと理解してます
  • CloudFrontメニュー>Create Distributions>Web
    • RTMPは動画などに適しているらしい、今回は画像なのでWebを選択

  • [Origin Domain Name]で作成したS3バケットを選択
  • [Restrict Bucket Access]はYes
    • オリジンに指定したS3バケットへのアクセスを拒絶する
  • [Origin Access Identity]はCreate a New Identity
    • オリジンアクセスアイデンティティ(以下OAI)を作成する
  • [Grant Read Permissions on Bucket]はYes, Update Bucket Policy
    • 作成したOAIをS3バケットのポリシーに記載してくれる
  • 他の設定は全てデフォルトのままCreate Distribution

  • Statusが In Progress から Deployed になるのを待つ

  • {DomainName}/{S3に置いたファイル名}にアクセスしてみる

でけた!!

(参考)

CloudFront オリジンアクセスアイデンティティを作成してディストリビューションに追加する

まとめ

  • オリジンアクセスアイデンティティ(OAI)はCloudFrontに設定することでCloudFront経由以外のオリジンへのアクセスを制限できる。