MENU

API Gatewayのステージ変数とは?dev・prodでLambdaのエイリアスを切り替える

DynamoDB Streamsは「変更の記録」、TTLは「期限切れの自動削除」を説明する画像

おはようございます、YASUです。

前に、Lambdaのバージョンとエイリアスを整理しました。DVAの勉強を進めると、API Gatewayの「ステージ変数」が、そのエイリアスと組み合わせて出てきます。ステージ変数の意味が分かりにくかったので、シンプルに整理しました。

目次

結論

ステージ変数は、API Gatewayのステージごとに設定できる、名前と値のペアです。これを使うと、同じAPIの設定のまま、dev用とprod用で、接続先のLambdaのエイリアスを切り替えられます。

ステージとは

ステージは、APIをデプロイして公開する、環境の単位です。betaやprodなど、名前を付けて、複数のステージを作れます。ステージごとに、別々のURLでAPIを呼び出します。

ステージ変数とは

ステージ変数は、ステージごとに設定する、名前と値のペアです。自分なりのイメージでは、ステージごとに持たせる「環境変数」です。設定した変数は、${stageVariables.変数名}という形で参照します。API Gatewayは、実行時に、呼び出されたステージの値に置き換えてくれます。

使い道

  • HTTP統合の接続先URL:ステージごとに、別のバックエンドに接続する
  • Lambda関数やエイリアス:ステージごとに、別のLambdaを呼び出す
  • マッピングテンプレート:ステージごとに、別のDynamoDBのテーブル名などを渡す

Lambdaのエイリアスを切り替える例

統合のLambda関数の指定に、ステージ変数を使います。

arn:aws:lambda:リージョン:アカウントID:function:MyFunction:${stageVariables.lambdaAlias}

devステージ  → lambdaAlias = dev
prodステージ → lambdaAlias = prod

こうすると、API Gatewayの設定を1つにしたまま、devステージはdevのエイリアス、prodステージはprodのエイリアスを、呼び出せます。前に整理した、エイリアスの付け替えと組み合わせると、環境の切り替えが、かなりすっきりします。

気をつけたい点

  • Lambdaの呼び出し許可が必要:ステージ変数でLambdaを指定した場合は、その関数(エイリアスを含む)に、API Gatewayから呼び出す許可を、add-permissionで設定する必要がある。設定しないと、500 Internal Server Errorになる。前に整理した、Lambdaの「呼び出し権限」の話と、つながる部分
  • 機密情報は入れない:ステージ変数は、認証情報や秘密のデータの保存には向かない。そういう値は、Secrets Managerなどに預ける

まとめ

  • ステージは、APIを公開する環境の単位で、ステージ変数は、ステージごとの名前と値のペア
  • 参照は${stageVariables.変数名}で、実行時にステージの値に置き換わる
  • Lambdaのエイリアスを切り替えれば、dev用とprod用を、1つのAPIで使い分けられる
  • Lambdaを指定した場合は、呼び出し許可の設定が必要で、機密情報は入れない

エイリアスとステージ変数が、1つにつながって、環境の切り替えの仕組みがすっきり分かりました。それでは、また明日!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次