

# Lambda 関数を非同期的に呼び出す
<a name="invocation-async"></a>

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 は、イベントを関数に送信する前にキューに入れます](http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/images/features-async.png)


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

 AWS Command Line Interface (AWS CLI) または AWS SDK のいずれかを使用して Lambda 関数を非同期的に呼び出すには、[呼び出しタイプ](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html#lambda-Invoke-request-InvocationType)パラメータを `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 でサポートされているグローバルコマンドラインオプション](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html#cli-configure-options-list)」を参照してください。

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