SpringBootで開発したREST APIをLambda×API Gatewayの環境にデプロイし、Route53でカスタムドメイン化する②

※前回記事の続きでございます。

# やりたいこと
SpringBootで開発したREST APIアプリケーションをLambdaにデプロイし、API Gatewayで公開したい。
API GatewayのエンドポイントのURLをRoute53を使ってカスタムドメイン化したい。
![RestAPI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3937984/6097f90f-34a5-581b-0ec8-a5aa198917b7.jpeg)

# ②でやること
前回は、Lambda環境で動作するSpringBootアプリケーションの開発、Lambdaへのデプロイ、API Gatewayとの連携まで行いました。
今回は、API GatewayとRoute53を使った、APIのエンドポイントのカスタムドメイン化を行います。
（独自ドメインを保有していることを前提に進めさていただきます。）
前回記事はこちら↓↓↓

https://qiita.com/hiroto_mis/items/fd54991bb9a5585e7627

# Route53の設定
AWSマネジメントコンソールでRoute53開き、ホストゾーンの作成をクリックします。
![Route53ホーム画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3937984/94127b8e-5362-60fd-e7a6-011715cb7245.png)

ドメイン名に自身のドメインを入力し、それ以外はデフォルトで作成しました。
![ホストゾーン作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3937984/a1f2805b-2951-d1f8-3c90-a7c9370c09a6.png)

次に、作成したドメインのNSレコードの値/トラフィックのルーティング先の情報を、ドメインを購入したネームサーバーに紐づけます。
![スクリーンショット 2024-11-24 122441.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3937984/ffc6815b-d925-0be4-7e3c-21286cda4f8c.png)

# ACMで証明書取得
API Gatewayで独自ドメインを使用する場合、証明書を使ってACMに証明書を登録する必要があるみたいなので、ACMで証明書の取得を行いたいと思います。
AWS Certificate Manager→証明書→証明書をリクエスト→パブリック証明書をリクエストを開きます。
完全修飾ドメイン名にご自身のドメインを入力し、それ以外はデフォルトでリクエストします。
![証明書取得画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3937984/cc4be10d-b46d-3bc1-db35-c4b32acd579f.png)

リクエストが完了すると、ステータスが保留中の検証になります。
このままだと検証が終わらずタイムアウトになってしまうため、Route53でレコードを作成をクリックして、Route53のCNAMEレコードを作成します。
![スクリーンショット 2024-11-24 123643.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3937984/2f6c677e-fdd7-9dc7-8370-123fdced75af.png)

作成されると、Route53のホストゾーンにCNAMEレコードが追加されます。
![スクリーンショット 2024-11-24 124114.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3937984/81a256c0-a7b2-f2f2-dc81-edfff3092e0f.png)

# API GatewayとRoute53の連携
次にAPI GatewayとRoute53を連携してAPIエンドポイントの独自ドメイン化を実現したいと思います。
API Gatewayからカスタムドメイン名を開きます。
![APIgatewayカスタムドメイン.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3937984/fa0c7982-0218-ddc4-c277-4757dfb8d374.png)
ドメイン名には自身のドメインを入力します。
![APIGatewayドメイン名の追加①.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3937984/2d3b57e3-82eb-d51b-e833-552f4c94ed9c.png)
ACM証明書には先ほど作成した証明書を選択し、ドメイン名を追加をクリックします。
![スクリーンショット 2024-11-24 224920.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3937984/457658c2-7607-d0f4-8405-5e55ab177fb8.png)

次にAPIマッピングを設定します。
![forAPIマッピング.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3937984/f9566e8e-5b92-0a39-df61-ff4471ea5ff0.png)
API、ステージ共に対象のAPIを設定し、APIとドメインのマッピングを設定します。
![APIマッピング.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3937984/a7c18c8e-9c12-309d-50cc-c55d580718cb.png)
次にAPI GatewayへトラフィックするためのレコードをRoute53に作成します。
Route53から対象のホストゾーンを選択、レコードの作成をクリックします。
![スクリーンショット 2024-11-24 225123.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3937984/f727bb41-a0ac-cd3a-f202-395f26a83c4d.png)
トラフィックのルーティング先にAPI Gatewayへのエイリアス、そして対象のAPIを選択します。
![レコード作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3937984/423509f8-fcd1-346e-51c1-9638d480b320.png)
最後に、デフォルトのAPI Gatewayエンドポイントを非アクティブ化します。
（これをしないと、設定した独自ドメインをエンドポイントとして使うことができません。）
API Gateway→API→対象のAPIを選択→APIの設定→APIの設定を編集からデフォルトのエンドポイントを非アクティブにし、変更を保存します。
![デフォルトのエンドポイント非アクティブ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3937984/5c1203b4-2e4d-8403-2e33-c81d33666af5.png)
以上の設定ののち、独自ドメインからAPIをコールし、問題なく動作すれば全量完了です。
お疲れさまでした！！

# 参考にさせていただいた記事

https://qiita.com/Kento210/items/ab5d0cd54962fde6cd4b

https://qiita.com/yyqqzz/items/d0245a81824b11a2d2e5