同期呼び出し - AWS Lambda

同期呼び出し

関数を同期的に呼び出すと、Lambda は関数を実行し、レスポンスを待ちます。関数の実行が終了すると、Lambda は、実行された関数のバージョンなどの追加データとともに、関数のコードからのレスポンスを返します。AWS CLI を使用して関数を同期的に呼び出すには、invoke コマンドを使用します。

$ aws lambda invoke --function-name my-function --payload '{ "key": "value" }' response.json { "ExecutedVersion": "$LATEST", "StatusCode": 200 }

次の図は、クライアントによる Lambda 関数の同期的呼び出しを示しています。Lambda はイベントを関数に直接送信し、関数のレスポンスを呼び出し元に返します。


      クライアントは関数を同期的に呼び出し、レスポンスを待ちます。

payload は、JSON 形式のイベントを含む文字列です。AWS CLI が関数からのレスポンスを書き込むファイルの名前は response.json です。関数がオブジェクトまたはエラーを返す場合、レスポンスは JSON 形式のオブジェクトまたはエラーになります。エラーなしで終了した場合、レスポンスは null です。

端末に表示されるコマンドの出力には、Lambda からのレスポンスのヘッダーにある情報が含まれます。これには、イベントを処理したバージョン(エイリアスを使用する場合に便利)、および Lambda から返されるステータスコードが含まれます。Lambda が関数を実行できた場合、関数がエラーを返した場合でも、ステータスコードは 200 です。

注記

タイムアウトが長い関数では、同期呼び出し中にレスポンスを待機している間に、クライアントが切断される場合があります。HTTP クライアント、SDK、ファイアウォール、プロキシ、またはオペレーティングシステムを構成して、タイムアウトまたはキープアライブ設定での長い接続を許可するようにしてください。

Lambda が関数を実行できない場合は、エラーが出力に表示されます。

$ aws lambda invoke --function-name my-function --payload value response.json An error occurred (InvalidRequestContentException) when calling the Invoke operation: Could not parse request body into json: Unrecognized token 'value': was expecting ('true', 'false' or 'null') at [Source: (byte[])"value"; line: 1, column: 11]

コマンドラインから呼び出しのログを取得するには、--log-type オプションを使用します。レスポンスには、LogResult フィールドが含まれます。このフィールドには、呼び出しから base64 コードされた最大 4 KB のログが含まれます。

$ aws lambda invoke --function-name my-function out --log-type Tail { "StatusCode": 200, "LogResult": "U1RBUlQgUmVxdWVzdElkOiA4N2QwNDRiOC1mMTU0LTExZTgtOGNkYS0yOTc0YzVlNGZiMjEgVmVyc2lvb...", "ExecutedVersion": "$LATEST" }

このログをデコードするには、base64 ユーティリティを使用します。

$ aws lambda invoke --function-name my-function out --log-type Tail \ --query 'LogResult' --output text | base64 -d START RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Version: $LATEST "AWS_SESSION_TOKEN": "AgoJb3JpZ2luX2VjELj...", "_X_AMZN_TRACE_ID": "Root=1-5d02e5ca-f5792818b6fe8368e5b51d50;Parent=191db58857df8395;Sampled=0"",ask/lib:/opt/lib", END RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 REPORT RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Duration: 79.67 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 73 MB

base64 ユーティリティは、Linux、macOS、および Windows の Ubuntu で使用できます。macOS の場合、コマンドは base64 -D です。

パラメータ、ヘッダー、エラーの完全なリストを含む Invoke API の詳細については、「Invoke」を参照してください。

関数を直接呼び出す場合は、エラーレスポンスを確認し、再試行することができます。また、AWS CLI とAWS SDK は、クライアントのタイムアウト、スロットル、およびサービスエラーで自動的に再試行します。詳細については、「エラー処理と AWS Lambda での自動再試行」を参照してください。