Photoruction工事中!

Photoructionの開発ブログです!

AWS APIgateway + Lambda を環境ごとに切り分けるTips

こんにちは!株式会社フォトラクションでWEB開発をしている下川原です。

Photoruction Advent Calendar 2022の7日目の記事になります。

はじめに

どんな人がこの記事を読むと幸せになるか。

AWS APIgateway + Lambdaを環境ごとに分ける!

1. 下準備

API Gatewayを既に作成済みで、1つ以上のメソッドがあることが重要!

検証用、本番用のLambda関数ができていることが重要!

AWSLambdaを環境ごとにわける方法は、前回の記事を参考に

AWS Lambdaで効率よく本番・検証環境をわける!

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ステージを紐づけることができる

参考:REST API の API マッピングの使用

さいごに

APIGatewayで、環境をわけてLambdaを使うことで

柔軟なAPI開発を行うことができる。

ぜひ、煩雑な環境管理から開放されて、

開発に集中できるよう活用してほしい

参考

AWS Lambda関数のエイリアス使用

株式会社フォトラクションでは一緒に働く仲間を募集しています