こんにちは。アプリケーションサービス部の柳田です。
概要
本記事では、既存ドメインが Amazon Route 53 以外で管理されている前提でカスタムドメインを使って API Gateway にアクセスするための手順を記載しています。
最終的に以下結果になることを目指します。
$ curl https://test.custom-domain.com "Hello from Lambda!"
設定手順
前提
- 既存ドメインを Amazon Route 53 以外で管理
- 本記事内では
お名前.com
を利用
- 本記事内では
- API Gateway で API をデプロイ済
- 本記事内では
Hello from Lambda!
を返す
- 本記事内では
- 後述の API Gateway で作成するカスタムドメイン名はリージョン別のカスタムドメイン名を設定
ACM でカスタムドメインの証明書を発行 ~ 検証
ACM で証明書発行
前提の通り、リージョン別のカスタムドメイン名を設定する想定のため、API をデプロイしたリージョンと同一リージョンで証明書を作成します。
API Gateway でのリージョン別カスタムドメイン名の設定 - Amazon API Gateway
API Gateway リージョン別カスタムドメイン名については、API と同じリージョンで証明書をリクエストまたはインポートする必要があります。
パブリック証明書をリクエストする - AWS Certificate Manager の手順でパブリック証明書を作成します。
- ドメイン名
- API Gateway で利用したいカスタムドメイン名を設定します。
- 今回の場合、ドメイン名は
test.custom-domain
を設定しました。
- 検証方法
- DNS 検証を選択します。
- 検証方法の違いは以下に分かりやすく記載されていました。
DNS サーバーにドメイン検証用の CNAME レコードを設定
ACM で証明書を発行すると以下のように CNAME レコードが表示されます。未検証のため、ステータスが 保留中の検証
となっています。
DNS サーバーに上記の検証用の CNAME レコードを以下のように登録します。
ホスト名 | TYPE | TTL | VALUE |
---|---|---|---|
{ACM上のCNAME名(※)} | CNAME | {任意の値} | {ACM上のCNAME値(※)} |
※ お名前.com への登録時は各値をそのままではなく、末尾のドットを削除する等して適切な形に修正して登録しました。DNS サーバーによって変わると思われます。
検証結果の確認
DNS サーバーにドメイン検証用の CNAME レコードを設定後、少し待つとステータスが 発行済み
となります。(今回の検証時は数分で反映されていました)
API Gateway のカスタムドメイン名を設定
API Gateway でのリージョン別カスタムドメイン名の設定 - Amazon API Gateway の手順でカスタムドメイン名の設定をします。
- ドメイン名
- API Gateway で利用したいカスタムドメイン名を設定します。
- 今回の場合、ドメイン名は
test.custom-domain
を設定します。
- ACM 証明書
- 前述の手順で発行した証明書を選択します。
カスタムドメイン名の設定ができたら、追加でAPI マッピングを設定します。
REST API の API マッピングの使用 - Amazon API Gateway
今回は事前に作成しておいた Hello from Lambda!
を返す API とステージを選択しました。
DNS サーバーに CNAME レコードを設定
カスタムドメインを作成した後に表示される API Gateway ドメイン名
を DNS サーバーの CNAME レコードとして登録します。
DNS サーバーには CNAME レコードを以下のように登録します。
ホスト名 | TYPE | TTL | VALUE |
---|---|---|---|
{API Gateway で利用したいカスタムドメイン名(ここでは test.custom-domain )} |
CNAME | {任意の値} | {API Gateway ドメイン名} |
動作確認
CNAME レコードを登録後、少し待つとカスタムドメインを使って期待する結果が得られることが確認できます。
$ curl https://test.custom-domain.com "Hello from Lambda!"