Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

S3×CloudFront×独自ドメインでHTTPS対応!S3静的サイトホスティングでサイトを公開してみる

Last updated at Posted at 2025-01-24

はじめに

今回は、「S3×CloudFront× 独自ドメインで HTTPS 対応!サブドメインも活かして S3 静的サイトホスティングでサイトを公開してみる」と題してこれを実現する手順を紹介していきます。

「独自ドメインを使って自分のウェブサイトを作りたい」というのは、多くのエンジニアが一度はやってみようと思うことだと思います。しかし、いざやってみると、DNS設定やSSL証明書の取得、セキュリティ対応など、意外と複雑でハードルが高く感じられることもあります。

しかし、AWSのサービスを活用することでかなり簡単に公開できますので、興味のある方やAWSのサービスを触ってみたい方はぜひ試してみてください!

前提

  • AWS のアカウントをもっていること
  • 独自ドメインを持っている、もしくは購入できる状態であること

かかった料金

  • ドメイン代
    無料ドメインを使用したので0円

  • AWSのリソース
    1.2ドル(180円ぐらい)

計180円です!安い!
(継続してサイトを公開したい場合、もちろん料金は増えます)

使う技術

  • AWS サービス
    • S3
      • 静的ウェブサイトホスティングを利用します
    • ACM(AWS Certificate Manager)
      • SSL 証明書を取得します
    • Route53
      • DNSサーバとして利用します
    • CloudFront
      • ドメイン・SSL 証明書・ルーティングをまとめて管理します

  • お名前.com
    • ドメインを取得します

手順

以下の手順で進めていきます。

  1. ドメインを取得する
  2. S3にバケットを作成し、静的WEBサイトをホスティングする
  3. Route53でホストゾーンを作成する
  4. ACMでSSL証明書を取得する
  5. Route53でDNSレコードを作成する
  6. CloudFrontでディストリビューションを作成する
  7. Route53 でエイリアスレコードを作成する
  8. サイトが正常に表示されるか確認する

実践

1. ドメインを取得する

今回は、お名前.comでドメインを取得します。 0円で取得できるドメインもありますので、そちらを利用していきます。

スクリーンショット 2025-01-21 23.28.01.png

スクリーンショット 2025-01-21 23.28.19.png

スクリーンショット 2025-01-21 23.40.01.png

今回は「hikagami-site.jp」というドメインを取得しました。

2. S3にバケットを作成し、静的WEBサイトをホスティングする

S3の静的ウェブサイトホスティング機能を使用して、静的ウェブサイトをホストします。

AWSマネジメントコンソールにログインし、S3 > 汎用バケット > バケットを作成ボタンでバケットを作成します。

image.png

バケットタイプは「汎用」を選択し、バケット名には「hikagami-my-domain」を設定します。

image.png

また、ウェブサイトとして公開するので「パブリックブロックアクセスを全てブロック」をoffにします。

これで作成時の設定は完了なので、「バケットを作成」ボタンを押してバケットを作成します。

image.png

正常にバケットが作成されたら、汎用バケット一覧から先ほど作成したバケットを選択して「プロパティ」タブを選択します。

下部にスクロールすると、「静的ウェブサイトホスティング」と書かれた項目があるので編集ボタンを押してください。

image.png

「静的ウェブサイトホスティング」を有効に、インデックスドキュメントはindex.htmlとしておきましょう。

保存ができたら、次に「アクセス許可」タブに移動して、バケットポリシーに以下を記述します。

image.png

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::{バケット名}/*"
        }
    ]
}

{バケット名}の部分には、S3のバケット名を入れてください。(今回なら"arn:aws:s3:::hikagami-my-domain/*"となります)

正常に更新できたら、「オブジェクト」タブに移動し、index.htmlをバケットに格納します。

アップロードボタンを押下するとファイラーが出てきますので、HTMLファイルを選択しアップロードします。

image.png

index.htmlの中身
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>Hello World!</title>
</head>
<body>
  <h1>hello world !</h1>
</body>
</html>

hello world !と表示するだけのシンプルなものです。

ここまでできたら再度、プロパティタブの静的ウェブサイトホスティングに移動します。
「バケットウェブサイトエンドポイント」という欄があるので、リンクを開いてみます。すると...

3c8xbpXDZYgg3Lm1737561877_1737561891.png

index.htmlで書かれたHTMLが表示されました!
これでS3にバケットを作成し、静的WEBサイトをホスティングするまでが完了です。

3. Route53でホストゾーンを作成する

次に、 Route53でホストゾーンを作成します。
ホストゾーンはDNSドメインのレコードを管理するコンテナです。

AWSマネジメントコンソールでRoute53 > ホストゾーン > ホストゾーンの作成ボタンを押下し、情報を入力します。

スクリーンショット 2025-01-21 23.42.23.png

ドメイン名にはhikagami-site.jpを入力します。
タイプはパブリックホストゾーンのままで作成を行います。

作成できたらホストゾーンの一覧から作成したホストゾーンを選択します。

スクリーンショット 2025-01-23 1.51.18.png

レコードの中に、"値/トラフィックのルーティング先"がns-から始まる4行のレコードがあるので、この値をメモします。

こちらを、お名前.comの管理画面 > ドメイン > ネームサーバー設定のページで設定を行います。

スクリーンショット 2025-01-23 1.57.39.png

ドメイン名にチェックを入れ、ネームサーバーの選択 > その他のサービスで先ほどのns-ではじまる4つの値を入力します。

スクリーンショット 2025-01-21 23.43.55.png

入力できたら確認画面でOKを押下し、設定完了です。

画像に「※インターネットの環境により、反映完了まで24時間から72時間かかる場合があります。」との記載がありますが、私の場合は5分ほどで反映されました。

反映されているかの確認は、nslookupコマンドやPowerShellのResolve-DnsNameを使用して行います。

スクリーンショット 2025-01-22 0.57.04.png

nslookup -type=NS hikagami-site.jpをターミナルで実行すると、しっかり先ほど設定したNSレコードの値が返却されています。

ここまで確認できたら、「3. Route53 でホストゾーンを作成する」は完了です!

4. ACMでSSL証明書を取得する

ACM(AWS Certificate Manager)とは、AWSが提供するSSL/TLS証明書の発行・管理などを行うフルマネージドサービスです。

AWSマネジメントコンソールから、Certificate Manager > 証明書を一覧(誤字?) > リクエストボタンを押下します。
また、この際リージョンは「米国(バージニア北部)」を選択してください。

スクリーンショット 2025-01-22 1.00.55.png

証明書タイプは「パブリック証明書をリクエスト」のまま進み、

スクリーンショット 2025-01-22 1.01.30.png

完全修飾ドメイン名には、「hikagami-site.jp」および「*.hikagami-site.jp」と入力します。(ドメイン名は自身の所持するものに書き換えてください)

ふたつめの*はサブドメイン対応のためのワイルドカードです。

作成できたら、「4. ACMでSSL証明書を取得する」は完了です!

5. Route53でDNSレコードを作成する

AWSマネジメントコンソールで、Certificate Manager > 証明書を一覧 から手順4で作成した証明書を選択します。

IoB81YnBoZEXpPl1737566421_1737566470.png

Route53でレコードを作成ボタンを押下します。

スクリーンショット 2025-01-22 1.02.38.png

対象のドメインにチェックをいれ、レコードを作成ボタンを押下します。

sTaRSDejGxzhyNP1737566707_1737566751.png

しばらく待ち、ステータス発行済みになっていれば完了です!

6. CloudFrontでディストリビューションを作成する

AWSマネジメントコンソールから、CloudFront > ディストリビューション > ディストリビューションを作成ボタンを押下します。

スクリーンショット 2025-01-22 20.57.22.png

オリジン > Origin domainには、S3静的ウェブサイトホスティングの際に公開されたURLを選択します。

スクリーンショット 2025-01-22 21.00.53.png

ビューワー > ビューワープロトコルポリシーでは「redirect HTTP to HTTPS」を、許可されたHTTPメソッドでは「GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE」を選択します。

スクリーンショット 2025-01-22 21.00.46.png

設定 > 代替ドメイン名には「hikagami-site.jp」とサブドメインも対応したいので「www.hikagami-site.jp」を入力し、Custom SSL certificateには先ほどACMで作成した証明書を選択します。

スクリーンショット 2025-01-22 21.00.29.png

ウェブアプリケーションファイアウォール(WAF)は「セキュリティを有効にする」を選択しておきましょう。

スクリーンショット 2025-01-23 18.36.48.png

全て入力できたらディストリビューションを作成ボタンを押下します。

7. Route53 でエイリアスレコードを作成する

最後に、Route53でAレコードを作成します。

AWSマネジメントコンソールでRoute53 > ホストゾーンで先ほど作成したホストゾーンを選択し、レコードを作成ボタンを押下します。

レコード名には何も入力せず、レコードタイプを「A」にします。
トラフィックのルーティング先には、先ほど作成したCloudFrontディストリビューションを選択します。

スクリーンショット 2025-01-22 21.05.23.png

入力できたらレコードを作成し、正常に作成されるのを確認します。
作成されたら、次はサブドメインからルートドメインにルーティングさせるレコードを作成します。

レコードを作成ボタンを押下し、レコード名には「www」を、レコードタイプは「CNAME」を選択し、値にはルートドメインである「hikagami-site.jp」を入力します。

スクリーンショット 2025-01-22 23.11.28.png

入力できたらレコードを作成し、正常に作成されるのを確認します。

ここまでできたら完了です!
これで、ルートドメイン(hikagami-site.jp)およびサブドメイン(www.hikagami-site.jp)にアクセスした際、CloudFrontで配信されているコンテンツにルーティングさせることができました。

8. サイトが正常に表示されるか確認する

最後のステップです。

実際にブラウザで「hikagami-site.jp」に訪れると...

スクリーンショット 2025-01-23 18.45.14.png

ちゃんと表示されています!

サブドメインである「www.hikagami-site.jp」を入力しても同じ画面が表示されます。(ルートドメインにルーティングするようにしているため)

これで全工程が完了となります!

おわりに

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

全工程通しで順調にいけば1時間もかからず試すことができますのでAWSのサービスを実際に触ってみたい方や独自ドメインのサイトを公開してみたいと思っている方はぜひ試してみてください!

参考

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?