AWS API Gatewayのカスタムドメインを実装する方法

AWS API Gatewayのカスタムドメインを実装する方法

API Gatewayのカスタムドメインを実装できるか実験しました。

API Gateway でリージョン別の REST API または WebSocket API 用カスタムドメイン名を設定する」が凄いわかりにくいです。

まず以下を前提条件として以下とします。

  • Route53でドメイン取得済みであること
  • 証明書はバージニア北部で発行済であること

API Gateway → Lambdaといきたいところですが、今回はMockでの検証です。(Lambdaでも可能です)

API Gatewayの設定が済んだらデプロイ

エンドポイントタイプは「リージョン」にします。デプロイ忘れないようにしましょう。設定変更したら反映するのにデプロイ必要です。

以下の形式でデプロイされます。

AWS API Gatewayのカスタムドメインを実装する方法

今回はステージをdev、リソースを上記のようにtestとしてます。GETメソッドに対してLambdaが実行されるようなイメージです。

カスタムドメインのパスマッピングを以下のようにするとhttps://ドメイン/testでアクセスが可能になります。スラッシュに対してステージをマッピングしています。

AWS API Gatewayのカスタムドメインを実装する方法

sampleがAPI Gateway名で、devがステージ名です。

でアクセスしてたところがカスタムドメインを使用すると

でアクセスすることができるようになります。もちろんベースパスマッピングの設定によります。

カスタムドメイン名を指定する

AWS API Gatewayの設定が済んだら実際にカスタムドメイン名を設定します。

一番下に記載している参考サイトが非常にわかりやすく書いています。

ACM証明書が「*.test.com」の場合、ドメイン名は「abc.test.com」のように*の部分を明記するだけです。

AWS API Gatewayのカスタムドメインを実装する方法

testapi.yahoo.co.jpみたいな部分がドメイン名、バージニア北部でACM証明書を発行している為、エッジ最適化を選択、ACM証明書はバージニア北部を選択することができます。(反映までに30~60分くらいかかります)

Route53にAレコード

次にRoute53のAレコードを設定します。この辺くわしく調べてませんが、カスタムドメイン名(testapi.yahoo.co.jpみたいな)と同じエイリアス名にした方がよさそうです。

エイリアス先は「d12xx34308jds.cloudfront.net.」みたいなcloudfront.netのURLになります。これは、カスタムドメイン名設定時にエッジ最適化を選択している為です。

リージョナルの場合は、カスタムドメインのターゲットドメイン名をAレコードのエイリアス先に指定します。(プルダウンで出てきます)

API Gatewayのエンドポイント

ACM証明書をどこで取得したかとAPI Gatewayのエンドポイントが実は重要になります。

ACM証明書 API Gatewayのエンドポイント
バージニア北部 エッジ
バージニア北部以外 リージョン

ACM証明書とAPI Gatewayのエンドポイントをきちんと設定すればマッピングが可能です。

カスタムドメインでエッジ最適化してAPI Gatewayのエンドポイントタイプがエッジだとエラーになりますのでご注意ください。

カスタムドメインのエンドポイント カスタムドメイン作成 ACM証明書
エッジ最適化 独自ドメインでカスタムドメイン作成が可能 バージニア北部
リージョン API Gatewayのエンドポイントでカスタムドメイン作成が可能 該当リージョン

ベースパスマッピング

ベースパスマッピングで、パスと送信先だけ設定し、ステージを未入力にすることによって以下のようなURLにすることができます。

https://example.com/base/v1/api
https://example.com/base/v2/api

view raw
gistfile1.txt
hosted with ❤ by GitHub

プライベートAPIではカスタムドメインサポートされていませんので、ベースパスマッピングなどもできません。

Amazon API Gateway でプライベート API を作成する 

API GatewayをカスタムドメインでHTTPS化する

スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA