本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon VPC Lattice 的访问日志
访问日志会捕获有关 VPC Lattice 服务的详细信息。您可以使用这些访问日志来分析流量模式,并审计网络中的所有服务。
访问日志是可选的,默认情况下处于禁用状态。启用访问日志后,您可以随时禁用。
定价
发布访问日志时需要付费。以您的名义在 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 Lattice 通常会在 2 分钟内将 CloudWatch 日志传送到日志。但请记住,实际日志传输时间是尽最大努力计算的,可能会有额外的延迟。
如果 CloudWatch 日志组没有特定权限,则会自动创建资源策略并将其添加到日志组中。有关更多信息,请参阅 Amazon CloudWatch 用户指南中的发送到 CloudWatch 日志的日志。
您可以在 CloudWatch 控制台的 “日志组 CloudWatch ” 下找到发送到的访问日志。有关更多信息,请参阅 Amazon CloudWatch 用户指南中的查看发送到 CloudWatch 日志的日志数据。
Amazon S3
-
VPC Lattice 通常会在 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
Amazon Data Firehose
-
VPC Lattice 通常会在 2 分钟内将日志传送到 Firehose。但请记住,实际日志传输时间是尽最大努力计算的,可能会有额外的延迟。
系统会自动创建一个服务相关角色,该角色授予 VPC Lattice 向 Amazon Data Firehose发送访问日志的权限。为使自动角色创建成功,用户必须具有
iam:CreateServiceLinkedRole
操作的权限。有关更多信息,请参阅 Amazon CloudWatch 用户指南 Amazon Data Firehose中的发送到的日志。有关查看发送到的日志的更多信息 Amazon Data Firehose,请参阅开发者指南中的Amazon Data Firehose 监控 Amazon Kinesis 数据流。
启用访问日志
完成以下过程,配置访问日志,以捕获访问日志并将其传输到您选择的目标。
使用控制台启用访问日志
您可以在创建过程中为服务网络或服务启用访问日志。您还可以在创建服务网络或服务后启用访问日志,如以下过程所述。
要使用控制台创建基本服务
通过 https://console.aws.amazon.com/vpc/
打开 Amazon VPC 控制台。 -
选择服务网络或服务。
-
选择操作和编辑日志设置。
-
打开访问日志切换开关。
-
为访问日志添加传输目标,如下所示:
-
选择CloudWatch 日志组,然后选择一个日志组。要创建日志组,请选择在中创建日志组 CloudWatch。
-
选择 S3 存储桶并输入 S3 存储桶路径,包括任何前缀。要搜索 S3 存储桶,请选择浏览 S3。
-
选择 Kinesis Data Firehose 传输流,然后选择一个传输流。要创建传输流,请选择在 Kinesis 中创建传输流。
-
-
选择保存更改。
使用启用访问日志 AWS CLI
使用 CLI 命令create-access-log-subscription启用服务网络或服务的访问日志。
访问日志内容
下表描述了访问日志条目的字段。
字段 | 描述 | 格式 |
---|---|---|
hostHeader |
请求的授权标头。 |
字符串 |
sslCipher |
用于建立客户端 TLS 连接的一组密码的 OpenSSL 名称。 |
字符串 |
serviceNetworkArn |
服务网络 ARN。 |
arn:aws:vpc-lattice: |
resolvedUser |
启用并完成验证后用户的 ARN。 |
null | ARN | "Anonymous" | "Unknown" |
authDeniedReason |
启用验证后访问被拒绝的原因。 |
null | "Service" | "Network" | "Identity" |
requestMethod |
请求的方法标头。 |
字符串 |
targetGroupArn |
目标主机所属的目标主机组。 |
字符串 |
tlsVersion |
TLS 版本。 |
TLSv |
userAgent |
用户代理标头。 |
字符串 |
ServerNameIndication |
[仅限 HTTPS]在服务器名称指示(SNI)的 ssl 连接套接字上设置的值。 |
字符串 |
destinationVpcId |
目标 VPC ID。 |
vpc- |
sourceIpPort |
源的 IP 地址和端口。 |
|
targetIpPort |
目标的 IP 地址和端口。 |
|
serviceArn |
服务 ARN。 |
arn:aws:vpc-lattice: |
sourceVpcId |
源 VPC ID。 |
vpc- |
requestPath |
请求的路径。 |
LatticePath? : |
startTime |
请求开始时间。 |
|
protocol |
协议。目前是 HTTP/1.1 或 HTTP/2。 |
字符串 |
responseCode |
HTTP 响应代码。仅记录最终标头的响应代码。有关更多信息,请参阅 访问日志问题排查。 |
整数 |
bytesReceived |
收到的正文和标头字节。 |
整数 |
bytesSent |
发送的正文和标头字节。 |
整数 |
duration |
请求从开始时间到最后一个字节输出的总持续时间(毫秒)。 |
整数 |
requestToTargetDuration |
请求从开始时间到发送到目标的最后一个字节的总持续时间(毫秒)。 |
整数 |
responseFromTargetDuration |
请求从目标主机读取第一个字节到发送到客户端的最后一个字节的总持续时间(毫秒)。 |
整数 |
grpcResponseCode |
gRPC 响应代码。有关更多信息,请参阅状态代码及其在 gRPC 中的使用 |
整数 |
callerPrincipal |
经过验证的主体。 |
字符串 |
callerX509SubjectCN |
使用者名称(CN)。 |
字符串 |
callerX509IssuerOU |
发布者(OU)。 |
字符串 |
callerX509SANNameCN |
发布者备用名称(名称/CN)。 |
字符串 |
callerX509SANDNS |
使用者备用名称(DNS)。 |
字符串 |
callerX509SANURI |
使用者备用名称(URI)。 |
字符串 |
sourceVpcArn |
发出请求的 VPC 的 ARN。 |
arn:aws:ec2: |
示例
以下是示例日志条目。
{
"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
}
访问日志问题排查
本章节包含您可能在访问日志中看到的 HTTP 错误代码的解释。
错误代码 | 可能的原因 |
---|---|
HTTP 400:错误请求 |
|
HTTP 403:禁止访问 |
已为服务配置验证,但传入请求未经过验证或授权。 |
HTTP 404:服务不存在 |
您正在尝试连接到不存在或未注册到正确服务网络的服务。 |
HTTP 500:内部服务器错误 |
VPC Lattice 遇到错误,例如无法连接到目标。 |
HTTP 502:无效网关 |
VPC Lattice 遇到错误。 |