InvokeWithResponseStream - AWS Lambda

InvokeWithResponseStream

Lambda 関数を設定して、レスポンスペイロードをクライアントにストリーミングで返します。詳細については、「ストリームレスポンスに Lambda 関数を設定する」を参照してください。

このオペレーションには lambda:InvokeFunction アクションに対するアクセス許可が必要です。クロスアカウントの呼び出しに対する許可を設定する方法の詳細については、他のアカウントに関数のアクセス権の付与を参照してください。

リクエストの構文

POST /2021-11-15/functions/FunctionName/response-streaming-invocations?Qualifier=Qualifier HTTP/1.1 X-Amz-Invocation-Type: InvocationType X-Amz-Log-Type: LogType X-Amz-Client-Context: ClientContext Payload

URI リクエストパラメータ

リクエストでは、次の URI パラメータを使用します。

ClientContext

コンテキストオブジェクトで関数に渡される、呼び出し側クライアントに関する最大 3,583 バイトの base64 でエンコードされたデータです。

FunctionName

Lambda 関数の名前

名前の形式
  • 関数名my-function

  • 関数 ARNarn:aws:lambda:us-west-2:123456789012:function:my-function

  • 部分的な ARN123456789012:function:my-function

完全な ARN にのみ適用される長さの制限 関数名のみを指定する場合、64 文字の長さに制限されます。

長さの制限: 最小長は 1 です。最大長は 170 です。

パターン: (arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\d{1}:)?(\d{12}:)?(function:)?([a-zA-Z0-9-_\.]+)(:(\$LATEST|[a-zA-Z0-9-_]+))?

必須: はい

InvocationType

以下のいずれかのオプションを使用します。

  • RequestResponse (デフォルト) – 関数を同期的に呼び出します。関数がレスポンスを返すかタイムアウトするまで、接続を開いたままにします。API オペレーションレスポンスには、関数レスポンスと追加データが含まれます。

  • DryRun – パラメータ値を検証し、IAM ユーザーまたはロールが、関数を呼び出す許可を持っていることを確認します。

有効な値: RequestResponse | DryRun

LogType

Tail に設定し、実行ログをレスポンスに含めます。同期的に呼び出された関数にのみ適用されます。

有効な値: None | Tail

Qualifier

エイリアス名。

長さの制限:最小長は 1 です。最大長は 128 です。

Pattern: (|[a-zA-Z0-9$_-]+)

リクエストボディ

リクエストは以下のバイナリデータを受け入れます。

Payload

入力として Lambda 関数に提供される JSON。

JSON を直接入力できます。例えば、--payload '{ "key": "value" }' です。ファイルパスを指定することもできます。例えば、--payload file://payload.json です。

レスポンスの構文

HTTP/1.1 StatusCode X-Amz-Executed-Version: ExecutedVersion Content-Type: ResponseStreamContentType Content-type: application/json { "InvokeComplete": { "ErrorCode": "string", "ErrorDetails": "string", "LogResult": "string" }, "PayloadChunk": { "Payload": blob } }

レスポンス要素

アクションが成功すると、以下の HTTP レスポンスが返されます。

StatusCode

リクエストが成功した場合、HTTP ステータスコードは 200 の範囲内にあります。RequestResponse呼び出しタイプの場合、ステータスコードは 200 です。DryRun 呼び出しタイプの場合、ステータスコードは 204 です。

レスポンスでは、以下の HTTP ヘッダーが返されます。

ExecutedVersion

実行された関数のバージョン。エイリアスを使用して関数を呼び出すと、エイリアスが解決したバージョンが示されます。

長さの制限: 最小長は 1 です。最大長は 1,024 です。

パターン: (\$LATEST|[0-9]+)

ResponseStreamContentType

ストリームが返すデータのタイプ。

サービスから以下のデータが JSON 形式で返されます。

InvokeComplete

ストリームが終了し、すべてのペイロードチャンクが返されたときに返されるオブジェクト。

型: InvokeWithResponseStreamCompleteEvent オブジェクト

PayloadChunk

ストリーミングされたレスポンスペイロードのチャンク。

型: InvokeResponseStreamUpdate オブジェクト

エラー

すべてのアクションに共通のエラーについては、「共通エラー」を参照してください。

EC2AccessDeniedException

VPC 設定を構成するには、追加のアクセス許可が必要です。

HTTP ステータスコード: 502

EC2ThrottledException

Amazon EC2 が、Lambda 関数用に提供された実行ロールを使用した関数の初期化中に AWS Lambda をスロットルしました。

HTTP ステータスコード: 502

EC2UnexpectedException

AWS Lambda が、Lambda 関数のセットアップ中に想定外の Amazon EC2 クライアント例外を受け取りました。

HTTP ステータスコード: 502

EFSIOException

接続されているファイルシステムの読み込みまたは書き込み中にエラーが発生しました。

HTTP ステータスコード: 410

EFSMountConnectivityException

Lambda 関数が、設定されたファイルシステムに対するネットワーク接続を確立できませんでした。

HTTP ステータスコード: 408

EFSMountFailureException

許可または設定の問題が原因で、Lambda 関数は設定されたファイルシステムをマウントできませんでした。

HTTP ステータスコード: 403

EFSMountTimeoutException

Lambda 関数は、設定されたファイルシステムに対するネットワーク接続を確立しましたが、マウント操作がタイムアウトしました。

HTTP ステータスコード: 408

ENILimitReachedException

ネットワークインターフェイスの制限に達したため、AWS Lambda は Lambda 関数設定の一部として指定された VPC で Elastic Network Interface を作成できませんでした。詳細については、「Lambda クォータ」を参照してください。

HTTP ステータスコード: 502

InvalidParameterValueException

リクエストに含まれているパラメータの 1 つが無効です。

HTTP ステータスコード:400

InvalidRequestContentException

リクエストボディを JSON として解析できませんでした。

HTTP ステータスコード:400

InvalidRuntimeException

指定されたランタイムまたはランタイムバージョンは、サポートされていません。

HTTP ステータスコード: 502

InvalidSecurityGroupIDException

Lambda 関数の VPC 設定で指定されているセキュリティグループ ID が無効です。

HTTP ステータスコード: 502

InvalidSubnetIDException

Lambda 関数の VPC 設定で指定されているサブネット ID が無効です。

HTTP ステータスコード: 502

InvalidZipFileException

AWS Lambda がデプロイパッケージを解凍できませんでした。

HTTP ステータスコード: 502

KMSAccessDeniedException

AWS KMS アクセスが拒否されたため、Lambda は環境変数を復号化できませんでした。Lambda 関数の KMS アクセス許可をチェックしてください。

HTTP ステータスコード: 502

KMSDisabledException

使用した AWS KMS keyが無効化されているため、Lambda は環境変数を復号化できませんでした。Lambda 関数の KMS キー設定をチェックしてください。

HTTP ステータスコード: 502

KMSInvalidStateException

使用した AWS KMS keyの状態が複合化に有効なものではないため、Lambda は環境変数を復号化できませんでした。関数の KMS キー設定をチェックしてください。

HTTP ステータスコード: 502

KMSNotFoundException

AWS KMS keyが見つからなかったため、Lambda は環境変数を復号化できませんでした。関数の KMS キー設定をチェックしてください。

HTTP ステータスコード: 502

RecursiveInvocationException

他の AWS リソースと再帰的なループで関数が呼び出されていることを Lambda が検出したため、関数の呼び出しを停止しました。

HTTP ステータスコード:400

RequestTooLargeException

リクエストペイロードが Invoke リクエストボディの JSON 入力クォータを超過しました。詳細については、「Lambda クォータ」を参照してください。

HTTP ステータスコード: 413

ResourceConflictException

リソースが既に存在しているか、別のオペレーションが進行中です。

HTTP ステータスコード: 409

ResourceNotFoundException

リクエストで指定されたリソースは存在しません。

HTTP ステータスコード: 404

ResourceNotReadyException

関数が非アクティブなため、その VPC 接続を使用できません。VPC 接続が再度確立されるのを待ち、再試行してください。

HTTP ステータスコード: 502

ServiceException

AWS Lambda サービスで内部エラーが発生しました。

HTTP ステータスコード: 500

SnapStartException

afterRestore() ランタイムフックでエラーが発生しました。詳細については、Amazon CloudWatch Logs をチェックしてください。

HTTP ステータスコード:400

SnapStartNotReadyException

Lambda が関数を初期化しています。関数は、関数の状態Active になったときに呼び出すことができます。

HTTP ステータスコード: 409

SnapStartTimeoutException

Lambda は、タイムアウト制限内にスナップショットを復元できませんでした。

HTTP ステータスコード: 408

SubnetIPAddressLimitReachedException

1 つ、または複数の設定されたサブネットに利用可能な IP アドレスがないことから、AWS Lambda は Lambda 関数の VPC アクセスを設定できませんでした。

HTTP ステータスコード: 502

TooManyRequestsException

リクエストスループット制限を超えました。詳細については、「Lambda クォータ」を参照してください。

HTTP ステータスコード: 429

UnsupportedMediaTypeException

Invokeリクエストボディのコンテンツタイプが JSON ではありません。

HTTP ステータスコード: 415

以下の資料も参照してください。

言語固有の AWS SDK のいずれかでこの API を使用する方法の詳細については、以下を参照してください。