Lambda が非同期呼び出しを処理する方法 - AWS Lambda

Lambda が非同期呼び出しを処理する方法

Amazon Simple Storage Service (Amazon S3) や Amazon Simple Notification Service (Amazon SNS) などの複数の AWS サービス では、関数を非同期的に呼び出してイベントを処理します。AWS Command Line Interface (AWS CLI) または AWS SDK のいずれかを使用して、Lambda 関数を非同期的に呼び出すこともできます。関数を非同期的に呼び出す場合は、関数コードからのレスポンスを待機しません。イベントを Lambda に渡すと、Lambda が残りを処理します。Lambda がエラーを処理する方法を設定し、Amazon Simple Queue Service (Amazon SQS) または Amazon EventBridge (EventBridge) などのダウンストリームリソースに呼び出しレコードを送信して、アプリケーションのコンポーネントをつなぎ合わせることができます。

次の図は、クライアントによる Lambda 関数の非同期的呼び出しを示しています。Lambda は、イベントを関数に送信する前にキューに入れます。

クライアントは、関数を非同期的に呼び出します。Lambda は、イベントを関数に送信する前にキューに入れます

非同期呼び出しの場合、Lambda はリクエストをキューに入れ、追加情報のない成功のレスポンスを返します。別のプロセスがキューからイベントを読み取って関数に送信します。

Lambda 関数を非同期的に呼び出す

AWS Command Line Interface (AWS CLI) または AWS SDK のいずれかを使用して Lambda 関数を非同期的に呼び出すには、呼び出しタイプ パラメータを Event に設定します。次のコード例は、関数を呼び出す AWS CLI コマンドを示しています。

aws lambda invoke \ --function-name my-function \ --invocation-type Event \ --cli-binary-format raw-in-base64-out \ --payload '{ "key": "value" }' response.json

以下の出力が表示されます。

{ "StatusCode": 202 }

AWS CLI バージョン 2 を使用している場合、cli-binary-format オプションは必須です。これをデフォルト設定にするには、aws configure set cli-binary-format raw-in-base64-out を実行します。詳細については、バージョン 2 の AWS Command Line Interface ユーザーガイドの「AWS CLI でサポートされているグローバルコマンドラインオプション」を参照してください。

出力ファイル (response.json) には情報は含まれないものの、このコマンドを実行すると作成されます。Lambda がイベントをキューに追加することができない場合、エラーメッセージがコマンド出力に表示されます。