背景
- AWS Lambdaはサーバーレスにプログラムを実行できるサービスです。
-
Lmabda
を使用していると既存のLambda
を複製して新しいLambda
を作成したいことがあると思います。 - この記事では
- AWSコンソールで複製する方法
-
AWS CLI
を一部活用する方法
の2つをご紹介します。
- ※本方法は
python
かつzip
デブロイによって作成されたLambda
でのみ検証した方法です。python
以外の言語やzip
デブロイ以外で作成されたLambda
で使用できる方法かは不明です。
目標
- 既存の
Lmabda
を複製した新しいLmabda
を作成できるようになる。
1.AWSコンソールで複製する方法
既存のLambda
のcode
のcopy
方法
- 複製したい
Lambda
のコンソール画面を開きます。 - 「関数の概要」セクションの真横にある「ダウンロード」をクリックします。
- 「ファンクションコード.zipをダウンロード」をクリックします。
- ローカルPCの適当な場所に上記でダウンロードした
zip
ファイルを保存します。
新しいLambda
の作成方法
-
Lambda
のコンソール画面に移動します。 - 「関数の作成」をクリックします。
- 「一から作成」をクリックします。
- 新しく作成する関数名を「関数名」に入力します。
- 「ランタイム」・「アーキテクチャ」・「実行ロール」は複製元の
Lambda
に合わせて作成します。 - 「関数の作成」をクリックします。
- 作成された関数の画面の「コードソース」セクションで「アップロード元」をクリックします。
- 「.zipファイル」を選択し、先ほど複製元の
Lambda
からダウンロードしたzip
ファイルをupload
します。 - 「保存」をクリックします。
- 複製元の
Lambda code
が反映されます。 - その他、実行時間やメモリの変更が必要であれば、設定から設定を変更します。
2. AWS CLI
を一部活用する方法
既存のLambda
のcode
のcopy
方法(ここまでは同様です。)
- 複製したい
Lambda
のコンソール画面を開きます。 - 「関数の概要」セクションの真横にある「ダウンロード」をクリックします。
- 「ファンクションコード.zipをダウンロード」をクリックします。
- ローカルPCの適当な場所に上記でダウンロードした
zip
ファイルを保存します。
AWS CLI
で新しいLambda
を作成する方法
- 元の関数の設定を以下のコマンドで取得します。
bash
$aws lambda get-function --function-name {複製元の関数名} > original-function.json --region ap-northeast-1
-
AWS CLI
で新しい関数を作成します。 - 設定値は先ほど出力した
json
を参考にすると良いです。
bash
aws lambda create-function --function-name {新しく作成する関数名} \
--runtime "{ランタイム ex)python3.9等}" \
--role "{ロールのARN}" \
--handler "{ハンドラ ex)lambda_function.lambda_handler等}" \
--zip-file fileb://{ZIPファイルのローカルのファイルパス} \
--timeout {タイムアウト時間} \
--memory-size {メモリサイズ} \
--region {リージョン名}
- ターミナルの出力が途中で止まるので最後に
q
を押して完成です。
参考資料
個人ブログ