Lambda 関数のソースコードを S3 経由でアップロードする方法を教えてください
困っていた内容
Lambda のコード更新するため ZIP ファイルをアップロードしたところファイルサイズが原因で失敗しました。
選択したファイルは大きすぎます。最大サイズは 50 MB です。
Amazon S3 を使用するとアップロードできそうです。マネジメントコンソールの手順を教えてください。
どう対応すればいいの?
次の手順を実施してください。
- Amazon S3 コンソールからファイルをアップロード
- 事前にアップデート先となる「バケット」の作成が必要です
- アップロードしたファイルの「オブジェクト URL」をメモ
- Lambda コンソールからオブジェクト URLを指定して、コードを更新
2024年12月時点の仕様として、50MB を超える ZIP ファイルをアップロードする際は、S3 を経由する必要があります。
Lambda 関数の .zip ファイルアーカイブとしてのデプロイ - AWS Lambda
.zip ファイルアーカイブが 50 MB 未満の場合は、ローカルマシンから .zip ファイルアーカイブをアップロードできます。ファイルが 50 MB を超える場合は、Amazon S3 バケットから関数にファイルをアップロードします。
S3 を経由した場合も、Lambda の仕様としてZIP 解凍済みのサイズが 250MB を超えるコードには更新できないためご注意ください。
やってみた
S3 側の作業
アップロード先バケットの作成から行う場合
Amazon S3 コンソールの「汎用バケット」から「バケットを作成」を選択します。
任意のバケット名を設定して「バケットを作成」を選択します。
※「バケット名」以外の項目は任意です
Amazon S3 コンソールの「汎用バケット」からアップロード先のバケットを選択します。
「アップロード」を選択します。
「ファイルを追加」からアップロードする ZIP ファイルを選択します。
「アップロード」を選択します。
アップロードが正常に完了したことを確認します。
アップロードしたファイルを選択します。
次の手順で使用するため「オブジェクト URL」をメモします。
Lambda 側の作業
Lambda コンソールから更新する Lambda 関数を選択します。
「コード」タブから「アップロード元」の「Amazon S3 の場所」の順に選択します。
「Amazon S3 のリンク URL」にメモした「オブジェクト URL」を設定して「保存」を選択します。
更新が正常に完了したことを確認します。
なお、サイズが大きい場合はインラインのコード編集ができなくなります。
参考資料
Lambda 関数の .zip ファイルアーカイブとしてのデプロイ - AWS Lambda
.zip ファイルアーカイブが 50 MB 未満の場合は、ローカルマシンから .zip ファイルアーカイブをアップロードできます。ファイルが 50 MB を超える場合は、Amazon S3 バケットから関数にファイルをアップロードします。
250 MB レイヤーやカスタムランタイムなど、デプロイパッケージの内容の最大サイズ。(解凍済み)