はじめに
備忘録的なメモです。大まかな手順のみ記載します。
作成済みのAPI Gatewayに独自ドメインを適応する方法です。
手順
サブドメインの登録
Route53でサブドメインのホストゾーンを追加します。現在所有しているドメインが、example.comであればapi.example.comみたいな。
ホストゾーンを追加するとNSレコードが作成されるのでこれをコピーします。
次に親となるホストゾーンを開きNSレコードを追加し、先ほどコピーしたネームサーバーたちを追加します。
稼働中のサーバーなどがあればAレコードを追加するなどして動作確認。
証明書の取得
Certificate Managerを開き証明書のリクエストを行います。
ドメイン名を入力する欄に先ほど設定したサブドメインを入力します。api.example.comみたいな。
検証保留中の表示とともにRoute53でのレコード作成ボタンが表示されるので押します。まもなくステータスが発行済みに変わります。ホストゾーンの設定がおかしいと検証保留中のまま変わらないので設定を見直します。
カスタムドメイン名設定
API Gatewayを開きカスタムドメイン名の画面を表示します。作成ボタンを押して表示される画面で今回作成したサブドメインを入力します。api.example.comみたいな。エンドポイント設定にはエッジ最適化を選びます。
ACM証明書に上記で取得した証明書を指定します。
作成されたら同画面内のエンドポイント設定でAPIマッピングを選択します。
新しいマッピングを追加し、目的のAPI、ステージを指定します。
API Gateway ドメイン名としてCloudFrontドメイン名が表示されるのでコピーします。xxxxxxxxxx.cloudfront.netみたいな。
Aレコード追加
上記のCloudFrontドメイン名のエイリアスを作成します。Route53でサブドメインのホストゾーンを開き、レコード名は空欄、エイリアスのスイッチをオンにするとエンドポイントが選択できるので、上記のCloudFrontドメイン名を指定。api.example.comのAレコードで値がxxxxxxxxxx.cloudfront.netとなれば良い。
反映されるまで多少時間がかかる模様。しばらくするとapi.example.comにアクセスできるようになる。
注意
カスタムドメイン名作成でCloudFrontドメイン名が表示されるがアクセスするとForbiddenとなる。
参考文献
以下のサイトを参考にさせていただきました。感謝です。
https://dev.classmethod.jp/articles/amazon-api-gateway-integrates-acm/
https://dev.classmethod.jp/articles/api-gateway-custom-domain-ssl/