概要
API Gatewayで作ったAPIのエンドポイントはデフォルトの状態だと次のような感じになっている。
https://xxxxxxxx.execute-api.ap-northeast-1.amazonaws.com
このままだと視覚的にわかりづらいため、任意のドメインに変更したい。
前提
Route53に変更希望の独自ドメインがすでに登録済みである事。
参照: AWSだけで独自ドメインを取得して自分のWebページを公開するまで
Lambda関数を作成
まず、適当な値を返すためのLambda関数を作成する。
require 'json'
def lambda_handler(event:, context:)
# TODO implement
{ statusCode: 200, body: JSON.generate('Hello from Lambda!') }
end
コードの中身はデフォルトのままでOK。
API Gatewayを作成
先ほど作成したLambda関数と紐づけるためのAPIを作成。
「アクション」→「リソースのアクション」→「メソッドの作成」→「GET」
- 統合タイプ
- Lambda関数
- Lambdaプロキシ統合の使用
- チェック
- Lambdaリージョン
- ap-northeast1
- Lambda関数
- customer-domain-api
- デフォルトタイムアウトの使用
- チェック
この辺の設定は各自お好みで。
- デプロイされるステージ
- 新しいステージ
- ステージ
- v1
- ステージの説明
- 適宜
- デプロイメントの説明
- 適宜
この辺もお好みで。
デプロイに成功するとエンドポイントが表示されるのでクリック。
正常にレスポンスが返ってくれば成功。
SSL証明書を発行
「Certificate Manager」から「証明書のプロビジョニング」をクリック。
「パブリック証明書のリクエスト」
希望のドメインを入力。
「DNSの検証」
問題無ければ「確認とリクエスト」をクリック。(タグは無しでもOK)
「Route53でのレコードの作成」をクリック。
ある程度時間が経つと検証に成功するはず。
カスタムドメインを作成
「API Gateway」→「カスタムドメイン」からカスタムドメインを作成。
- ドメイン名
- 任意(今回は「api.」というサブドメインで運用する事を想定。)
- ACM証明書
- 先ほど発行した証明書
「APIマッピングを設定」
- API
- 先ほど作成したAPI
- ステージ
- 任意
- パス
- 任意
Route53でレコード作成
「Route53」→「ホストゾーン」→「レコード作成」
- ルーティングポリシー
- シンプルルーティング
- レコード名
- 任意(今回は「api.」というサブドメインでの運用を想定)
- エイリアス
- チェック
- レコードタイプ
- IPv4
- トラフィックのルーティング先
- API gateway APIへのエイリアス
- アジアパシフィック(東京)
- 該当のエンドポイント
- ターゲットへのヘルスを評価
- チェック
https://api.ドメイン名
レコード作成後、↑にアクセスして正常にレスポンスが返ってくればカスタムドメイン化に成功。(状況によっては反映までに時間がかかる事も有り。)
あとがき
お疲れ様でした。もし記事通りに進めて上手く動作しない箇所があったらコメント蘭などで指摘していただけると幸いです。