こんにちはsekitakaです。
Lambda関数を起動したAPI GatewayのAPIのステージによって、Lambda上の処理を変えたい場合があると思います。
そこで今回はLambdaへAPI Gatewayのステージ名を渡す方法を紹介したいと思います。
LambdaにAPI Gatewayのステージ名を渡す手順
- API Gatewayの任意のAPIを選択→統合リクエスト→本文マッピングテンプレート
- Content-Typeは
application/json
を例に説明します。
{
"stage" : "$context.stage"
}
このようにstage
に"$context.stage"
を記述することでLambda関数にステージ名を渡すことができます。swagger定義ファイルを使用している場合も同様に記述できます。
3. Lambdaでは以下のようにハンドラの引数event
を経由してステージ名にアクセスすることができます。
handler.py
def lambda_handler(event, context):
stage = event.get('stage') # ステージ名を取得
if stage == 'hoge':
# 何かする
pass
参考
公式ドキュメントにも記載がありますが、$context
を経由して他にも色々な値をLambdaに渡すことができます。
まとめ
いかがでしたでしょうか。このようにAPIの環境や状態によって処理を分けたい場合は$context
を経由することで実現できます。