こうこく
作 ▸
改 ▸

AWS Lambda関数のレイヤーとか環境変数を一括変更

たくさんのLambdaを同時に開発中、共通で使ってるレイヤーに変更が入ると、コンソールからでは反映がめんどくさい!!

[2019-07-12 追記] Layerのアップロードと反映をスクリプト化してみた

AWS Lambda Layerのデプロイ (アップロード→関数への適用) をスクリプト化する - キリウ君が読まないノート

以下、元の記事


AWS-CLIをつかってコマンドラインでやった

update-function-configuration — AWS CLI 1.16.162 Command Reference

コマンド
aws lambda update-function-configuration --function-name <Lambda関数の名称またはARN> --layers <LayerのバージョンANRその1> <LayerのバージョンANRその2...>

反映したい全ての関数に↓こんな感じでやる (リージョン ap-northeast-1, レイヤー名 mylayer, レイヤーバージョン2)

aws lambda update-function-configuration --function-name myfunction1 --layers arn:aws:lambda:ap-northeast-1:999999999999:layer:mylayer:2
aws lambda update-function-configuration --function-name myfunction2 --layers arn:aws:lambda:ap-northeast-1:999999999999:layer:mylayer:2
aws lambda update-function-configuration --function-name myfunction3 --layers arn:aws:lambda:ap-northeast-1:999999999999:layer:mylayer:2

一括じゃなくない?って

でも画面からぽちぽちしなくていいからいいでしょ🤢

同じノリで環境変数とかも変えれる。詳しくは上記のリファレンス

環境変数
aws lambda update-function-configuration --function-name <Lambda関数の名称またはARN> --environment Variables={<変数名1>=<値1>,<変数名2>=<値2>...}
実行ロール
aws lambda update-function-configuration --function-name <Lambda関数の名称またはARN> --role <関数の実行ロールARN>
タイムアウト
aws lambda update-function-configuration --function-name <Lambda関数の名称またはARN> --timeout <タイムアウト秒 (上限900)>
メモリ
aws lambda update-function-configuration --function-name <Lambda関数の名称またはARN> --memory-size <メモリMB (64の倍数のみ)>
この記事に何かあればこちらまで (非公開)