Serverless Frameworkを使ってAPI Gatewayにカスタムドメインを設定する方法を解説します。
- Serverless FrameworkでAPI Gatewayにカスタムドメインを設定できる
- serverless 3.27.0
環境を作る方法についてはこちらで解説していますのでよかったらみて見てください!
【Go】Serverless FrameworkでAPI Gateway・Lambdaを作成しAPIを構築する方法を解説
serverless
というコマンドは、sls
というエイリアスを使って置き換えることもできるので、皆さんのお好きな方を使ってください。
本記事内では、serverless
の方に統一しています。
カスタムドメインの設定
それではカスタムドメインを設定していきましょう。
パッケージの追加
serverless-domain-managerを使うと楽に設定できるので使っていきます。
モグモグさん
公式ドキュメントでも紹介されています。
$ npm install serverless-domain-manager --save-dev
// yarn
$ yarn add -D serverless-domain-manager
プラグインの設定
serverless.yml
に追加したパッケージを設定します。
plugins:
- serverless-domain-manager
そしてドメインの設定を追加します。
custom:
customDomain:
domainName: xxx.com # 取得したドメイン名
basePath: api
certificateName: '*.xxx.com' # ACMで設定した証明書
createRoute53Record: true
endpointType: 'regional'
securityPolicy: tls_1_2
この辺りの設定は皆さんの環境によって異なると思いますので、ドキュメントを確認してみてください!
紐付けの実施
設定したドメインを紐付けるコマンドを実行します!
モグモグさん
必要であれば、--aws-profile
オプションを付与して実行してください。
$ serverless create_domain
モグモグさん
これで対象のドメインにA レコードと AAAA レコードの 2 つのレコードが作成されます。
デプロイ
設定が完了したのでデプロイをしましょう!
$ serverless deploy
モグモグさん
設定したカスタムドメインにアクセスして、正常に動作をするかを確認しましょう。
紐付けの解除
紐付けを解除するには、下記のコマンドで解除できます。
$ serverless delete_domain
ステージングや本番ごとにドメインを紐づける
よくあるケースとして、環境ごとにドメイン名を設定するケースがあると思いますのでその方法を解説します。
Stage(環境)とhostを設定してそれを呼び出すようにしています。(命名は任意です。)
custom:
stage: ${opt:stage, self:provider.stage}
host:
dev: "dev.xxx.com"
production: "xxx.com"
customDomain:
domainName: ${self:custom.host.${self:custom.stage}}
stage: ${self:custom.stage}
basePath: api
certificateName: '*.xxx.com'
createRoute53Record: true
endpointType: 'regional'
securityPolicy: tls_1_2
設定後は、コマンドに--stage
オプションを指定します。
$ serverless create_domain --stage production
$ serverless deploy --stage production
デフォルトのStageはdevです。
まとめ
Serverless Frameworkを使ってAPI Gatewayにカスタムドメインを設定する方法を解説しました。
各種設定は皆さんの環境によって異なると思いますので、ドキュメントを確認しつつ進めてみてください!