

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

# 将追踪事件复制到 CloudTrail 湖中


您可以将现有跟踪事件复制到 CloudTrail Lake 事件数据存储中，以创建记录到跟踪的事件的 point-in-time快照。复制跟踪事件不会干扰跟踪记录事件的功能，也不会以任何方式修改跟踪。

您可以将跟踪事件复制到为事件配置的现有 CloudTrail 事件数据存储中，也可以创建新的 CloudTrail 事件数据存储并选择**复制跟踪事件**选项作为事件数据存储创建的一部分。有关将跟踪事件复制到现有事件数据存储的更多信息，请参阅[使用 CloudTrail 控制台将跟踪事件复制到现有的事件数据存储中](cloudtrail-copy-trail-events.md)。有关创建新的事件数据存储的更多信息，请参阅[使用控制台为事件创建 CloudTrail 事件数据存储](query-event-data-store-cloudtrail.md)。

将跟踪事件复制到 CloudTrail Lake 事件数据存储允许您对复制的事件运行查询。 CloudTrail 与事件历史记录或运行`LookupEvents`中的简单键和值查找相比，Lake 查询提供了更深入、更可自定义的事件视图。有关 CloudTrail Lake 的更多信息，请参阅[与 L Amazon CloudTrail ake 合作](cloudtrail-lake.md)。

如果您要将跟踪事件复制到组织事件数据存储，则必须使用该组织的管理账户。您不能使用组织的委托管理员账户复制跟踪事件。

CloudTrail 湖泊事件数据存储会产生费用。创建事件数据存储时，您可以选择要用于事件数据存储的[定价选项](cloudtrail-lake-manage-costs.md#cloudtrail-lake-manage-costs-pricing-option)。定价选项决定了摄取和存储事件的成本，以及事件数据存储的默认和最长保留期。有关 CloudTrail 定价和管理 Lake 成本的信息，请参阅[Amazon CloudTrail 定价](https://www.amazonaws.cn/cloudtrail/pricing/)和[管理 CloudTrail 湖泊成本](cloudtrail-lake-manage-costs.md)。

将跟踪事件复制到 CloudTrail Lake 事件数据存储时，会根据事件数据存储提取的未压缩数据量产生费用。

将跟踪事件复制到 CloudTrail Lake 时， CloudTrail 解压缩以 gzip（压缩）格式存储的日志，然后将日志中包含的事件复制到您的事件数据存储中。未压缩数据的大小可能大于 S3 的实际存储大小。要对未压缩数据的大小进行总体估计，可以将 S3 存储桶中日志的大小乘以 10。

您可以通过为复制的事件指定更窄的时间范围来降低成本。如果您计划仅使用事件数据存储来查询复制的事件，则可以关闭事件摄取，以免对将来的事件产生费用。有关更多信息，请参阅 [Amazon CloudTrail 定价](https://www.amazonaws.cn/cloudtrail/pricing/)和[管理 CloudTrail 湖泊成本](cloudtrail-lake-manage-costs.md)。

**场景**

下表描述了复制跟踪事件的一些常见场景，以及如何使用控制台完成每个场景。


| 场景 | 如何在控制台中完成此操作？ | 
| --- | --- | 
|  无需摄取新事件即可分析和查询 CloudTrail Lake 中的历史轨迹事件  |  在创建事件数据存储时，创建[新的事件数据存储](https://docs.amazonaws.cn/awscloudtrail/latest/userguide/query-event-data-store-cloudtrail.html#query-event-data-store-cloudtrail-procedure)并选择**复制跟踪事件**选项。创建事件数据存储时，请取消选择**摄取事件**（程序的步骤 15），以确保事件数据存储仅包含跟踪的历史事件，不包含未来事件。  | 
|  将现有跟踪替换为 CloudTrail Lake 事件数据存储  |  使用与您的跟踪相同的事件选择器创建事件数据存储，以确保事件数据存储与跟踪具有相同的覆盖范围。 为避免源跟踪和目标事件数据存储之间存在重复事件，请为复制的事件选择一个早于事件数据存储创建时间的时间范围。 创建事件存储后，您可以关闭跟踪的日志记录，避免产生额外费用。  | 

**Topics**
+ [

## 复制跟踪事件的注意事项
](#cloudtrail-trail-copy-considerations)
+ [

## 复制跟踪事件所需的权限
](#cloudtrail-copy-trail-events-permissions)
+ [

# 使用 CloudTrail 控制台将跟踪事件复制到现有的事件数据存储中
](cloudtrail-copy-trail-events.md)

## 复制跟踪事件的注意事项


复制跟踪事件时，请将以下因素考虑在内。
+  复制跟踪事件时， CloudTrail 使用 S3 [https://docs.amazonaws.cn/AmazonS3/latest/API/API_GetObject.html](https://docs.amazonaws.cn/AmazonS3/latest/API/API_GetObject.html)API 操作检索源 S3 存储桶中的跟踪事件。有些 S3 归档存储类，例如 S3 Glacier Flexible Retrieval、S3 Glacier Deep Archive、S3 Outposts 和 S3 Intelligent-Tiering Deep Archive 层，无法使用 `GetObject` 来访问。要复制存储在这些归档存储类中的跟踪事件，必须先使用 S3 `RestoreObject` 操作还原副本。有关还原已归档的对象的信息，请参阅《Amazon S3 用户指南》**中的[恢复已归档的对象](https://docs.amazonaws.cn/AmazonS3/latest/userguide/restoring-objects.html)。
+  将跟踪事件复制到事件数据存储时， CloudTrail 无论目标事件数据存储的事件类型、高级事件选择器或 Amazon Web Services 区域的配置如何，都会复制所有跟踪事件。
+  在将跟踪事件复制到现有的事件数据存储之前，请确保根据您的应用场景适当配置了事件数据存储的定价选项和保留期。
  + **定价选项：**定价选项决定了摄取和存储事件的成本。有关定价选项的更多信息，请参阅 [Amazon CloudTrail 定价](https://www.amazonaws.cn/cloudtrail/pricing/)和[事件数据存储定价选项](cloudtrail-lake-manage-costs.md#cloudtrail-lake-manage-costs-pricing-option)。
  + **保留期：**保留期限决定事件数据在事件数据存储中保存多长时间。 CloudTrail 仅复制在事件数据存储保留期`eventTime`内的跟踪事件。要确定适当的保留期，请计算要复制的最早事件（以天为单位）和要在事件数据存储中保留这些事件的天数（**保留期** = *oldest-event-in-days* \$1*number-days-to-retain*）的总和。例如，如果您要复制的最早事件已有 45 天，并且您想将事件在事件数据存储中再保留 45 天，则可以将保留期设置为 90 天。
+ 如果您要将跟踪事件复制到事件数据存储中进行调查，并且不想摄取任何未来事件，则可以停止对事件数据存储的摄取。创建事件数据存储时，请取消选择**摄取事件**选项（[程序](query-event-data-store-cloudtrail.md#query-event-data-store-cloudtrail-procedure)的步骤 15），以确保事件数据存储仅包含跟踪的历史事件，不包含未来事件。
+  在复制跟踪事件之前，请禁用附加到源 S3 存储桶的所有访问控制列表 (ACLs)，并更新目标事件数据存储的 S3 存储桶策略。有关更新 S3 存储桶策略的更多信息，请参阅[复制跟踪事件所用的 Amazon S3 存储桶策略](#cloudtrail-copy-trail-events-permissions-s3)。有关禁用的更多信息 ACLs，请参阅[控制对象的所有权和禁 ACLs 用存储桶](https://docs.amazonaws.cn/AmazonS3/latest/userguide/about-object-ownership.html)。
+  CloudTrail 仅复制源 S3 存储桶中的 Gzip 压缩日志文件中的跟踪事件。 CloudTrail 不会从未压缩的日志文件或使用 Gzip 以外的格式压缩的日志文件中复制跟踪事件。
+  为避免源跟踪和目标事件数据存储之间存在重复事件，请为复制的事件选择一个早于事件数据存储创建时间的时间范围。
+  默认情况下， CloudTrail 仅复制 S3 存储桶`CloudTrail`前缀中包含 CloudTrail 的事件和`CloudTrail`前缀中的前缀，而不检查其他 Amazon 服务的前缀。如果要复制其他前缀中包含 CloudTrail 的事件，则必须在复制跟踪事件时选择前缀。
+  要将跟踪事件复制到组织事件数据存储，必须使用该组织的管理账户。您不能使用委托管理员账户将跟踪事件复制到组织事件数据存储。

## 复制跟踪事件所需的权限


在复制跟踪事件之前，请确保您拥有 IAM 角色所需的全部权限。如果您选择现有 IAM 角色来复制跟踪事件，则只需要更新 IAM 角色权限。如果您选择创建新的 IAM 角色，请为该角色 CloudTrail 提供所有必要的权限。

如果源 S3 存储桶使用 KMS 密钥进行数据加密，请确保 KMS 密钥策略 CloudTrail 允许解密存储桶中的数据。如果源 S3 存储桶使用多个 KMS 密钥，则必须更新每个密钥的策略 CloudTrail 以允许解密存储桶中的数据。

**Topics**
+ [

### 复制跟踪事件所需的 IAM 权限
](#cloudtrail-copy-trail-events-permissions-iam)
+ [

### 复制跟踪事件所用的 Amazon S3 存储桶策略
](#cloudtrail-copy-trail-events-permissions-s3)
+ [

### 用于解密源 S3 存储桶中数据的 KMS 密钥政策
](#cloudtrail-copy-trail-events-permissions-kms)

### 复制跟踪事件所需的 IAM 权限


复制跟踪事件时，您可以选择创建新的 IAM 角色，也可以使用现有 IAM 角色。当您选择新的 IAM 角色时， CloudTrail 会创建一个具有所需权限的 IAM 角色，您无需采取任何进一步的操作。

如果您选择现有角色，请确保 IAM 角色的策略 CloudTrail 允许从源 S3 存储桶复制跟踪事件。此部分提供所需 IAM 角色权限和信任策略的示例。

以下示例提供了权限策略，该策略 CloudTrail 允许从源 S3 存储桶复制跟踪事件。将*amzn-s3-demo-bucket*、*myAccountID*、*region**prefix*、和*eventDataStoreId*，替换为适合您的配置的值。*myAccountID*是用于 CloudTrail Lake 的 Amazon 账户 ID，可能与 S3 存储桶的 Amazon 账户 ID 不同。

将*key-region**keyAccountID*、和*keyID*替换为用于加密源 S3 存储桶的 KMS 密钥的值。如果源 S3 存储桶未使用 KMS 密钥进行加密，则可省略 `AWSCloudTrailImportKeyAccess` 语句。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AWSCloudTrailImportBucketAccess",
      "Effect": "Allow",
      "Action": ["s3:ListBucket", "s3:GetBucketAcl"],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket"
      ],
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "myAccountID",
          "aws:SourceArn": "arn:aws:cloudtrail:region:myAccountID:eventdatastore/eventDataStoreId"
         }
       }
    },
    {
      "Sid": "AWSCloudTrailImportObjectAccess",
      "Effect": "Allow",
      "Action": ["s3:GetObject"],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/prefix",
        "arn:aws:s3:::amzn-s3-demo-bucket/prefix/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "myAccountID",
          "aws:SourceArn": "arn:aws:cloudtrail:region:myAccountID:eventdatastore/eventDataStoreId"
         }
       }
    },
    {
      "Sid": "AWSCloudTrailImportKeyAccess",
      "Effect": "Allow",
      "Action": ["kms:GenerateDataKey","kms:Decrypt"],
      "Resource": [
        "arn:aws:kms:key-region:keyAccountID:key/keyID"
      ]
    }
  ]
}
```

以下示例提供了 IAM 信任策略，该策略 CloudTrail 允许代入 IAM 角色从源 S3 存储桶复制跟踪事件。将*myAccountID**region*、和*eventDataStoreArn*，替换为适合您的配置的值。*myAccountID*是用于 CloudTrail Lake 的 Amazon Web Services 账户 ID，可能与 S3 存储桶的 Amazon 账户 ID 不同。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudtrail.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "myAccountID",
          "aws:SourceArn": "arn:aws:cloudtrail:region:myAccountID:eventdatastore/eventDataStoreId"
        }
      }
    }
  ]
}
```

### 复制跟踪事件所用的 Amazon S3 存储桶策略


默认情况下，Amazon S3 存储桶和对象都是私有的。仅资源所有者（创建存储桶的 Amazon 账户）能够访问存储桶及其包含的对象。资源所有者可以通过编写访问策略来向其他资源和用户授予访问权。

在复制跟踪事件之前，必须更新 S3 存储桶策略 CloudTrail 以允许从源 S3 存储桶复制跟踪事件。

您可以将以下语句添加到 S3 存储桶策略，以授予这些权限。将*roleArn*和*amzn-s3-demo-bucket*替换为适合您的配置的值。

****

```
{
  "Sid": "AWSCloudTrailImportBucketAccess",
  "Effect": "Allow",
  "Action": [
    "s3:ListBucket",
    "s3:GetBucketAcl",
    "s3:GetObject"
  ],
  "Principal": {
    "AWS": "roleArn"
  },
  "Resource": [
    "arn:aws:s3:::amzn-s3-demo-bucket",
    "arn:aws:s3:::amzn-s3-demo-bucket/*"
  ]
},
```

### 用于解密源 S3 存储桶中数据的 KMS 密钥政策


如果源 S3 存储桶使用 KMS 密钥进行数据加密，请确保 KMS 密钥策略 CloudTrail 提供从启用了 SSE-KMS 加密的 S3 存储桶复制跟踪事件所需的`kms:Decrypt`和`kms:GenerateDataKey`权限。如果源 S3 存储桶使用多个 KMS 密钥，则必须更新每个密钥的策略。更新 KMS 密钥策略 CloudTrail 允许解密源 S3 存储桶中的数据，运行验证检查以确保事件符合 CloudTrail标准，并将事件复制到 CloudTrail Lake 事件数据存储中。

以下示例提供了 KMS 密钥策略，该策略 CloudTrail 允许解密源 S3 存储桶中的数据。将*roleArn*、*amzn-s3-demo-bucket*、*myAccountID**region*、和*eventDataStoreId*，替换为适合您的配置的值。*myAccountID*是用于 CloudTrail Lake 的 Amazon 账户 ID，可能与 S3 存储桶的 Amazon 账户 ID 不同。

```
{
  "Sid": "AWSCloudTrailImportDecrypt",
  "Effect": "Allow",
  "Action": [
          "kms:Decrypt",
          "kms:GenerateDataKey"
  ],
  "Principal": {
    "AWS": "roleArn"
  },
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-bucket/*"
    },
    "StringEquals": {
      "aws:SourceAccount": "myAccountID",
      "aws:SourceArn": "arn:aws:cloudtrail:region:myAccountID:eventdatastore/eventDataStoreId"
    }
  }
}
```

# 使用 CloudTrail 控制台将跟踪事件复制到现有的事件数据存储中


按照以下程序将跟踪事件复制到事件数据存储中。有关如何创建新的事件数据存储的信息，请参阅[使用控制台为事件创建 CloudTrail 事件数据存储](query-event-data-store-cloudtrail.md)。

**注意**  
 在将跟踪事件复制到现有的事件数据存储之前，请确保根据您的应用场景适当配置了事件数据存储的定价选项和保留期。  
**定价选项：**定价选项决定了摄取和存储事件的成本。有关定价选项的更多信息，请参阅 [Amazon CloudTrail 定价](https://www.amazonaws.cn/cloudtrail/pricing/)和[事件数据存储定价选项](cloudtrail-lake-manage-costs.md#cloudtrail-lake-manage-costs-pricing-option)。
**保留期：**保留期限决定事件数据在事件数据存储中保存多长时间。 CloudTrail 仅复制在事件数据存储保留期`eventTime`内的跟踪事件。要确定适当的保留期，请计算要复制的最早事件（以天为单位）和要在事件数据存储中保留这些事件的天数（**保留期** = *oldest-event-in-days* \$1*number-days-to-retain*）的总和。例如，如果您要复制的最早事件已有 45 天，并且您想将事件在事件数据存储中再保留 45 天，则可以将保留期设置为 90 天。

**要将跟踪事件复制到事件数据存储**

1. 登录 Amazon Web Services 管理控制台 并打开 CloudTrail 控制台，网址为[https://console.aws.amazon.com/cloudtrail/](https://console.amazonaws.cn/cloudtrail/)。

1. 在 CloudTrail 控制台的左侧导航窗格中选择 T **rail** s。

1. 在**跟踪**页面上，选择跟踪，然后选择**将事件复制到 Lake**。如果跟踪的源 S3 存储桶使用 KMS 密钥进行数据加密，请确保 KMS 密钥策略 CloudTrail 允许解密存储桶中的数据。如果源 S3 存储桶使用多个 KMS 密钥，则必须更新每个密钥的策略 CloudTrail 以允许解密存储桶中的数据。有关更新 KMS 密钥政策的更多信息，请参阅[用于解密源 S3 存储桶中数据的 KMS 密钥政策](cloudtrail-copy-trail-to-lake.md#cloudtrail-copy-trail-events-permissions-kms)。

1.  （可选）默认情况下， CloudTrail 仅复制 S3 存储桶`CloudTrail`前缀中包含 CloudTrail 的事件和`CloudTrail`前缀中的事件，而不检查其他 Amazon 服务的前缀。如果要复制其他前缀中包含 CloudTrail 的事件，**请选择 Enter S3 URI**，然后选择 **Browse S3** 浏览到该前缀。

   S3 存储桶策略必须授予对复制跟踪事件的 CloudTrail 访问权限。有关更新 S3 存储桶策略的更多信息，请参阅[复制跟踪事件所用的 Amazon S3 存储桶策略](cloudtrail-copy-trail-to-lake.md#cloudtrail-copy-trail-events-permissions-s3)。

1. **在 “指定事件的时间范围**” 中，选择复制事件的时间范围。 CloudTrail 在尝试复制跟踪事件之前，请检查前缀和日志文件名以验证该名称是否包含所选开始日期和结束日期之间的日期。您可以选择一个**相对范围**或者**绝对范围**。为避免源跟踪和目标事件数据存储之间存在重复事件，请选择一个早于事件数据存储创建时间的时间范围。
**注意**  
CloudTrail 仅复制在事件数据存储保留期`eventTime`内的跟踪事件。例如，如果事件数据存储的保留期为 90 天，则 CloudTrail 不会复制任何`eventTime`超过 90 天的跟踪事件。
   + 如果选择 “**相对范围**”，则可以选择复制过去 6 个月、1 年、2 年、7 年或自定义范围内记录的事件。 CloudTrail 复制选定时间段内记录的事件。
   + 如果选择 “**绝对范围**”，则可以选择特定的开始和结束日期。 CloudTrail 复制在所选开始日期和结束日期之间发生的事件。

1. 对于**送达位置**，请从下拉列表中选择目标事件数据存储。

1. 对于**权限**，请从以下 IAM 角色选项中进行选择。如果您选择现有的 IAM 角色，请验证 IAM 角色策略是否提供了必要的权限。有关更新 IAM 角色权限的更多信息，请参阅[复制跟踪事件所需的 IAM 权限](cloudtrail-copy-trail-to-lake.md#cloudtrail-copy-trail-events-permissions-iam)。
   + 选择**创建新角色（推荐）**以创建新的 IAM 角色。在**输入 IAM 角色名称**中，输入角色的名称。 CloudTrail 会自动为这个新角色创建必要的权限。
   + 选择**使用自定义 IAM 角色 ARN**以使用未列出的自定义 IAM 角色。对于**输入 IAM 角色 ARN**，输入 IAM ARN。
   + 从下拉列表中选择现有的 IAM 角色。

1. 选择**复制事件**。

1. 系统将提示您确认复制。如果您已准备好确认，请选择**将跟踪事件复制到 Lake**，然后选择**复制事件**。

1. 在**复制详细信息**页面中，您可以查看复制状态并检查是否复制失败。跟踪事件复制完成后，如果复制未出错，则**复制状态**将设置为**已完成**，否则如果出错了，则设置为**失败**。
**注意**  
事件复制详细信息页面上显示的详细信息不是实时的。诸如**复制的前缀**之类的详细信息的实际值可能高于页面上显示的值。 CloudTrail 在事件副本的过程中以增量方式更新详细信息。

1. 如果**复制状态**为**失败**，则要先修复**复制失败**中显示的所有错误，然后选择**重试复制**。当您重试复制时，会在出现故障的位置 CloudTrail 恢复副本。

有关查看跟踪事件复制详细信息的更多信息，请参阅[使用 CloudTrail 控制台查看活动副本详细信息](copy-trail-details.md)。