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

2018.05.02

こんにちは、中村です。
GW前半は、みっちり運動しました。後半もその予定です。(笑)
皆さんは、GWいかがお過ごしでしょうか。

さて今回は、API Gatewayの話です。

2018/05/02訂正: 使用できるACM証明書について誤りがあったため訂正しました。

はじめに

API GatewayにてAPIをデプロイするとデフォルトはこのような形になります。

https://*******.execute-api.ap-northeast-1.amazonaws.com/***/

これをカスタムドメイン・HTTPSにする場合は、API Gateway・Route53・Certificate Managerでの設定が必要になります。

API Gatewayの作成とLambdaについては触れません。
あくまで、カスタムドメインとHTTPS化のみになります。

Certficate ManagerでSSLを取得する

ドメインはRoute53に設定してある状態としてください

Certificate Managerを開き、"証明書のリクエスト"をクリックします。
証明書のタイプを選択します。今回は、"パブリック証明書のリクエスト"を選択します。

次に今回使用するドメインを追加します。
ドメイン名を入力後、"次へ"をクリックします。

最後に検証方法を指定します。今回はDNS検証を試します。

確認が表示され、問題なければ"確定とリクエスト"をクリックします。

検証について表示されます。Route53に移動してDNSを設定するか、"Route53でのレコードの作成"をクリックします。

"Route53でのレコードの作成"をクリックした場合、作成されるレコードが表示され"作成"をクリックするとDNSが作成されます。

更新した後、検証が完了になれば証明書が発行されます。
今回は、数分で発行されました。

訂正:エンドポイントタイプが、Edge Optimizedの時に限りバージニア北部の証明書のみ対応しており、Regionalの場合は各リージョンの証明書が使用できます。

API Gatewayでカスタムドメインを設定する

API Gatewayを開き、サイドメニューから"カスタムドメイン名"をクリックします。
"カスタムドメイン名の作成"をクリックし、取得した証明書のドメイン名の入力・証明書の選択・ベースパスマッピングの選択をします。

ベースパスマッピングでは、アクセスするためのパス・送信先API・ステージの選択を行います。
例えば、www.example.com/devでAPIにアクセスさせたい場合、パスを/devに設定します。

入力が完了し保存すると、ACM証明書の初期化が始まります。
初期化には最大40分かかるとされています。

Route53でDNSの設定

最後に、Route53にてDNSの設定をします。
ターゲットドメイン名をALIASレコードで登録します。

API Gatewayで設定した方法でドメインにアクセスしてみると、確認できると思います。

まとめ

いかがでしたでしょう。
わかってしまえば簡単なのですが、はじめてでしたのでまとめてみました。