API GatewayをRoute53の独自ドメインでデプロイした話

# API Gatewayを独自ドメインでデプロイした話

作成日時: August 18, 2023 3:41 PM

# はじめに

こんにちは、エンジニアリング半年のKentoです。

AWS超ド級初心者の備忘録だと思って参考程度にしてください

# やりたかったこと

API Gatewayで作ったHTTP APIを独自のドメインで公開したい。

→以前友達がAPIのURLを独自のドメインで共有してくれたことがあり、それが使いやすかったため。

Google domainで取得したドメインをAWSで使いたい。

# 事前にやっておいたこと

Google domainでのドメイン取得

API GatewayでのHTTP APIの準備

# 全体像

![api_全体像.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3504047/a3948077-bedf-81da-9f2e-2d1171ad492b.jpeg)

# 手法

**1. Route 53 ダッシュボードでホストゾーンを作成**

![スクリーンショット 2023-08-20 20.26.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3504047/460f344c-06a1-3620-8dd4-a1ac54c881bb.png)
![スクリーンショット 2023-08-20 20.26.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3504047/b3772a5a-22d4-ce2c-35ee-3da213afeceb.png)

**2. ホストゾーンの設定**

ドメインを設定（サブドメインを入れたほうが使いやすい）

例：sub.sample.com

![スクリーンショット 2023-08-20 20.26.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3504047/3245be2b-5e35-d5c6-167a-9decf1b06e98.png)

**3. Google domainの設定**

詳細より、タイプ→NSのところ（値、トラフィックのルーティング先）

の四つ書いてあるルーティング先をコピー

![スクリーンショット 2023-08-20 20.27.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3504047/d92b92c4-cb2e-61f6-9742-2734a153b0af.png)

Google domainの設定→DNS

![スクリーンショット 2023-08-20 20.27.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3504047/4aa49a5f-7e23-247e-5bf7-35570cec264b.png)

カスタムネームサーバーを設定、ネームサーバーの管理からさっきコピーした四つのリンクをコピペ

![スクリーンショット 2023-08-20 20.27.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3504047/3a15aa76-9628-cbcc-0512-1f59818ff4ad.png)

**4. ACM(AWS Cretificate Manager)証明書の作成**

Cretificate Managerを起動してリクエストをクリック

![スクリーンショット 2023-08-20 20.58.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3504047/117f7ab2-e449-5310-543d-380d466a546e.png)![スクリーンショット 2023-08-20 20.58.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3504047/d5a0b840-15b8-93ad-20f4-9636b696ff2b.png)

完全修飾ドメイン名に使用したいドメインを入れる

例：*.sub.sample.com（全て使用できるようにする）

DNS検証にチェックを入れておくとAWSが自動的に検証してくれる

少し時間かかる可能性あり、5~30分程度

![スクリーンショット 2023-08-20 20.58.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3504047/85317abc-b864-b0d4-2ce0-521377a37903.png)

図は検証済みの状態

![スクリーンショット 2023-08-20 21.08.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3504047/89d14b49-13c5-dc94-8eba-99195cfca837.png)

**5. API gatewayで証明書の設定、マッピング**

API gatewayを開いてカスタムドメイン名を選択、作成をクリック

![スクリーンショット 2023-08-20 21.11.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3504047/f7539b2b-fb5d-1687-6169-09827f88a37a.png)

ドメイン名はご自由に

例：api.sub.sample.com（先ほど証明書で許可したものを入力）

HTTP APIならリージョンを選択してACM証明書で先ほど作成したものを選択

![スクリーンショット 2023-08-20 21.12.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3504047/db7dbe85-0c29-fbd6-4915-a91f54fb671d.png)

続いてAPIマッピングを設定

![スクリーンショット 2023-08-20 21.12.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3504047/6cbe1d82-9c52-953f-53bb-69de4e64944a.png)

作ったAPIを指定してステージとパスをお好みで設定

![スクリーンショット 2023-08-20 21.13.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3504047/3e2be5a8-9867-7e7e-ce9a-a25ca9a6ac2d.png)

**6. 最後にRoute 53でAレコードを作成**

作成したホストゾーンの詳細ページからレコードを作成をクリック

![スクリーンショット 2023-08-20 21.30.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3504047/03759e7c-c4e0-5cc0-5cf4-4fb03cde348a.png)

レコード名はAPI Gatewayで設定したものを設定

レコードタイプはA

値にはAPI Gatewayのカスタムドメイン名の設定ページからAPI Gateway ドメイン名をコピペ

![スクリーンショット 2023-08-20 21.32.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3504047/9445654b-a375-6225-d796-4c71aefbd5e8.png)

先ほどのホストゾーンの設定の詳細にAタイプのレコードが表示されていれば設定完了となります！

お疲れ様でした。

Postmanなどでテストしてみてしっかりレスポンスが帰ってくるか確認してみましょう

![スクリーンショット 2023-08-20 21.43.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3504047/16a66dc4-5a5e-b9ca-9796-4ed90b394f35.png)

# 参考にしたサイト
[https://dev.classmethod.jp/articles/tsnote-api-gateway-http-api-custom-domain/](https://dev.classmethod.jp/articles/tsnote-api-gateway-http-api-custom-domain/)!