

# 流日志记录
<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.aws.amazon.com/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。 **Parquet 数据类型：**INT\_32  | 2 | 
|  account-id  |  为其记录流量的源网络接口的拥有者的AWS账户 ID。如果该网络接口由 AWS 服务创建，例如在创建 VPC 端点或网络负载均衡器时创建，则记录中可能会显示此字段的值为 unknown。 **Parquet 数据类型：**STRING  | 2 | 
|  interface-id  |  为其记录流量的网络接口的 ID。对于关联到某个区域 NAT 网关的流量，将返回一个“-”符号。 **Parquet 数据类型：**STRING  | 2 | 
|  srcaddr  |   对于传入流量，这是流量来源的 IP 地址。对于传出流量，这是发送流量的网络接口的私有 IPv4 地址或 IPv6 地址。对于来自区域 NAT 网关的传出流量，这是与 pkt-srcaddr 中相同的数据包级别源 IP 地址。另请参阅pkt-srcaddr。 **Parquet 数据类型：**STRING  | 2 | 
|  dstaddr  |  传出流量的目标地址，或者网络接口上传入流量的网络接口 IPv4 或 IPv6 地址。网络接口的 IPv4 地址始终是其私有 IPv4 地址。对于来自区域 NAT 网关的传入流量，这是与 pkt-dstaddr 中相同的数据包级别目标 IP 地址。另请参阅pkt-dstaddr。 **Parquet 数据类型：**STRING  | 2 | 
|  srcport  |  流量的源端口。 **Parquet 数据类型：**INT\_32  | 2 | 
|  dstport  |  流量的目标端口。 **Parquet 数据类型：**INT\_32  | 2 | 
|  protocol  |  流量的 IANA 协议编号。有关更多信息，请参阅[分配的 Internet 协议编号](http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)。 **Parquet 数据类型：**INT\_32  | 2 | 
|  packets  |  在流中传输的数据包的数量。 **Parquet 数据类型：**INT\_64  | 2 | 
|  bytes  |  在流中传输的字节数。 **Parquet 数据类型：**INT\_64  | 2 | 
|  start  |  在聚合时间间隔内，接收流的第一个数据包的时间（以 Unix 秒为单位）。这可能是在网络接口上传输或收到数据包之后最多 60 秒。 **Parquet 数据类型：**INT\_64  | 2 | 
|  end  |  在聚合时间间隔内，接收流的最后一个数据包的时间（以 Unix 秒为单位）。这可能是在网络接口上传输或收到数据包之后最多 60 秒。 **Parquet 数据类型：**INT\_64  | 2 | 
|  action  |  与流量关联的操作： [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/flow-log-records.html) **Parquet 数据类型：**STRING  | 2 | 
|  log-status  |  流日志的日志记录状态： [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/flow-log-records.html) **Parquet 数据类型：**STRING  | 2 | 
|  vpc-id  |  包含记录其流量的网络接口的 VPC 的 ID。 **Parquet 数据类型：**STRING  | 3 | 
|  subnet-id  |  包含记录其流量的网络接口的子网的 ID。对于关联到区域 NAT 网关的流量，将返回一个“-”符号。 **Parquet 数据类型：**STRING  | 3 | 
|  instance-id  |  与要记录其流量的网络接口关联的实例的 ID（如果实例由您所有）。对于[请求方管理的网络接口](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/requester-managed-eni.html)，返回“-”符号，例如，NAT 网关的网络接口。 **Parquet 数据类型：**STRING  | 3 | 
|  tcp-flags  | 以下 TCP 标志的位掩码值：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_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。在聚合时间间隔内，TCP 标志可以是 OR-ed。对于短连接，标志必须在与流日志记录相同的行上设置，例如，对于 SYN-ACK 和 FIN 的 19，以及对于 SYN 和 FIN 的 3。有关示例，请参阅 [TCP 标志序列](flow-logs-records-examples.md#flow-log-example-tcp-flag)。有关 TCP 标志的一般信息（例如 FIN、SYN 和 ACK 等标志的含义），请参阅 Wikipedia 上的 [TCP 分段结构](https://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure)。**Parquet 数据类型：**INT\_32 | 3 | 
|  type  |  流量的类型。可能的值包括：IPv4 \| IPv6 \| EFA。有关更多信息，请参阅 [Elastic Fabric Adapter](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html)。 **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 中的通信）。 **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 中的通信）。 **Parquet 数据类型：**STRING  | 3 | 
|  region  |  包含记录其流量的网络接口的区域。 **Parquet 数据类型：**STRING  |  4  | 
|  az-id  |  包含记录其流量的网络接口的可用区的 ID。如果流量来自子位置，则记录会对此字段显示“-”符号。 **Parquet 数据类型：**STRING  |  4  | 
|  sublocation-type  |  sublocation-id 字段中返回的子位置类型：可能的值包括：[波长](https://aws.amazon.com/wavelength/) \| [前哨](https://docs.aws.amazon.com/outposts/latest/userguide/) \| [本地扩展区](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-local-zones)。如果流量不是来自子位置，则记录会对此字段显示“-”符号。 **Parquet 数据类型：**STRING  |  4  | 
|  sublocation-id  |  包含记录其流量的网络接口的子位置的 ID。如果流量不是来自子位置，则记录会对此字段显示“-”符号。 **Parquet 数据类型：**STRING  |  4  | 
|  pkt-src-aws-service  |  pkt-srcaddr 字段的 [IP 地址范围](aws-ip-ranges.md)子集的名称（如果源 IP 地址用于AWS服务）。如果源 IP 地址属于[重叠范围](aws-ip-syntax.md#aws-ip-range-overlaps)，则 pkt-src-aws-service 仅显示其中一个 AWS 服务代码。可能的值包括：`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`。 **Parquet 数据类型：**STRING  |  5  | 
|  pkt-dst-aws-service  |  pkt-dstaddr 字段的 IP 地址范围子集的名称（如果目标 IP 地址用于AWS服务）。有关可能的值的列表，请参阅 pkt-src-aws-service 字段。 **Parquet 数据类型：**STRING  |  5  | 
|  flow-direction  |  相对于捕获流量的接口而言流的方向。可能的值包括：ingress \| egress。 **Parquet 数据类型：**STRING  |  5  | 
|  traffic-path  |  传出流量到达目的地的路径。要确定流量是否为传出流量，请检查 flow-direction 字段。可能的值如下所示。如果没有任何值适用，则该字段将设置为 -。 [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/flow-log-records.html) **Parquet 数据类型：**INT\_32  |  5  | 
|  ecs-cluster-arn  | 如果流量来自正在运行的 ECS 任务，则为 ECS 集群的 AWS 资源名称（ARN）。要在订阅中包含此字段，您需要调用 ecs:ListClusters 的权限。Parquet 数据类型：STRING |  7  | 
|  ecs-cluster-name  | 如果流量来自正在运行的 ECS 任务，则为 ECS 集群的名称。要在订阅中包含此字段，您需要调用 ecs:ListClusters 的权限。Parquet 数据类型：STRING |  7  | 
|  ecs-container-instance-arn  | 如果流量来自 EC2 实例上正在运行的 ECS 任务，则为 ECS 容器实例的 ARN。如果容量提供程序是 AWS Fargate，则此字段将为“-”。要在订阅中包含此字段，您需要调用 ecs:ListClusters 和 ecs:ListContainerInstances 的权限。Parquet 数据类型：STRING |  7  | 
|  ecs-container-instance-id  | 如果流量来自 EC2 实例上正在运行的 ECS 任务，则为 ECS 容器实例的 ID。如果容量提供程序是 AWS 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.aws.amazon.com/zh_cn/vpc/latest/userguide/flow-log-records.html) **Parquet 数据类型：**STRING  |  8  | 
|  resource-id  | 包含记录其流量的网络接口的区域 NAT 网关的 ID。对于未关联到某个区域 NAT 网关的流量，将返回一个“-”符号。有关区域 NAT 网关的更多信息，请参阅[使用区域 NAT 网关实现自动多可用区扩展](nat-gateways-regional.md)。 **Parquet 数据类型：**STRING  |  9  | 
|  encryption-status  |  该流量的加密状态。有关 VPC 加密控制的更多信息，请参阅[强制执行传输中 VPC 加密](vpc-encryption-controls.md)。可能的值包括： [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/flow-log-records.html) 如果未启用 VPC 加密控制或 FlowLog 无法获取状态，则值为“-”。  \* 对于接口端点和网关端点，AWS 不会检查数据包数据以确定加密状态，而是依赖用于假定加密状态的端口。 \*\* 对于指定的 AWS 托管式端点，AWS 根据服务配置中的 TLS 要求来确定加密状态。  **Parquet 数据类型：**INT\_32  |  10  | 