

# 流日志记录
<a name="flow-log-records"></a>

流日志记录代表您的 VPC 中的网络流。默认情况下，每条记录捕获在*聚合时间间隔*（又称为*捕获窗口*）内发生的网络 Internet 协议 (IP) 流量流（按每个网络接口 5 元组来定性）。

每条记录都是一个字符串，字段用空格分隔。记录包括 IP 流的不同组件的值，包括源、目标和协议。

当您创建流日志时，您可以为流日志记录使用默认格式，也可以指定自定义格式。

**Topics**
+ [聚合时间间隔](#flow-logs-aggregration-interval)
+ [默认格式](#flow-logs-default)
+ [自定义格式](#flow-logs-custom)
+ [可用字段](#flow-logs-fields)

## 聚合时间间隔
<a name="flow-logs-aggregration-interval"></a>

聚合时间间隔表示捕获特定流并聚合到流日志记录中的时间段。默认情况下，最大聚合时间间隔为 10 分钟。创建流日志时，您可以选择指定最大 1 分钟的聚合时间间隔。最大聚合时间间隔为 1 分钟的流日志的大小，比最大聚合时间间隔为 10 分钟的流日志大。

当网络接口附加到[基于 Nitro 的实例](https://docs.amazonaws.cn/ec2/latest/instancetypes/ec2-nitro-instances.html)时，无论指定的最大聚合时间间隔为多少，聚合时间间隔始终不超过 1 分钟。

在聚合时间间隔内捕获数据后，需要额外的时间来处理数据并将其发布到 CloudWatch Logs 或 Amazon S3。流日志服务通常在大约 5 分钟内将日志传送到 CloudWatch Logs，在大约 10 分钟内将日志传送到 Amazon S3。但是，日志交付已尽了最大努力，您的日志可能会延迟到典型交付时间之后。

## 默认格式
<a name="flow-logs-default"></a>

使用默认格式，流日志记录按[可用字段](#flow-logs-fields)表中显示的顺序包括版本 2 字段。您无法自定义或更改默认格式。要捕获其他字段或不同字段子集，请指定自定义格式。

## 自定义格式
<a name="flow-logs-custom"></a>

使用自定义格式，您可以指定流日志记录中包含哪些字段以及采用哪种顺序。这使您可以根据具体需求创建流日志，并忽略无关的字段。使用自定义格式，还可减少从发布的流日志提取特定信息所需的单独流程。您可以指定任意数量的可用流日志字段，但必须至少指定一个。

## 可用字段
<a name="flow-logs-fields"></a>

下表描述了对流日志记录可用的所有字段。**版本**列表示在其中引入了字段的 VPC 流日志版本。默认格式包括所有版本 2 字段，与它们在表格中出现的顺序相同。

将流日志数据发布到 Amazon S3 时，字段的数据类型将取决于流日志格式。如果格式为纯文本，则所有字段的类型均为 STRING。如果格式为 Parquet，请参阅字段数据类型表。

如果某个字段不适用于或无法计算特定记录，则记录为该条目显示一个“-”符号。不直接来自数据包标头的元数据字段是最大努力的近似值，它们的值可能缺失或不准确。


| 字段 | 描述 | 版本 | 
| --- | --- | --- | 
| version | VPC 流日志版本。如果您使用默认格式，则版本为 2。如果您使用自定义格式，则版本是指定字段中的最高版本。例如，如果您只在版本 2 中指定字段，则版本为 2。如果您在版本 2、3 和 4 中指定字段组合，则版本为 4。<br />**Parquet 数据类型：**INT\_32 | 2 | 
| account-id | 为其记录流量的源网络接口的拥有者的Amazon账户 ID。如果该网络接口由 Amazon 服务创建，例如在创建 VPC 端点或网络负载均衡器时创建，则记录中可能会显示此字段的值为 unknown。<br />**Parquet 数据类型：**STRING | 2 | 
| interface-id | 为其记录流量的网络接口的 ID。对于关联到某个区域 NAT 网关的流量，将返回一个“-”符号。<br />**Parquet 数据类型：**STRING | 2 | 
| srcaddr |  对于传入流量，这是流量来源的 IP 地址。对于传出流量，这是发送流量的网络接口的私有 IPv4 地址或 IPv6 地址。对于来自区域 NAT 网关的传出流量，这是与 pkt-srcaddr 中相同的数据包级别源 IP 地址。另请参阅pkt-srcaddr。<br />**Parquet 数据类型：**STRING | 2 | 
| dstaddr | 传出流量的目标地址，或者网络接口上传入流量的网络接口 IPv4 或 IPv6 地址。网络接口的 IPv4 地址始终是其私有 IPv4 地址。对于来自区域 NAT 网关的传入流量，这是与 pkt-dstaddr 中相同的数据包级别目标 IP 地址。另请参阅pkt-dstaddr。<br />**Parquet 数据类型：**STRING | 2 | 
| srcport | 流量的源端口。<br />**Parquet 数据类型：**INT\_32 | 2 | 
| dstport | 流量的目标端口。<br />**Parquet 数据类型：**INT\_32 | 2 | 
| protocol | 流量的 IANA 协议编号。有关更多信息，请参阅[分配的 Internet 协议编号](http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)。<br />**Parquet 数据类型：**INT\_32 | 2 | 
| packets | 在流中传输的数据包的数量。<br />**Parquet 数据类型：**INT\_64 | 2 | 
| bytes | 在流中传输的字节数。<br />**Parquet 数据类型：**INT\_64 | 2 | 
| start | 在聚合时间间隔内，接收流的第一个数据包的时间（以 Unix 秒为单位）。这可能是在网络接口上传输或收到数据包之后最多 60 秒。<br />**Parquet 数据类型：**INT\_64 | 2 | 
| end | 在聚合时间间隔内，接收流的最后一个数据包的时间（以 Unix 秒为单位）。这可能是在网络接口上传输或收到数据包之后最多 60 秒。<br />**Parquet 数据类型：**INT\_64 | 2 | 
| action | 与流量关联的操作：[See the AWS documentation website for more details](http://docs.amazonaws.cn/vpc/latest/userguide/flow-log-records.html)<br />**Parquet 数据类型：**STRING | 2 | 
| log-status | 流日志的日志记录状态：[See the AWS documentation website for more details](http://docs.amazonaws.cn/vpc/latest/userguide/flow-log-records.html)<br />**Parquet 数据类型：**STRING | 2 | 
| vpc-id | 包含记录其流量的网络接口的 VPC 的 ID。<br />**Parquet 数据类型：**STRING | 3 | 
| subnet-id | 包含记录其流量的网络接口的子网的 ID。对于关联到区域 NAT 网关的流量，将返回一个“-”符号。<br />**Parquet 数据类型：**STRING | 3 | 
| instance-id | 与要记录其流量的网络接口关联的实例的 ID（如果实例由您所有）。对于[请求方管理的网络接口](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/requester-managed-eni.html)，返回“-”符号，例如，NAT 网关的网络接口。<br />**Parquet 数据类型：**STRING | 3 | 
| tcp-flags | 以下 TCP 标志的位掩码值：[See the AWS documentation website for more details](http://docs.amazonaws.cn/vpc/latest/userguide/flow-log-records.html)如果未记录支持的标志，则 TCP 标志值为 0。例如，由于 tcp-flags 不支持记录 ACK 或 PSH 标志，因此具有这些不受支持标志的流量记录将导致 tcp-flags 值为 0。但是，如果不支持的标志附带有支持标志，我们将报告受支持标志的值。例如，如果 ACK 是 SYN-ACK 的一部分，则会报告 18。而且，如果有像 SYN\+ECE 这样的记录，由于 SYN 是支持的标志，而 ECE 不是，那么 TCP 标志值为 2。如果由于某种原因标志组合无效且无法计算其值，则值为“-”。如果未发送标志，则 TCP 标志值为 0。<br />在聚合时间间隔内，TCP 标志可以是 OR-ed。对于短连接，标志必须在与流日志记录相同的行上设置，例如，对于 SYN-ACK 和 FIN 的 19，以及对于 SYN 和 FIN 的 3。有关示例，请参阅 [TCP 标志序列](flow-logs-records-examples.md#flow-log-example-tcp-flag)。<br />有关 TCP 标志的一般信息（例如 FIN、SYN 和 ACK 等标志的含义），请参阅 Wikipedia 上的 [TCP 分段结构](https://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure)。<br />**Parquet 数据类型：**INT\_32 | 3 | 
| type | 流量的类型。可能的值包括：IPv4 \| IPv6 \| EFA。有关更多信息，请参阅 [Elastic Fabric Adapter](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/efa.html)。<br />**Parquet 数据类型：**STRING | 3 | 
| pkt-srcaddr | 流量的数据包级别（原始）源 IP 地址。将此字段与 srcaddr 字段一起使用，用于区分流量流经的中间层 IP 地址与流量的原始源 IP 地址。例如，当流量流经 [NAT 网关的网络接口时](flow-logs-records-examples.md#flow-log-example-nat)，或者当 Amazon EKS 中 Pod 的 IP 地址不同于运行 Pod 的实例节点的网络接口 IP 地址时（用于 VPC 中的通信）。<br />**Parquet 数据类型：**STRING | 3 | 
| pkt-dstaddr | 流量的数据包级别（原始）目标 IP 地址。将此字段与 dstaddr 字段一起使用，用于区分流量流经的中间层的 IP 地址与流量的最终目标 IP 地址。例如，当流量流经 [NAT 网关的网络接口时](flow-logs-records-examples.md#flow-log-example-nat)，或者当 Amazon EKS 中 Pod 的 IP 地址不同于运行 Pod 的实例节点的网络接口 IP 地址时（用于 VPC 中的通信）。<br />**Parquet 数据类型：**STRING | 3 | 
| region | 包含记录其流量的网络接口的区域。<br />**Parquet 数据类型：**STRING | 4 | 
| az-id | 包含记录其流量的网络接口的可用区的 ID。如果流量来自子位置，则记录会对此字段显示“-”符号。<br />**Parquet 数据类型：**STRING | 4 | 
| sublocation-type | sublocation-id 字段中返回的子位置类型：可能的值包括：[波长](https://www.amazonaws.cn/wavelength/) \| [前哨](https://docs.amazonaws.cn/outposts/latest/userguide/) \| [本地扩展区](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-local-zones)。如果流量不是来自子位置，则记录会对此字段显示“-”符号。<br />**Parquet 数据类型：**STRING | 4 | 
| sublocation-id | 包含记录其流量的网络接口的子位置的 ID。如果流量不是来自子位置，则记录会对此字段显示“-”符号。<br />**Parquet 数据类型：**STRING | 4 | 
| pkt-src-aws-service | pkt-srcaddr 字段的 [IP 地址范围](aws-ip-ranges.md)子集的名称（如果源 IP 地址用于Amazon服务）。如果源 IP 地址属于[重叠范围](aws-ip-syntax.md#aws-ip-range-overlaps)，则 pkt-src-aws-service 仅显示其中一个 Amazon 服务代码。可能的值包括：`AMAZON` \| `AMAZON_APPFLOW` \| `AMAZON_CONNECT` \| `API_GATEWAY` \| `AURORA_DSQL` \| `CHIME_MEETINGS` \| `CHIME_VOICECONNECTOR` \| `CLOUD9` \| `CLOUDFRONT` \| `CLOUDFRONT_ORIGIN_FACING` \| `CODEBUILD` \| `DYNAMODB` \| `EBS` \| `EC2` \| `EC2_INSTANCE_CONNECT` \| `GLOBALACCELERATOR` \| `IVS_LOW_LATENCY` \| `IVS_REALTIME` \| `KINESIS_VIDEO_STREAMS` \| `MEDIA_PACKAGE_V2` \| `ROUTE53` \| `ROUTE53_HEALTHCHECKS` \| `ROUTE53_HEALTHCHECKS_PUBLISHING` \| `ROUTE53_RESOLVER` \| `S3` \| `WORKSPACES_GATEWAYS`。<br />**Parquet 数据类型：**STRING | 5 | 
| pkt-dst-aws-service | pkt-dstaddr 字段的 IP 地址范围子集的名称（如果目标 IP 地址用于Amazon服务）。有关可能的值的列表，请参阅 pkt-src-aws-service 字段。<br />**Parquet 数据类型：**STRING | 5 | 
| flow-direction | 相对于捕获流量的接口而言流的方向。可能的值包括：ingress \| egress。<br />**Parquet 数据类型：**STRING | 5 | 
| traffic-path | 传出流量到达目的地的路径。要确定流量是否为传出流量，请检查 flow-direction 字段。可能的值如下所示。如果没有任何值适用，则该字段将设置为 -。[See the AWS documentation website for more details](http://docs.amazonaws.cn/vpc/latest/userguide/flow-log-records.html)<br />**Parquet 数据类型：**INT\_32 | 5 | 
| ecs-cluster-arn | 如果流量来自正在运行的 ECS 任务，则为 ECS 集群的 Amazon 资源名称（ARN）。要在订阅中包含此字段，您需要调用 ecs:ListClusters 的权限。Parquet 数据类型：STRING | 7 | 
| ecs-cluster-name | 如果流量来自正在运行的 ECS 任务，则为 ECS 集群的名称。要在订阅中包含此字段，您需要调用 ecs:ListClusters 的权限。Parquet 数据类型：STRING | 7 | 
| ecs-container-instance-arn | 如果流量来自 EC2 实例上正在运行的 ECS 任务，则为 ECS 容器实例的 ARN。如果容量提供程序是 Amazon Fargate，则此字段将为“-”。要在订阅中包含此字段，您需要调用 ecs:ListClusters 和 ecs:ListContainerInstances 的权限。Parquet 数据类型：STRING | 7 | 
| ecs-container-instance-id | 如果流量来自 EC2 实例上正在运行的 ECS 任务，则为 ECS 容器实例的 ID。如果容量提供程序是 Amazon Fargate，则此字段将为“-”。要在订阅中包含此字段，您需要调用 ecs:ListClusters 和 ecs:ListContainerInstances 的权限。Parquet 数据类型：STRING | 7 | 
| ecs-container-id | 如果流量来自正在运行的 ECS 任务，则为容器的 Docker 运行时 ID。如果 ECS 任务中有一个或多个容器，这将是第一个容器的 docker 运行时 ID。要在订阅中包含此字段，您需要调用 ecs:ListClusters 的权限。Parquet 数据类型：STRING | 7 | 
| ecs-second-container-id | 如果流量来自正在运行的 ECS 任务，则为容器的 Docker 运行时 ID。如果 ECS 任务中有多个容器，这将是第二个容器的 Docker 运行时 ID。要在订阅中包含此字段，您需要调用 ecs:ListClusters 的权限。Parquet 数据类型：STRING | 7 | 
| ecs-service-name | 如果流量来自正在运行的 ECS 任务，并且 ECS 任务由 ECS 服务启动，则为 ECS 服务的名称。如果 ECS 任务不是由 ECS 服务启动的，则此字段将为“-”。要在订阅中包含此字段，您需要调用 ecs:ListClusters 和 ecs:ListServices 的权限。Parquet 数据类型：STRING | 7 | 
| ecs-task-definition-arn | 如果流量来自正在运行的 ECS 任务，则为 ECS 任务定义的 ARN。要在订阅中包含此字段，您需要调用 ecs:ListClusters 和 ecs:ListTaskDefinitions 的权限 Parquet 数据类型：STRING | 7 | 
| ecs-task-arn | 如果流量来自正在运行的 ECS 任务，则为 ECS 任务的 ARN。要在订阅中包含此字段，您需要调用 ecs:ListClusters 和 ecs:ListTasks 的权限。Parquet 数据类型：STRING | 7 | 
| ecs-task-id | 如果流量来自正在运行的 ECS 任务，则为 ECS 任务的 ID。要在订阅中包含此字段，您需要调用 ecs:ListClusters 和 ecs:ListTasks 的权限。Parquet 数据类型：STRING | 7 | 
| reject-reason | 流量被拒绝的原因。可能的值：BPA、EC。对于任何其他拒绝原因，返回“-”。[See the AWS documentation website for more details](http://docs.amazonaws.cn/vpc/latest/userguide/flow-log-records.html)<br />**Parquet 数据类型：**STRING | 8 | 
| resource-id | 包含记录其流量的网络接口的区域 NAT 网关的 ID。对于未关联到某个区域 NAT 网关的流量，将返回一个“-”符号。有关区域 NAT 网关的更多信息，请参阅[使用区域 NAT 网关实现自动多可用区扩展](nat-gateways-regional.md)。<br />**Parquet 数据类型：**STRING | 9 | 
| encryption-status | 该流量的加密状态。有关 VPC 加密控制的更多信息，请参阅[强制执行传输中 VPC 加密](vpc-encryption-controls.md)。可能的值包括：[See the AWS documentation website for more details](http://docs.amazonaws.cn/vpc/latest/userguide/flow-log-records.html)<br />如果未启用 VPC 加密控制或 FlowLog 无法获取状态，则值为“-”。 \* 对于接口端点和网关端点，Amazon 不会检查数据包数据以确定加密状态，而是依赖用于假定加密状态的端口。 <br />\*\* 对于指定的 Amazon 托管式端点，Amazon 根据服务配置中的 TLS 要求来确定加密状态。 <br />**Parquet 数据类型：**INT\_32 | 10 | 