初心者が注意すべきAWS Lambdaの5つのポイント

AWS Lambda注意点
  • URLをコピーしました!

AWS Lambdaは、サーバーレスアーキテクチャの利用を容易にする強力なサービスです。しかし、最大限のパフォーマンスを引き出し、予期しない問題を避けるためには、いくつかの重要な注意点を理解しておく必要があります。

目次

1. タイムアウト設定の最適化

Lambda関数のデフォルト実行時間はわずか3秒ですが、必要に応じて最大15分まで延長できます。長時間実行する関数を持つ場合は、タイムアウト値を適切に設定することが重要です。15分を超える場合は、EC2やECSなどのサービスを検討する必要があります。

2. メモリ割り当ての調整

Lambda関数のメモリのデフォルトは128 MBですが、必要に応じて最大10,240 MB(10 GB)まで増やすことができます。過剰なメモリ割り当てはコスト増加につながるため、適切なメモリサイズを選択することが必要です。

3. コールドスタートの対策

新しいインスタンスでの初回実行時にはコールドスタートが発生し、レスポンス時間が長くなる可能性があります。
また、コールドスタートとホットスタートで以下の点に注意が必要です。

// Lambda関数外にグローバル変数を定義
let globalCounter = 0;

// Lambda関数のハンドラ
export const handler = async (event: any = {}): Promise<any> => {
  // グローバル変数をインクリメント
  globalCounter += 1;

  // コールドスタート時には、このログには 'Global counter: 1' と表示されます。
  // ホットスタート時(同一コンテナ内での再利用時)には、この値は1から始まり、
  // 関数が呼び出されるたびに増加します(例: 'Global counter: 2', 'Global counter: 3', ...)。
  console.log(`Global counter: ${globalCounter}`);

  // レスポンスを返す
  return {
    statusCode: 200,
    body: JSON.stringify({
      message: `Global counter is now ${globalCounter}`,
    }),
  };
};
  • コールドスタート時globalCounterはLambda関数がデプロイされるか、長時間アイドル状態の後に初めて実行されたときに、0からスタートし、関数内で1に増加します。この時、コンテナとグローバル変数が初期化されます。
  • ホットスタート時:関数が続けて実行される場合(既存のコンテナが再利用される場合)、globalCounterの値はリセットされず、前の実行からの値が保持されます。その結果、カウンターは呼び出しごとに1ずつ増えていきます。

4. 同時実行制限への対応

AWSはアカウントごとにLambda関数の同時実行数に制限を設けています。高いトラフィックが予想される場合は、事前に制限緩和をリクエストしておきましょう。

5. API Gateway, AppSyncとの統合時の注意

API GatewayやAppSyncとLambdaを統合する際は、API Gateway、AppSyncのタイムアウト時間とLambdaのタイムアウト設定を調整し、統合時の問題を防ぎましょう。

AWS Lambda注意点

この記事が気に入ったら
いいねしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次