こんにちは!株式会社フォトラクションでWEB開発をしている下川原です。
Photoruction Advent Calendar 2022の7日目の記事になります。
はじめに
どんな人がこの記事を読むと幸せになるか。
- AWS Lambda + API Gatewayで開発を進めてる人(言語問わず)
- AWS APIGatewayのswaggerをコピーして検証環境・本番環境を作っちゃってる人
- 前回記事 AWS Lambdaで効率よく本番・検証環境をわける! をマスターした人
AWS APIgateway + Lambdaを環境ごとに分ける!
1. 下準備
API Gatewayを既に作成済みで、1つ以上のメソッドがあることが重要!
検証用、本番用のLambda関数ができていることが重要!
AWSLambdaを環境ごとにわける方法は、前回の記事を参考に
2. AWSLambdaをエイリアスで呼び出す
Lastateを使用する arn:aws:lambda:ap-northeast-1:000000000:function:myTestsFunctions エイリアスstagingを使用する arn:aws:lambda:ap-northeast-1:000000000:function:myTestsFunctions:staging
Lambdaを呼び出す際に末尾に:{alias}をつけることで、エイリアスを呼び出すことが可能である
そのため、APIGatewayに設定Lambda名を工夫する必要がある
統合リクエストから、Lambda関数末尾に以下のように追加する
関数名:${stageVariables.alias}
追加を行うと、エイリアス関数に権限を追加するコマンドが表示されるので、AWS CLIでコピーして実行する
コピーしてそのまま実行はできないので注意
${stageVariables.alias}
かならずエイリアス関数名に置換してから実行すること ※すでに存在するエイリアス関数すべて実行しておくと良い
3. ステージを作成する
リソースのアクションからAPIのデプロイを選択すると、新しいステージを作ることができる
- デプロイされるステージ
- [新しいステージ]を選択
- ステージ名
- 検証用や本番用のものとわかりやすいのが望ましい
- ステージの説明
- 用途を記載
デプロイメントの説明
- デプロイ時の更新内容などあるとわかりやすい
ステージ変数を設定する
ステージ変数を設定することで、Lambda関数を呼び出す際にエイリアスで実行することができる。
- 名前
- 今回は、手順.2で${stageVariables.alias}を設定しているので、alias を入力
値
- 呼び出すエイリアス関数名
APIを更新するとき
APIを更新したいときは、手順3のようにアクションからAPIのデプロイを行うことで
作成したステージにAPI更新を反映することができる
6.APIGatewayステージを利用した運用方法
上記までの手順で、APIGatewayをステージごとにわけることができた。
実際に運用する際は、カスタムドメインから開発用、検証用、本番用のドメインを選択し
カスタムドメインのAPIマッピングで、作成したそれぞれのAPIGatewayステージを紐づけることができる
さいごに
APIGatewayで、環境をわけてLambdaを使うことで
柔軟なAPI開発を行うことができる。
ぜひ、煩雑な環境管理から開放されて、
開発に集中できるよう活用してほしい
参考
株式会社フォトラクションでは一緒に働く仲間を募集しています