背景
- 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を押して完成です。
参考資料
個人ブログ