

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# AWS Transit Gateway 流量记录亚马逊 CloudWatch 日志中的记录
<a name="flow-logs-cwl"></a>

流日志可以将流日志数据直接发布到 Amazon CloudWatch。

发布到 CloudWatch 日志后，流日志数据将发布到日志组，并且每个传输网关在日志组中都有唯一的日志流。日志流包含流日志记录。您可以创建将数据发布到相同日志组的多个流日志。如果同一中转网关存在于同一日志组中的一个或多个流日志中，则它具有一个组合日志流。如果您指定了一个流日志应该捕获已拒绝流量，而另一个流日志应该捕获已接受流量，则组合日志流会捕获所有流量。

当您将流日志发布到 Logs 时，会收取已售日志的数据摄取和存档费用。 CloudWatch 有关更多信息，请参阅 [Amazon CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing/)。

在 CloudWatch 日志中，**时间戳**字段对应于流日志记录中捕获的开始时间。**Ingesti** onTime 字段提供日志收到流日志记录的日期和时间。 CloudWatch 此时间戳晚于在流日志记录中捕获的结束时间。

有关 CloudWatch 日志的更多信息，请参阅 *Amazon [ CloudWatch 日志用户指南中的发送到](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-CWL) CloudWatch 日志*的日志。

**Topics**
+ [用于将流日志发布到 CloudWatch 日志的 IAM 角色](#flow-logs-iam)
+ [IAM 用户传递角色的权限](#flow-logs-iam-user)
+ [创建发布到日志的流 CloudWatch 日志](flow-logs-cwl-create-flow-log.md)
+ [查看流日志记录](view-flow-log-records.md)
+ [处理流日志记录](process-records-cwl.md)

## 用于将流日志发布到 CloudWatch 日志的 IAM 角色
<a name="flow-logs-iam"></a>

与您的流日志关联的 IAM 角色必须具有足够的权限才能将流日志发布到日志中的指定 CloudWatch 日志组。IAM 角色必须属于您的 AWS 账户。

附加到您的 IAM 角色的 IAM policy 必须至少包括以下权限。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams"
      ],
      "Resource": "*"
    }
  ]
}
```

------

另请确保您的角色具有信任关系，以允许流日志服务代入该角色。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "vpc-flow-logs.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

建议您使用 `aws:SourceAccount` 和 `aws:SourceArn` 条件键来防止出现[混淆代理人问题](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)。例如，您可以将以下条件块添加到以前的信任策略。源账户是流日志的所有者，并且源 ARN 是流日志 ARN。如果您不知道流日志 ID，则可以用通配符（\$1）替换 ARN 的该部分，然后在创建流日志后更新策略。

```
"Condition": {
    "StringEquals": {
        "aws:SourceAccount": "account_id"
    },
    "ArnLike": {
        "aws:SourceArn": "arn:aws:ec2:region:account_id:vpc-flow-log/flow-log-id"
    }
}
```

## IAM 用户传递角色的权限
<a name="flow-logs-iam-user"></a>

用户还必须有权对与流日志关联的 IAM 角色使用 `iam:PassRole` 操作。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": "arn:aws:iam::111122223333:role/flow-log-role-name"
        }
    ]
}
```

------

# 创建发布到 T AWS ransit Gateway 流日志记录 Amazon CloudWatch Logs
<a name="flow-logs-cwl-create-flow-log"></a>

您可以为中转网关创建流日志。如果以 IAM 用户身份执行这些步骤，请确保您具有使用 `iam:PassRole` 操作的权限。有关更多信息，请参阅 [IAM 用户传递角色的权限](flow-logs-cwl.md#flow-logs-iam-user)。

您可以使用 Amazon VPC 控制台或 AWS CLI 创建亚马逊 CloudWatch 流日志。

**使用控制台创建中转网关流日志**

1. 登录 AWS 管理控制台 并打开 Amazon VPC 控制台，网址为[https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)。

1. 在导航窗格中，选择 **Transit gateways（中转网关）**。

1. 选择一个或多个中转网关的复选框，然后选择 **Actions**（操作）、**Creat flow log**（创建流日志）。

1. 对于 “**目标**”，选择 “**发送到 CloudWatch日志**”。

1. 对于 **Destination log group**（目的地日志组），选择当前的目的地日志组的名称。
**注意**  
如果目的地日志组尚不存在，则在此字段中输入新名称将创建新的目标日志组。

1. 对于 **IAM 角色**，请指定有权向 CloudWatch 日志发布日志的角色的名称。

1. 对于**Log record format（日志记录格式）**，选定流日志记录的格式。
   + 要使用默认格式，请选择**AWS default format（亚马逊云科技默认格式）**。
   + 要使用自定义格式，请选择**Custom format（自定义格式）**然后从**Log format（日志格式）**选择字段。

1. （可选）选择**Add new tag（添加新标签）**以将标签应用于流日志。

1. 选择 **Create flow log（创建流日志）**。

**使用命令行创建流日志**

使用以下命令之一。
+ [create-flow-logs](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-flow-logs.html) (AWS CLI)
+ [New-EC2FlowLog](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2FlowLog.html) (AWS Tools for Windows PowerShell)

以下 AWS CLI 示例创建了一个用于捕获传输网关信息的流日志。流日志使用 IAM 角色传送到账户 123456789101 中名为 “ CloudWatch `my-flow-logs`日志” 的日志组。`publishFlowLogs`

```
aws ec2 create-flow-logs --resource-type TransitGateway --resource-ids tgw-1a2b3c4d --log-group-name my-flow-logs --deliver-logs-permission-arn arn:aws:iam::123456789101:role/publishFlowLogs 
```

# 在亚马逊上查看 AWS Transit Gateway 流量日志记录 CloudWatch
<a name="view-flow-log-records"></a>

您可以使用日志控制台或 Amazon S3 控制台查看您的流 CloudWatch 日志记录，具体取决于所选的目标类型。在您创建流日志之后，可能需要几分钟才能显示在控制台中。

**查看发布到日志的流 CloudWatch 日志记录**

1. 打开 CloudWatch 控制台，网址为[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)。

1. 在导航窗格中，请选择 **Logs**（日志），然后选择包含您日志流的日志组。此时将显示每个中转网关的日志流的列表。

1.  选择包含您希望查看其流日志记录的中转网关 ID 的日志流。有关更多信息，请参阅 [中转网关流日志记录](tgw-flow-logs.md#flow-log-records)。

# 处理 Amazon 日志中的 AWS Transit Gateway 流量 CloudWatch 日志记录
<a name="process-records-cwl"></a>

您可以像处理日志收集的任何其他日志事件一样处理流 CloudWatch 日志记录。有关监控日志数据和指标筛选条件的更多信息，请参阅 *Amazon CloudWatch 用户指南*中的[使用筛选条件根据日志事件创建指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html)。

## 示例：为流日志创建 CloudWatch 指标筛选器和警报
<a name="flow-logs-cw-alarm-example"></a>

在此示例中，您有一个适用于 `tgw-123abc456bca` 的流日志。您要创建一个警报，如果 1 小时内有 10 次或超过 10 次通过 TCP 端口 22（SSH） 连接到您的实例的尝试遭到拒绝，该警报将向您发出提醒。首先，您必须创建一个指标筛选条件，该指标筛选条件与为其创建警报的流量的模式相匹配。然后，您可以为该指标筛选条件创建警报。

**为已拒绝的 SSH 流量创建指标筛选条件并为该筛选条件创建警报**

1. 打开 CloudWatch 控制台，网址为[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)。

1. 在导航窗格中，依次选择**日志**和**日志组**。

1. 选中日志组对应的复选框，然后选择 **Actions**（操作）、**Create metric filter**（创建指标筛选条件）。

1. 对于**Filter Pattern**（筛选模式），输入以下内容：

   ```
   [version, resource_type, account_id,tgw_id="tgw-123abc456bca”, tgw_attachment_id, tgw_src_vpc_account_id, tgw_dst_vpc_account_id, tgw_src_vpc_id, tgw_dst_vpc_id, tgw_src_subnet_id, tgw_dst_subnet_id, tgw_src_eni, tgw_dst_eni, tgw_src_az_id, tgw_dst_az_id, tgw_pair_attachment_id, srcaddr= "10.0.0.1", dstaddr, srcport=“80”, dstport, protocol=“6”, packets, bytes,start,end, log_status, type,packets_lost_no_route, packets_lost_blackhole, packets_lost_mtu_exceeded, packets_lost_ttl_expired, tcp_flags,region, flow_direction, pkt_src_aws_service, pkt_dst_aws_service]
   ```

1. 对于 **Select log data to test**（选择要测试的日志数据），选择您的中转网关对应的日志流。（可选）要查看与筛选条件模式匹配的日志数据行，请选择 **Test pattern**（测试模式）。准备就绪后，选择 **Next**（下一步）。

1. 输入筛选条件名称、指标命名空间和指标名称。将指标值设置为 **1**。完成后，选择 **Next**（下一步），然后选择 **Create metric filter**（创建指标筛选条件）。

1. 在导航窗格中，依次选择 **Alarms**（警报）和 **All alarms**（所有警报）。

1. 选择**Create alarm（创建警报）**。

1. 为您创建的指标筛选条件选择命名空间。

   新指标可能需要几分钟才会在控制台中显示。

1. 选择您创建的指标名称，然后选择 **Select metric**（选择指标）。

1. 按如下所示配置警报，然后选择 **Next**（下一步）：
   + 对于 **Statistic（统计数据）**，选择 **Sum（总计）**。这可以确保您捕获指定时间段内的数据点的总数。
   + 对于 **Period**（周期），选择 **1 hour**（1 小时）。
   + 对于 **Whenever（每当）**，选择 **Greater/Equal（大于/等于，>=）**，然后输入 **10** 作为阈值。
   + 对于 **Additional configuration**（其他配置），**Datapoints to alarm**（警报的数据点数），将默认值设为 **1**。

1. 对于 **Notification**（通知），选择现有的 SNS 主题，或选择 **Create new topic**（新建主题）创建一个新主题。选择 **Next（下一步）**。

1. 输入警报的名称和描述，然后选择 **Next**（下一步）。

1. 配置完警报后，选择 **Create alarm**（创建警报）。