AWS Lambdaをバージョン管理してステージごとに実行するLambdaのバージョンを分ける方法
Lambdaはバージョン管理しておくことができます。
バージョン管理すると$LATESTが最新バージョンのLambdaとなり、このバージョンのみ編集可能で、過去のバージョンは編集できません。
バージョン管理したいLambdaの「アクション」から「新しいバージョンを発行」を押してバージョニングします。
$LATEST,1
$LATEST,2,1
$LATEST,3,2,1
みたいな感じでバージョニングされます。
Lambdaをバージョン管理しておくと、API Gatewayのステージごとに同じLambdaの異なるバージョンのLambdaを実行することができるので便利です。
エイリアスの作成
Lambdaをバージョン管理したら、次はエイリアスを作成します。
$LATESTのエイリアスがdev、その次のバージョンがprodにします。
これで、devとprodのエイリアス作成が完了しました。Lambda側での設定は以上です。
API Gatewayでの設定
統合リクエストでLambda関数の後ろに:${stageVariables.xxx}を付加します。xxxは任意の変数名にします。
ここでは、aaaという変数名にしています。Lambda関数が「bbb:${stageVariables.aaa}」となればOKです。
次に各ステージでステージ変数を指定します。ステージ変数名はaaaでそれに対する名前はLambdaで作成したエイリアスを指定します。
dev
prod
Invalid permissions on Lambda function
実行して「Invalid permissions on Lambda function」エラーが発生したら以下コマンドで権限を付与してあげる必要があります。
dev
aws lambda add-permission --function-name arn:aws:lambda:リージョン:xxxx:function:ラムダ名:ステージ名 --source-arn arn:aws:execute-api:リージョン:xxxx:yyyy/*/GET/ --principal apigateway.amazonaws.com --statement-id dev --action lambda:InvokeFunction
prod
aws lambda add-permission --function-name arn:aws:lambda:リージョン:xxxx:function:ラムダ名:ステージ名 --source-arn arn:aws:execute-api:リージョン:xxxx:yyyy/*/GET/ --principal apigateway.amazonaws.com --statement-id prod --action lambda:InvokeFunction
–statement-idに指定する値は任意で結構です。これで各ステージのAPI Gatewayから各Lambdaが実行されるようになります。
参考サイト
Amazon API Gateway ステージ変数のリファレンス
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント