自定义 HTTP API 访问日志 - Amazon API Gateway
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

自定义 HTTP API 访问日志

您可以使用以下变量自定义 HTTP API 访问日志。要了解有关 HTTP API 的访问日志的更多信息,请参阅 配置 HTTP API 的日志记录

参数 说明
$context.accountId

API 拥有者的 Amazon 账户 ID。

$context.apiId

API Gateway 分配给您的 API 的标识符。

$context.authorizer.claims.property

成功对方法调用方进行身份验证后从 JSON Web 令牌(JWT)返回的声明的属性,如 $context.authorizer.claims.username。有关更多信息,请参阅 使用 JWT 授权方控制对 HTTP API 的访问

注意

调用 $context.authorizer.claims 将返回 null。

$context.authorizer.error 从授权方返回的错误消息。
$context.authorizer.principalId

Lambda 授权方返回的委托人用户标识。

$context.authorizer.property

从 API Gateway Lambda 授权方函数返回的 context 映射的指定键/值对的值。例如,如果授权方返回以下 context 映射:

"context" : { "key": "value", "numKey": 1, "boolKey": true }

调用 $context.authorizer.key 将返回 "value" 字符串,调用 $context.authorizer.numKey 将返回 1,调用 $context.authorizer.boolKey 将返回 true

$context.awsEndpointRequestId

x-amz-request-idx-amzn-requestId 标头中Amazon端点的请求 ID。

$context.awsEndpointRequestId2

来自 x-amz-id-2 标头的Amazon端点的请求 ID。

$context.customDomain.basePathMatched

传入请求所匹配的 API 映射路径。适用于客户端使用自定义域名访问 API 的情况。例如,如果客户端向 https://api.example.com/v1/orders/1234 发送请求,且该请求匹配路径为 v1/orders 的 API 映射,则值为 v1/orders。要了解更多信息,请参阅“对 HTTP API 使用 API 映射”。

$context.dataProcessed 处理的数据量(以字节为单位)。
$context.domainName

用于调用 API 的完整域名。这应与传入的 Host 标头相同。

$context.domainPrefix

$context.domainName 的第一个标签。

$context.error.message

包含 API Gateway 错误消息的字符串。

$context.error.messageString $context.error.message 的带引号的值,即 "$context.error.message"
$context.error.responseType

一种 GatewayResponse 类型。有关更多信息,请参阅 使用 CloudWatch 指标监控 WebSocket API 执行设置网关响应以自定义错误响应

$context.extendedRequestId 等效于 $context.requestId
$context.httpMethod

所用的 HTTP 方法。有效值包括:DELETEGETHEADOPTIONSPATCHPOSTPUT

$context.identity.accountId

与请求关联的 Amazon 账户 ID。对于使用 IAM 授权的路由支持此项。

$context.identity.caller

签发请求的调用方的委托人标识符。对于使用 IAM 授权的路由支持此项。

$context.identity.cognitoAuthenticationProvider

发出请求的调用方使用的 Amazon Cognito 身份验证提供商的逗号分隔列表。仅当使用 Amazon Cognito 凭证对请求签名时才可用。

例如,对于 Amazon Cognito 身份池中的身份,cognito-idp. region.amazonaws.com/user_pool_id,cognito-idp.region.amazonaws.com/user_pool_id:CognitoSignIn:token subject claim

有关更多信息,请参阅 Amazon Cognito 开发人员指南 中的使用联合身份

$context.identity.cognitoAuthenticationType

发出请求的调用方的 Amazon Cognito 身份验证类型。仅当使用 Amazon Cognito 凭证对请求签名时才可用。可能的值包括经过身份验证的身份的 authenticated 和未经身份验证的身份的 unauthenticated

$context.identity.cognitoIdentityId

发出请求的调用方的 Amazon Cognito 身份 ID。仅当使用 Amazon Cognito 凭证对请求签名时才可用。

$context.identity.cognitoIdentityPoolId

发出请求的调用方的 Amazon Cognito 身份池 ID。仅当使用 Amazon Cognito 凭证对请求签名时才可用。

$context.identity.principalOrgId

Amazon 组织 ID。对于使用 IAM 授权的路由支持此项。

$context.identity.clientCert.clientCertPem

客户端在双向 TLS 身份验证过程中提供的 PEM 编码的客户端证书。当客户端使用已启用双向 TLS 的自定义域名访问 API 时提供。

$context.identity.clientCert.subjectDN

客户端提供的证书的主题的可分辨名称。当客户端使用已启用双向 TLS 的自定义域名访问 API 时提供。

$context.identity.clientCert.issuerDN

客户端提供的证书的颁发者的可分辨名称。当客户端使用已启用双向 TLS 的自定义域名访问 API 时提供。

$context.identity.clientCert.serialNumber

证书的序列号。当客户端使用已启用双向 TLS 的自定义域名访问 API 时提供。

$context.identity.clientCert.validity.notBefore

证书无效之前的日期。当客户端使用已启用双向 TLS 的自定义域名访问 API 时提供。

$context.identity.clientCert.validity.notAfter

证书无效后的日期。当客户端使用已启用双向 TLS 的自定义域名访问 API 时提供。

$context.identity.sourceIp

向 API Gateway 端点发出请求的即时 TCP 连接的源 IP 地址。

$context.identity.user

将获得资源访问权限授权的用户的委托人标识符。对于使用 IAM 授权的路由支持此项。

$context.identity.userAgent

API 调用方的 User-Agent 标头。

$context.identity.userArn

身份验证后标识的有效用户的 Amazon Resource Name (ARN)。对于使用 IAM 授权的路由支持此项。有关更多信息,请参阅 https://docs.amazonaws.cn/IAM/latest/UserGuide/id_users.html

$context.integration.error 从集成返回的错误消息。等效于 $context.integrationErrorMessage
$context.integration.integrationStatus 对于 Lambda 代理集成,从 Amazon Lambda(而不是从后端 Lambda 函数代码)返回的状态代码。
$context.integration.latency 集成延迟(毫秒)。等效于 $context.integrationLatency
$context.integration.requestId Amazon 端点的请求 ID。等效于 $context.awsEndpointRequestId
$context.integration.status 从集成返回的状态代码。对于 Lambda 代理集成,这是 Lambda 函数代码返回的状态代码。
$context.integrationErrorMessage

包含集成错误消息的字符串。

$context.integrationLatency 集成延迟(毫秒)。
$context.integrationStatus 对于 Lambda 代理集成,此参数表示从 Amazon Lambda(而不是从后端 Lambda 函数)返回的状态代码。
$context.path 请求路径。例如,/{stage}/root/child
$context.protocol 请求的协议,例如,HTTP/1.1
注意

API Gateway API 可以接受 HTTP/2 请求,但 API Gateway 使用 HTTP/1.1 向后端集成发送请求。因此,即使客户端发送的请求使用 HTTP/2,请求协议也会记录为 HTTP/1.1。

$context.requestId

API Gateway 分配给 API 请求的 ID。

$context.requestTime CLF 格式的请求时间 (dd/MMM/yyyy:HH:mm:ss +-hhmm)。
$context.requestTimeEpoch Epoch 格式的请求时间。
$context.responseLatency 响应延迟(毫秒)。
$context.responseLength 响应负载长度(以字节为单位)。
$context.routeKey

API 请求的路由密钥,例如 /pets

$context.stage

API 请求的部署阶段(例如,betaprod)。

$context.status 方法响应状态。