AWS re:Postを使用することにより、以下に同意したことになります AWS re:Post 利用規約

Lambda@edgeでzipファイルをアップロード、1MB制限

0

ローカルでindex.js、package-lock.json、package-lock.json、node_modulesを含むzipファイルを作成し、関数を「Lambda@edgeへデプロイ」しようとしたところ、「1MB」を超えてデプロイできません。 node_modules内のライブラリを一部削除しZIPファイルが「1MB」を超えないように試してみましたが、実行時にCannot find module でエラーになります。 削除するライブラリを代えて、zipファイル作成を何パターンも試してみましたが、エラー回避ができません。 「1MB」を超えず、実行エラーにならないパッケージの作成方法を教えてください。

質問済み 1ヶ月前43ビュー
1回答
0

Lambda@Edge には、関数のサイズに関して厳しい制限があります。Lambda@Edge 関数の最大サイズは、圧縮された状態(ZIP ファイル)で 1MB に制限されています。これは、エッジロケーションでの迅速な展開と実行を確保するためです。

この制限内で機能する関数を作成するには、以下のアプローチを検討してください:

  1. 依存関係の最小化:

    • 必要最小限のライブラリのみを使用します。
    • 使用していない依存関係を package.json から削除します。
  2. 軽量な代替ライブラリの使用:

    • 可能な場合、より軽量なライブラリに置き換えます。
  3. コードの最適化:

    • 不要なコードを削除し、効率的なコーディング practices を使用します。
  4. ビルドプロセスの最適化:

    • webpack や rollup などのツールを使用して、コードを最小化およびバンドルします。
    • Tree shaking を活用して、使用されていないコードを除去します。
  5. 外部サービスの利用:

    • 一部の処理を別の AWS サービス(例:DynamoDB、S3)に移行することを検討します。
  6. コードの分割:

    • 機能を複数の Lambda@Edge 関数に分割し、それぞれを 1MB 以下に保ちます。
  7. CDN キャッシングの活用:

    • 可能な場合、処理結果を CloudFront でキャッシュし、関数の呼び出し頻度を減らします。

これらの方法を組み合わせて、1MB の制限内に収まりつつ、必要な機能を維持する Lambda@Edge 関数を作成することができます。パッケージのサイズを小さくしながら、必要なモジュールが含まれていることを確認することが重要です。

また、Lambda@Edge の制限を超える複雑な処理が必要な場合は、アーキテクチャの見直しを検討し、一部の処理を別のサービスに移行することも考慮に入れてください。
Sources
Restrictions on Lambda@Edge - Amazon CloudFront
Introducing an enhanced in-console editing experience for AWS Lambda | AWS Compute Blog

profile picture
回答済み 1ヶ月前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン