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

有关要传递给上下文对象中的函数的调用客户端的 base64 编码数据,最多为 3,583 字节。

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。

模式:(|[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。长度上限为 1024。

模式:(\$LATEST|[0-9]+)

ResponseStreamContentType

流返回的数据类型。

服务以 JSON 格式返回以下数据。

InvokeComplete

当流结束并且所有负载区块均已返回后所返回的对象。

类型:InvokeWithResponseStreamCompleteEvent 对象

PayloadChunk

流式处理响应负载的区块。

类型:InvokeResponseStreamUpdate 对象

错误

有关所有操作返回的常见错误的信息,请参阅 常见错误

EC2AccessDeniedException

需要额外的权限才能配置 VPC 设置。

HTTP 状态代码:502

EC2ThrottledException

AWS Lambda 是由 Amazon EC2 在 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 无法在 VPC 中创建指定为 Lambda 函数配置一部分的弹性网络接口,因为已达到网络接口限制。有关更多信息,请参阅 Lambda 限额

HTTP 状态代码:502

InvalidParameterValueException

请求中的参数之一无效。

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

Lambda 无法解密环境变量,因为对 AWS KMS 的访问已被拒绝。检查 Lambda 函数的 KMS 权限。

HTTP 状态代码:502

KMSDisabledException

Lambda 无法解密环境变量,因为使用的 AWS KMS key 已被禁用。检查 Lambda 函数的 KMS 密钥设置。

HTTP 状态代码:502

KMSInvalidStateException

Lambda 无法解密环境变量,因为所使用的 AWS KMS key 的状态对解密无效。检查函数的 KMS 密钥设置。

HTTP 状态代码:502

KMSNotFoundException

Lambda 无法解密环境变量,因为找不到 AWS KMS key。检查函数的 KMS 密钥设置。

HTTP 状态代码:502

RecursiveInvocationException

Lambda 检测到您的函数在涉及其他 AWS 资源的递归循环中被调用,因而停止了调用您的函数。

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 日志。

HTTP 状态代码:400

SnapStartNotReadyException

Lambda 正在初始化函数。您可以在函数状态变为 Active 时调用该函数。

HTTP 状态代码:409

SnapStartTimeoutException

Lambda 无法在超时限制内还原快照。

HTTP 状态代码:408

SubnetIPAddressLimitReachedException

由于配置的一个或多个子网没有可用的 IP 地址,因此 AWS Lambda 无法为 Lambda 函数设置 VPC 访问。

HTTP 状态代码:502

TooManyRequestsException

超出了请求吞吐量限制。有关更多信息,请参阅 Lambda 限额

HTTP 状态代码:429

UnsupportedMediaTypeException

Invoke 的内容类型请求体不是 JSON。

HTTP 状态代码:415

另请参阅

有关在特定语言的 AWS SDK 中使用此 API 的更多信息,请参阅以下内容: