本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon L VPC attice 的访问日志
访问日志可捕获有关您的VPC莱迪思服务和资源配置的详细信息。您可以使用这些访问日志来分析流量模式,并审计网络中的所有服务。对于VPC莱迪思服务,我们发布VpcLatticeAccessLogs
;对于资源配置,我们发布VpcLatticeResourceAccessLogs
,需要单独配置。
访问日志是可选的,默认情况下处于禁用状态。启用访问日志后,您可以随时禁用。
定价
发布访问日志时需要付费。以您的名义在 AWS 本地发布的日志称为公开日志。有关销售日志定价的更多信息,请参阅 Amazon CloudWatch 定价
IAM启用访问日志所需的权限
要启用访问日志并将日志发送到其目的地,您必须在策略中将以下操作附加到您正在使用的IAM用户、组或角色。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Sid": "ManageVPCLatticeAccessLogSetup", "Action": [ "logs:CreateLogDelivery", "logs:GetLogDelivery", "logs:UpdateLogDelivery", "logs:DeleteLogDelivery", "logs:ListLogDeliveries", "vpc-lattice:CreateAccessLogSubscription", "vpc-lattice:GetAccessLogSubscription", "vpc-lattice:UpdateAccessLogSubscription", "vpc-lattice:DeleteAccessLogSubscription", "vpc-lattice:ListAccessLogSubscriptions" ], "Resource": [ "*" ] } ] }
有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的添加和删除IAM身份权限。
更新与正在使用的IAM用户、群组或角色关联的策略后,请转至启用访问日志。
访问日志目标
您可以将访问日志发送到以下目标。
Amazon CloudWatch 日志
-
VPC莱迪思通常会在2分钟内将 CloudWatch 日志传送到日志。但请记住,实际日志传输时间是尽最大努力计算的,可能会有额外的延迟。
-
如果 CloudWatch 日志组没有特定权限,则会自动创建资源策略并将其添加到日志组中。有关更多信息,请参阅 Amazon CloudWatch 用户指南中的发送到 CloudWatch 日志的日志。
-
您可以在 CloudWatch控制台的 “日志组 CloudWatch ” 下找到发送到的访问日志。有关更多信息,请参阅 Amazon CloudWatch 用户指南中的查看发送到 CloudWatch 日志的日志数据。
Amazon S3
-
VPC莱迪思通常会在 6 分钟内将日志传送到 Amazon S3。但请记住,实际日志传输时间是尽最大努力计算的,可能会有额外的延迟。
-
如果存储桶没有特定权限,系统将自动创建存储桶策略,并将其添加到您的 Amazon S3 存储桶。有关更多信息,请参阅亚马逊 CloudWatch用户指南中的发送到 Amazon S3 的日志。
-
发送到 Amazon S3 的访问日志使用以下命名约定:
[bucket]/[prefix]/AWSLogs/[accountId]/VpcLattice/AccessLogs/[region]/[YYYY/MM/DD]/[resource-id]/[accountId]_VpcLatticeAccessLogs_[region]_[resource-id]_YYYYMMDDTHHmmZ_[hash].json.gz
-
VpcLatticeResourceAccessLogs 发送到 Amazon S3 的内容使用以下命名约定:
[bucket]/[prefix]/AWSLogs/[accountId]/VpcLattice/ResourceAccessLogs/[region]/[YYYY/MM/DD]/[resource-id]/[accountId]_VpcLatticeResourceAccessLogs_[region]_[resource-id]_YYYYMMDDTHHmmZ_[hash].json.gz
Amazon Data Firehose
-
VPC莱迪思通常会在2分钟内将日志传送到Firehose。但请记住,实际日志传输时间是尽最大努力计算的,可能会有额外的延迟。
-
系统会自动创建一个服务相关角色,该角色授予VPC莱迪思向其发送访问日志的权限。 Amazon Data Firehose为使自动角色创建成功,用户必须具有
iam:CreateServiceLinkedRole
操作的权限。有关更多信息,请参阅 Amazon CloudWatch 用户指南 Amazon Data Firehose中的发送到的日志。 -
有关查看发送到 Amazon Data Firehose日志的更多信息,请参阅《Amazon Data Firehose 开发人员指南》中的监控 Amazon Kinesis Data Streams。
启用访问日志
完成以下过程,配置访问日志,以捕获访问日志并将其传输到您选择的目标。
使用控制台启用访问日志
您可以在创建期间启用服务网络、服务或资源配置的访问日志。您也可以在创建服务网络、服务或资源配置后启用访问日志,如以下过程所述。
要使用控制台创建基本服务
打开 Amazon VPC 控制台,网址为https://console.aws.amazon.com/vpc/
。 -
选择服务网络、服务或资源配置。
-
选择操作和编辑日志设置。
-
打开访问日志切换开关。
-
为访问日志添加传输目标,如下所示:
-
选择CloudWatch 日志组并选择一个日志组。要创建日志组,请选择在中创建日志组 CloudWatch。
-
选择 S3 存储桶并输入 S3 存储桶路径,包括任何前缀。要搜索 S3 存储桶,请选择浏览 S3。
-
选择 Kinesis Data Firehose 传输流,然后选择一个传输流。要创建传输流,请选择在 Kinesis 中创建传输流。
-
-
选择 Save changes(保存更改)。
使用 AWS CLI启用访问日志
使用CLI命令create-access-log-subscription
访问日志内容
下表描述了访问日志条目的字段。
字段 | 描述 | 格式 |
---|---|---|
hostHeader
|
请求的授权标头。 |
字符串 |
sslCipher
|
用于建立客户端TLS连接的一组密码的开放SSL名称。 |
字符串 |
serviceNetworkArn
|
服务网络ARN。 |
arn: aws: vpc-lattice::: servicenetwork/ |
resolvedUser
|
启用身份验证并完成身份验证时的用户。ARN |
空 | ARN | “匿名” | “未知” |
authDeniedReason
|
启用验证后访问被拒绝的原因。 |
null | "Service" | "Network" | "Identity" |
requestMethod
|
请求的方法标头。 |
字符串 |
targetGroupArn
|
目标主机所属的目标主机组。 |
字符串 |
tlsVersion
|
TLS 版本。 |
TLSv |
userAgent
|
用户代理标头。 |
字符串 |
ServerNameIndication
|
[HTTPS仅限] 在 ssl 连接套接字上为服务器名称指示 (SNI) 设置的值。 |
字符串 |
destinationVpcId
|
目的地 VPC ID。 |
vpc- |
sourceIpPort
|
源的 IP 地址和端口。 |
|
targetIpPort
|
目标的 IP 地址和端口。 |
|
serviceArn
|
该服务ARN。 |
arn: aws: vpc-lattice::: service/ |
sourceVpcId
|
来源 VPC ID。 |
vpc- |
requestPath
|
请求的路径。 |
LatticePath?: |
startTime
|
请求开始时间。 |
|
protocol
|
协议。目前要么是 HTTP /1.1 要么 /2HTTP. |
字符串 |
responseCode
|
HTTP响应码。仅记录最终标头的响应代码。有关更多信息,请参阅 访问日志问题排查。 |
整数 |
bytesReceived
|
收到的正文和标头字节。 |
整数 |
bytesSent
|
发送的正文和标头字节。 |
整数 |
duration
|
请求从开始时间到最后一个字节输出的总持续时间(毫秒)。 |
整数 |
requestToTargetDuration
|
请求从开始时间到发送到目标的最后一个字节的总持续时间(毫秒)。 |
整数 |
responseFromTargetDuration
|
请求从目标主机读取第一个字节到发送到客户端的最后一个字节的总持续时间(毫秒)。 |
整数 |
grpcResponseCode
|
g RPC 响应码。有关更多信息,请参阅状态码及其在 g 中的用法RPC |
整数 |
callerPrincipal
|
经过验证的主体。 |
字符串 |
callerX509SubjectCN
|
使用者名称(CN)。 |
字符串 |
callerX509IssuerOU
|
发布者(OU)。 |
字符串 |
callerX509SANNameCN
|
发布者备用名称(名称/CN)。 |
字符串 |
callerX509SANDNS
|
主题备用名称 (DNS)。 |
字符串 |
callerX509SANURI
|
主题备用名称 (URI)。 |
字符串 |
sourceVpcArn
|
请求ARN的VPC起源地。 |
arn: aws: ec2::: vpc/ |
示例
以下是示例日志条目。
{
"hostHeader": "example.com",
"sslCipher": "-",
"serviceNetworkArn": "arn:aws:vpc-lattice:us-west-2:123456789012:servicenetwork/svn-1a2b3c4d",
"resolvedUser": "Unknown",
"authDeniedReason": "null",
"requestMethod": "GET",
"targetGroupArn": "arn:aws:vpc-lattice:us-west-2:123456789012:targetgroup/tg-1a2b3c4d",
"tlsVersion": "-",
"userAgent": "-",
"serverNameIndication": "-",
"destinationVpcId": "vpc-0abcdef1234567890",
"sourceIpPort": "178.0.181.150:80",
"targetIpPort": "131.31.44.176:80",
"serviceArn": "arn:aws:vpc-lattice:us-west-2:123456789012:service/svc-1a2b3c4d",
"sourceVpcId": "vpc-0abcdef1234567890",
"requestPath": "/billing",
"startTime": "2023-07-28T20:48:45Z",
"protocol": "HTTP/1.1",
"responseCode": 200,
"bytesReceived": 42,
"bytesSent": 42,
"duration": 375,
"requestToTargetDuration": 1,
"responseFromTargetDuration": 1,
"grpcResponseCode": 1
}
资源访问日志内容
下表描述了资源访问日志条目的字段。
字段 | 描述 | 格式 |
---|---|---|
serviceNetworkArn
|
服务网络ARN。 |
arn: |
serviceNetworkResourceAssociationId
|
服务网络资源 ID。 |
|
vpcEndpointId
|
用于访问资源的端点 ID。 |
字符串 |
sourceVpcArn
|
发起连接的VPC来源VPCARN或来源。 |
字符串 |
resourceConfigurationArn
|
访问ARN的资源配置。 |
字符串 |
protocol
|
用于与资源配置通信的协议。目前仅支持 tcp。 |
字符串 |
sourceIpPort
|
发起连接的源的 IP 地址和端口。 |
|
destinationIpPort
|
发起连接时使用的 IP 地址和端口。这将是 SN-E/SN-A 的 IP。 |
|
gatewayIpPort
|
资源网关用于访问资源的 IP 地址和端口。 |
|
resourceIpPort
|
资源的 IP 地址和端口。 |
|
示例
以下是示例日志条目。
{
"eventTimestamp": "2024-12-02T10:10:10.123Z",
"serviceNetworkArn": "arn:aws:vpc-lattice:us-west-2:1234567890:servicenetwork/sn-1a2b3c4d",
"serviceNetworkResourceAssociationId": "snra-1a2b3c4d",
"vpcEndpointId": "vpce-01a2b3c4d",
"sourceVpcArn": "arn:aws:ec2:us-west-2:1234567890:vpc/vpc-01a2b3c4d",
"resourceConfigurationArn": "arn:aws:vpc-lattice:us-west-2:0987654321:resourceconfiguration/rcfg-01a2b3c4d",
"protocol": "tcp",
"sourceIpPort": "172.31.23.56:44076",
"destinationIpPort": "172.31.31.226:80",
"gatewayIpPort": "10.0.28.57:49288",
"resourceIpPort": "10.0.18.190:80"
}
访问日志问题排查
本节包含您可能在访问日志中看到的HTTP错误代码的说明。
错误代码 | 可能的原因 |
---|---|
HTTP400:请求不正确 |
|
HTTP403: 已禁止 |
已为服务配置验证,但传入请求未经过验证或授权。 |
HTTP404: 服务不存在 |
您正在尝试连接到不存在或未注册到正确服务网络的服务。 |
HTTP500:内部服务器错误 |
VPC莱迪思遇到了错误,例如无法连接到目标。 |
HTTP502: 错误的网关 |
VPC莱迪思遇到了错误。 |