事件上下文格式和用法 - Amazon Simple Storage Service

事件上下文格式和用法

Amazon S3 对象 Lambda 提供了有关在传递给 AWS Lambda 函数的事件中发出的请求的上下文。以下屏幕截图显示一个示例请求。示例后面包含对各个字段的描述。

{ "xAmzRequestId": "requestId", "getObjectContext": { "inputS3Url": "https://my-s3-ap-111122223333.s3-accesspoint.us-east-1.amazonaws.com/example?X-Amz-Security-Token=<snip>", "outputRoute": "io-use1-001", "outputToken": "OutputToken" }, "configuration": { "accessPointArn": "arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/example-object-lambda-ap", "supportingAccessPointArn": "arn:aws:s3:us-east-1:111122223333:accesspoint/example-ap", "payload": "{}" }, "userRequest": { "url": "https://object-lambda-111122223333.s3-object-lambda.us-east-1.amazonaws.com/example", "headers": { "Host": "object-lambda-111122223333.s3-object-lambda.us-east-1.amazonaws.com", "Accept-Encoding": "identity", "X-Amz-Content-SHA256": "e3b0c44298fc1example" } }, "userIdentity": { "type": "AssumedRole", "principalId": "principalId", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/example", "accountId": "111122223333", "accessKeyId": "accessKeyId", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "Wed Mar 10 23:41:52 UTC 2021" }, "sessionIssuer": { "type": "Role", "principalId": "principalId", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" } } }, "protocolVersion": "1.00" }

请求中包含以下字段:

  • xAmzRequestId – 此请求的 Amazon S3 请求 ID。我们建议您记录此值以帮助调试。

  • getObjectContext – 连接到 Amazon S3 和 S3 对象 Lambda 的输入和输出详细信息。

    • inputS3Url – 可用于从 Amazon S3 获取原始对象的预签名 URL。URL 是使用原始调用方的身份进行签名的,使用 URL 时该用户的权限将适用。如果 URL 中有签名标头,则 Lambda 函数必须将这些标头包含在对 Amazon S3 的调用中,Host 标头除外。

    • outputRoute – 在 Lambda 函数调用 WriteGetObjectResponse 时添加到 S3 对象 Lambda URL 的路由令牌。

    • outputToken – S3 对象 Lambda 使用的不透明令牌,用于将 WriteGetObjectResponse 调用与原始调用方相匹配。

  • configuration – 有关对象 Lambda 接入点的配置信息。

    • accessPointArn – 收到此请求的对象 Lambda 接入点的 Amazon 资源名称(ARN)。

    • supportingAccessPointArn – 在对象 Lambda 接入点配置中指定的支持接入点的 ARN。

    • payload – 应用于对象 Lambda 接入点配置的自定义数据。S3 对象 Lambda 将此数据视为不透明字符串,因此在使用前可能需要对其进行解码。

  • userRequest – 有关对 S3 对象 Lambda 的原始调用的信息。

    • url – S3 对象 Lambda 接收的请求的解码 URL,不包括任何与授权相关的查询参数。

    • headers – 字符串到字符串的映射,包含原始调用中的 HTTP 标头及其值,不包括任何与授权相关的标头。如果同一个标头多次出现,会将相同标头的每个实例中的值组合成一个以逗号分隔的列表。此映射中会保留原始标头的大小写。

  • userIdentity – 有关对 S3 对象 Lambda 发出调用的身份的详细信息。有关更多信息,请参阅 AWS CloudTrail 用户指南中的记录数据事件以便跟踪

    • type – 身份的类型。

    • accountId – 身份所属的 AWS 账户。

    • userName – 已发出调用的身份的友好名称。

    • principalId – 已发出调用的身份的唯一标识符。

    • arn – 已发出调用的主体的 ARN。ARN 的最后一个部分包含已发出调用的用户或角色。

    • sessionContext – 如果已使用临时安全证书发出请求,此元素提供有关已为这些证书创建的会话的信息。

    • invokedBy – 发出请求的 AWS 服务 的名称,例如 Amazon EC2 Auto Scaling 或 AWS Elastic Beanstalk。

    • sessionIssuer – 如果已使用临时安全证书发出请求,此元素提供有关证书获取方式的信息。

  • protocolVersion – 提供的上下文的版本 ID。此字段的格式为 {Major Version}.{Minor Version}。次要版本号始终是两位数字。对字段的语义进行任何删除或更改都将导致主要版本冲突,并且需要主动选择加入。Amazon S3 可以随时添加新字段,此时您可能会遇到次要版本冲突。由于软件部署的性质,您可能会同时看到多个次要版本处于使用状态。