4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

AWS S3 + CloudFront を用いたサーバー構築 - OAC で安全にアクセス

Last updated at Posted at 2024-06-24

概要

AWS S3 と CloudFront を使用し、独自ドメインで安全にアクセスできるサーバー環境構築をステップバイステップで解説します。本ガイドでは、Origin Access Identity (OAC) を活用し、CloudFront からのみ S3 にアクセスできるようにすることでセキュリティを強化します。また、AWS Certificate Manager (ACM) を利用して無料の SSL 証明書を取得し、HTTPS 接続を実現します。最後に、Route53 を用いて独自ドメインを CloudFront に設定し、ユーザーに安全なアクセスを提供する方法を紹介します。

1. S3 バケットの作成

まず、S3 バケットを作成します。バケット名はグローバルにユニークである必要があるため、注意して命名してください。

  • AWS コンソールにログインし、S3 サービスにアクセスします
  • バケットを作成 をクリックします
  • バケット名を入力し、リージョン(日本の場合は東京を選ぶと良い)を選択して 次へ をクリックします
  • オブジェクト所有者 はACL無効を選択します
  • バケットのアクセス権限を適切に設定します。本記事では、CloudFront からのみアクセスできるようにしますので、"アクセス権限の編集" で "ブロックパブリックアクセス" を選択します
  • "ブロックパブリックアクセス" の設定で、"パブリックアクセスをすべて ブロック" を選択し、次へ をクリックします
  • バケットのバージョニング は必要なら有効にしてよいですが、無効でもよいです
  • "タグ" は任意で設定できます。次へ をクリックします
  • "確認" 画面で設定を確認し、バケットを作成 をクリックします
  • 作成ができたら、そのバケットを選択肢、"プロパティ" タブを選ぶと、一番下に「静的ウェブサイトホスティング」というセクションがあるので、編集をクリックします
  • 静的ウェブサイトホスティングで「有効にする」を選択し、インデックスドキュメントには「index.html」を入力、それ以外の項目はデフォルトのままで「変更の保存」をクリックします

s3.png

2. ACM を利用した SSL 証明書の取得

ACM を利用して、無料の SSL 証明書を取得します。先にこちらの手順をしておくとスムーズです。

  • AWS コンソールで ACM サービスにアクセスします
  • 画面右上のリージョンの設定が「バージニア北部(N. Virginia)」になっていることを確認してください
  • 証明書をリクエストする をクリックします
  • ドメイン名 に独自ドメイン名を入力し、検証方法 は「DNS検証」を選択します
  • キーアルゴリズムは「RSA 2048」を選んでください
  • 設定できたら画面右下の「リクエスト」をクリックします

acm copy.png

  • 証明書リクエストが作成されたら、ドメインの欄にある「Route 53でレコードを作成」をクリックすると、自動的にRoute53にレコードが追加されます
    ※ Route53 を使用していない場合は、ドメインを管理しているDNS側でCNAMEにキーを設定する必要があります
  • 検証が正常に設定されると、しばらく待てば、証明書が発行されて「発行済み」の状態になります
  • 証明書は、後ほどCloudfrontの管理画面から設定できるので、ダウンロードはしなくても大丈夫です

acm2 copy.png

3. CloudFront のディストリビューション

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

  • AWS コンソールで CloudFront サービスにアクセスします
  • ディストリビューションのメニューに移動し、ディストリビューションを作成 をクリックします
  • Origin Domain に S3 バケットのエンドポイント [YOUR_BUCKET_NAME].s3.amazonaws.com を入力します
  • Origin Path は空欄のままにしてください
  • オリジンアクセス は、「Origin access control settings (recommended)」を選び、「Create new OAC」を選んで、 OAC を作成します
  • OACの設定はデフォルトのままで「Create」をクリックして作成して大丈夫です
  • Default Cache Behavior で、以下の設定を行います
    • Viewer Protocol PolicyRedirect HTTP to HTTPS を選択します
    • Allowed HTTP MethodsGET, HEAD を選択します
    • Cache Policy はデフォルトのままでよいです
    • Origin Shield は必要の応じて有効にしてください
    • Origin Response Headers はデフォルトのままで良いです
  • 設定の料金クラスは「すべてのエッジロケーションを使用する(最高のパフォーマンス)」を選びます
  • 代替ドメインには、さきほどACMで設定した証明書のドメインを入力します(サブドメインもつけている場合はサブドメイン込みで入力します)
  • Custom SSL Certificate に、ACM で取得した証明書を選択し、SSL Certificate ID を入力します
  • セキュリティポリシーはTLSv1.2_2021(推奨)を選びます
  • サポートされているHTTPバージョンは、HTTP/2のままで良いです
  • デフォルトルートオブジェクトは、「index.html」を入力します
  • それ以外はデフォルトの設定で大丈夫です
  • 設定の確認 画面で設定を確認し、ディストリビューションを作成 をクリックします
  • 正常に配信設定(ディストリビューション)が作成されると、画面上部に「S3のバケットポリシーに設定する必要がある」という旨の通知が出ると思いますので、コピーをクリックしてコピーしておくと次のステップで便利です

cloudfront copy.png

4. S3 バケットのポリシー設定

OAC を使用して S3 バケットへのアクセスを制限するため、ポリシーを設定します。

  • AWS コンソールで S3 サービスにアクセスします
  • バケット をクリックします
  • 該当のS3 バケットを選択し、アクセス許可 のタブをクリックします
  • バケットポリシー をクリックします
  • 下記のポリシーをコピーして貼り付けます。[YOUR_OAC_ID] は、作成した OAC の識別子に置き換えてください
  • 先ほどのCloudfrontの配信設定を作成した最後に、S3のバケットポリシーをコピーしていた場合は、そのまま貼り付けると[YOUR_OAC_ID] などが入力された状態で貼り付けられます
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowCloudFrontAccess",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::cloudfront:user/CloudFrontOriginAccessIdentity[YOUR_OAC_ID]"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::[YOUR_BUCKET_NAME]/*"
    }
  ]
}
}
  • 保存 をクリックします

5. Route53 で独自ドメインの設定

Route53 を使用して、独自ドメインを CloudFront に設定します

  • AWS コンソールで Route53 サービスにアクセスします
  • ホストゾーン で、ドメインを選択し、「レコードを作成」をクリックします
  • レコード名 には、空白 or サブドメイン を入力し、レコードタイプA を選択します
  • には、入力欄のすぐ上部にある「エイリアス」にチェックを入れて、CloudFrontを選び、先ほど作成した配信設定を選びます
  • TTL はデフォルト値のままにしてください
  • レコードを作成 をクリックします

route53 copy.png

これで、独自ドメインから CloudFront を介して S3 バケットにアクセスできるようになります

まとめ

本記事では、AWS S3 と CloudFront を使用し、独自ドメインで安全にアクセスできるサーバー環境構築方法を解説しました。OAC を活用することで、セキュリティを強化し、ACM を利用することで無料の SSL 証明書を取得することができます。さらに、Route53 を用いて独自ドメインを設定することで、ユーザーに安全なアクセスを提供できます。

4
3
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
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?