Direkt zum Inhalt

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」を超えず、実行エラーにならないパッケージの作成方法を教えてください。

gefragt vor einem Jahr382 Aufrufe
1 Antwort
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

beantwortet vor einem Jahr

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.