はじめに
ECS
を使ったブルーグリーンデプロイメントを行うため、前回はブルーグリーンデプロイメント自体の説明とネットワークの設定を行いました。
今回は、ブルーグリーンデプロイメントの設定とは少し離れますが、付随するドメインや証明書の設定を行っていきます。
ドメインの登録
AWS
で外部に公開するELB
のようなサービスの場合、特に独自ドメインを取得しなくても、リソース作成時にAWS
側で自動でDNS名が付与されますが、通常そのまま使用することはせず、独自ドメイン名でアクセスできるようにするのが一般的です。
AWS
から直接ドメイン名を購入して設定することもできますが、私は「お名前.com」で購入したドメインを持っているため、サブドメインをAWS
のRoute53
で管理できるようにお名前.comから委任して使用できるようにしたいと思います。
以下参考例。
ホストゾーンの作成
取得済みドメインを使用するため、Route53
でパブリックホストゾーンを作成します。
「Route 53」のダッシュボードから「ホストゾーン」→「ホストゾーンの作成」で新たにホストゾーンを作成します。
今回は、委任されたサブドメインを管理するため、以下表のように設定しました。
項目 | 設定 | 備考 |
---|---|---|
ドメイン名 | aws.example.com | 今回は「aws」というサブドメインとした。 example.comの部分は自環境に合わせて設定。 |
説明 | 空欄 | 今回は未設定 |
タイプ | パブリックホストゾーン | |
タグ | 空欄 | 今回は未設定 |
ホストゾーン作成後、自動で登録されているNSレコードの値を控えておきます。
お名前.com側DNSサーバへのレコード登録
委任元となるお名前.comのDNSサーバに、委任先となるAWS
の情報を登録するため、お名前.comの管理画面となる、「お名前.com Navi」にログインし、「ネームサーバーの設定」→「ドメインのDNS設定」を選択します。
下画像はマスクしているため、何も書かれていないように見えますが、登録されているドメイン名が表示されるため、レコード登録を行うドメイン名を選択し、「次へ」進みます。
「DNSレコード設定を利用する」の「設定する」を選択します。
以下もドメイン部分をマスクしているため見にくいですが、マスクしている箇所にexample.com
のようにドメイン名が記載されているため、先程控えたAWS
側のNSレコードを1行ずつ赤枠部分に入力して「追加」ボタンで追加します。
また、TTL
については以下AWS
のドキュメントに従い、900に指定しています。
なお、Route53
のNSレコードは、レコードの最後に「.(ドット)」が含まれていますが、ドットを指定するとエラーとなるため、最後のドットのみ削除して登録してください。
指定するホスト名についてはサブドメイン部分のみ記載すれば良いので、今回の場合、aws
と指定します。
AWS
側NSレコードは4つありますが、4レコードともに同じホスト名指定でOKです。
しばらく経った後、dig
やnslookup
等でサブドメインを確認すると以下のようにAWS
側のDNSの値が返されることが確認できるかと思います。
dig NS aws.example.com
; <<>> DiG 9.10.6 <<>> NS aws.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57775
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 9
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;aws.aws.example.com. IN NS
;; ANSWER SECTION:
aws.example.com. 900 IN NS ns-1959.awsdns-52.co.uk.
aws.example.com. 900 IN NS ns-581.awsdns-08.net.
aws.example.com. 900 IN NS ns-504.awsdns-63.com.
aws.example.com. 900 IN NS ns-1427.awsdns-50.org.
;; ADDITIONAL SECTION:
ns-504.awsdns-63.com. 78005 IN A 205.251.193.248
ns-581.awsdns-08.net. 85911 IN A 205.251.194.69
ns-1427.awsdns-50.org. 853 IN A 205.251.197.147
ns-1959.awsdns-52.co.uk. 67702 IN A 205.251.199.167
ns-504.awsdns-63.com. 84620 IN AAAA 2600:9000:5301:f800::1
ns-581.awsdns-08.net. 85984 IN AAAA 2600:9000:5302:4500::1
ns-1427.awsdns-50.org. 86224 IN AAAA 2600:9000:5305:9300::1
ns-1959.awsdns-52.co.uk. 67702 IN AAAA 2600:9000:5307:a700::1
;; Query time: 54 msec
;; SERVER: 192.168.151.1#53(192.168.151.1)
;; WHEN: Fri Nov 03 18:56:14 JST 2023
;; MSG SIZE rcvd: 356
ACM証明書の発行
ドメインの登録ができたので、次はHTTPS通信用のSSL証明書を発行しておきます。
「AWS Certificate Manager (ACM)」の「証明書をリクエスト」より「パブリック証明書をリクエスト」を選択し、「次へ」進みます。
以下よりリクエストするパブリック証明書の情報を記入していきますが、今回は委任されたサブドメイン全体を保護するワイルドカード証明書で登録を行います。
ワイルドカード証明書で発行することで、www.aws.example.com
やapi.aws.example.com
のようなaws.example.com
配下のドメイン全体を1つの証明書でカバーできます。
但し、ワイルドカード証明書で発行した場合、以下AWS
のドキュメントより、aws.example.com
自体は保護されないそうで、aws.example.com
自体も保護したい場合は追加でaws.example.com
も登録する必要があります。
画面上では以下のように設定することで*.aws.example.com
とaws.example.com
を登録することができます。
上記ドメイン名の設定含め、今回は以下表のように設定を行いリクエストを行いました。
項目 | 設定 | 備考 |
---|---|---|
完全修飾ドメイン名1 | *.aws.example.com | 自分のドメイン名に合わせて設定 |
完全修飾ドメイン名2 | aws.example.com | 自分のドメイン名に合わせて設定 |
検証方法 | DNS検証 | 環境に合わせて任意に設定 |
キーアルゴリズム | RSA 2048 | 今回はテストなのでデフォルトのまま指定 |
タグ | 空欄 | 今回は未設定 |
CNAMEの登録
ACM証明書作成後、ステータスを見ると以下のように「保留中の検証」と表示されているかと思いますので、「証明書ID」を選択して詳細画面に移ります。
詳細画面の「ドメイン」→「Route 53でレコードを作成」で、先程登録したドメインのCNAME
を登録します。
少し待つとステータスが変わるので、「発行済み」になれば完了です。
おわりに
今回はブルーグリーンデプロイメントとは少し外れましたが、外部からアクセスするためのドメイン、証明書の準備を行いました。
次回もブルーグリーンデプロイメントの設定を行う前に設定しておく必要があるリソースの作成や、Fargate
で使用するコンテナイメージを作成していきたいと思います。