サイト名変更・お引越しのお知らせ

Serverless Frameworkでカスタムドメインを設定する方法を解説

Serverless Frameworkを使ってAPI Gatewayにカスタムドメインを設定する方法を解説します。

モグモグさん

本記事では、Route53でドメインを取得して、ACMで証明書を作成していることを前提に進めます。

この記事でわかること
  • 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にカスタムドメインを設定する方法を解説しました。

各種設定は皆さんの環境によって異なると思いますので、ドキュメントを確認しつつ進めてみてください!