カスタムドメインで API Gateway を利用する

記事タイトルとURLをコピーする

こんにちは。アプリケーションサービス部の柳田です。

概要

本記事では、既存ドメインが 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 の手順でパブリック証明書を作成します。

DNS サーバーにドメイン検証用の CNAME レコードを設定

ACM で証明書を発行すると以下のように CNAME レコードが表示されます。未検証のため、ステータスが 保留中の検証 となっています。

ドメイン検証用の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!"

参考

docs.aws.amazon.com