事件上下文格式和用法
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 可以随时添加新字段,此时您可能会遇到次要版本冲突。由于软件部署的性质,您可能会同时看到多个次要版本处于使用状态。