Lambda(node.js v16)を非同期呼び出しして再試行(リトライ)されることを確認する

Lambda(node.js v16)を非同期呼び出しして再試行(リトライ)されることを確認する

LambdaをInvocationType:’Event’にして非同期呼び出しをします。

Lambda(node.js v16)

import {
    LambdaClient,
    InvokeCommand
  } from '@aws-sdk/client-lambda'

export async function handler() {
  const client = new LambdaClient({
    region: "ap-northeast-1",
  });
  const command = new InvokeCommand({
    FunctionName: 'test-lambda' // Lambda関数名
    InvocationType:'Event' // ★ Event指定
  });
  const result = await client.send(command);
  console.log(result)
  const response = {
    statusCode: 200,
    body: result
  }
  return response
};

呼ばれる側のLambda(test-lambda)の設定とCloudWatch Logs

Lambdaの再試行の設定です。0,1,2のいずれかを選択することができます。デフォルトは2です。

Lambda(node.js v16)を非同期呼び出しして再試行(リトライ)されることを確認する

呼び出し側のLambdaを実行します。その後に呼ばれる側のLambdaのCloudWatch Logsを見ます。

Lambda(node.js v16)を非同期呼び出しして再試行(リトライ)されることを確認する

同じリクエストIDで2回再試行されていることが確認できます。

参考サイト

非同期呼び出し - AWS Lambda
Lambda 関数を非同期的に呼び出すと、Lambda はリクエストをキューに入れ、追加情報を含まない成功のレスポンスを返します。別のプロセスによってリクエストがキューから削除され、関数が同期的に呼び出されます。

コメント

タイトルとURLをコピーしました