

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

# 创建 DataSync 任务报告
<a name="creating-task-report"></a>

AWS DataSync 任务报告只能是任务执行的摘要，也可以是关于 DataSync 尝试传输、跳过、验证和删除的内容的一组详细报告。

## 先决条件
<a name="setting-up-task-report"></a>

在能够创建任务报告之前，您必须先执行以下操作。

**Topics**
+ [为您的任务报告创建 S3 存储桶](#setting-up-task-report-create-bucket)
+ [允许将任务报告上传 DataSync 到您的 S3 存储桶](#task-report-access)

### 为您的任务报告创建 S3 存储桶
<a name="setting-up-task-report-create-bucket"></a>

如果您还没有 [S3 存储桶，请创建一个 DataSync 可以在其中上传任务报告的 S3 存储桶](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)。报告存储在 S3 Standard 存储类中。

我们建议在存储桶执行以下操作：
+ 如果您计划将数据传输到 S3 存储桶，当您[禁用**保留已删除文件**选项](configure-metadata.md)时，不要使用相同的存储桶上传任务报告。否则，每次执行任务时 DataSync 都会删除之前的所有任务报告，因为这些报告不存在于您的来源位置。
+ 为避免复杂的访问权限设置，请确保您的任务报告存储桶 AWS 账户 与您的 DataSync 转移任务位于同一区域中。

### 允许将任务报告上传 DataSync 到您的 S3 存储桶
<a name="task-report-access"></a>

您必须配置允许将任务报告上传 DataSync 到 S3 存储桶的 AWS Identity and Access Management (IAM) 角色。

在 DataSync 控制台中，您可以创建一个 IAM 角色，该角色在大多数情况下会自动包含将任务报告上传到存储桶的权限。请记住，从最低权限的角度来看，这个自动生成的角色可能无法满足您的需求。如果您的存储桶使用客户托管 AWS Key Management Service (AWS KMS) 密钥 (SSE-KMS) 加密，则此角色也将不起作用。在上述情况下，您可以手动创建角色，前提是该角色至少要完成以下操作：
+ [防止角色受信任实体中跨服务的代理混淆问题](https://docs.aws.amazon.com/datasync/latest/userguide/cross-service-confused-deputy-prevention.html)。

  以下完整示例显示了如何使用`aws:SourceArn`和全`aws:SourceAccount`局条件上下文键来防止混淆副手问题 DataSync。

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "Service": "datasync.amazonaws.com"
              },
              "Action": "sts:AssumeRole",
              "Condition": {
                  "StringEquals": {
                  "aws:SourceAccount": "123456789012"
                  },
                  "ArnLike": {
                  "aws:SourceArn": "arn:aws:datasync:us-east-1:123456789012:*"
                  }
              }
          }
      ]
  }
  ```

------
+ 允许将任务报告上传 DataSync 到您的 S3 存储桶。

  以下示例通过仅包含存储桶中特定前缀 (`reports/`) 的 `s3:PutObject` 操作来实现此目的。

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

****  

  ```
  {
          "Version":"2012-10-17",		 	 	 
          "Statement": [{
              "Action": [
                  "s3:PutObject"
              ],
              "Effect": "Allow",
              "Resource": "arn:aws:s3:::your-task-reports-bucket/reports/*"
          }]
  }
  ```

------
+ 如果您的 S3 存储桶使用客户托管的 SSE-KMS 密钥进行加密，则该[密钥的策略](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html)必须包含 DataSync 用于访问该存储桶的 IAM 角色。

  有关更多信息，请参阅 [使用服务器端加密访问 S3 存储桶](create-s3-location.md#create-s3-location-encryption)。

## 创建仅限摘要的任务报告
<a name="creating-task-report-summary"></a>

[只有在创建任务、开始任务或更新 DataSync任务时，您才能配置包含摘要](task-reports.md#task-report-types-summary)的任务报告。

以下步骤说明如何在创建任务时配置仅摘要任务报告。

### 使用控制 DataSync 台
<a name="creating-task-report-console"></a>

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

1. 在左侧导航窗格中，展开**数据传输**，然后选择**任务**，然后选择**创建任务**。

1. 配置您任务的源位置和目标位置。

   有关更多信息，请参阅 [我可以在哪里传输我的数据 AWS DataSync？](working-with-locations.md)。

1. 向下滚动到**任务报告**部分。对于**报告类型**，选择**仅摘要**。

1. 对于**用于报告的 S3 存储**桶，请选择 DataSync 要在其中上传任务报告的 S3 存储桶。
**提示**  
如果您计划将数据传输到 S3 存储桶，当您[禁用**保留已删除文件**选项](configure-metadata.md)时，不要使用相同的存储桶上传任务报告。否则，每次执行任务时 DataSync 都会删除之前的所有任务报告，因为这些报告不存在于您的来源位置。

1. 在 **“文件夹” 中**，输入将报告 DataSync 上传到 S3 存储桶时用于任务报告的前缀（例如，**reports/**）。

   确保前缀末尾包含适当的分隔符。分隔符通常使用正斜杠 (`/`)。有关更多信息，请参阅*Amazon S3 用户指南*中的[使用前缀组织对象](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html)。

1. 对于 **IAM 角色**，执行以下操作之一：
   + 选择 “**自动生成**” 可 DataSync自动创建具有访问 S3 存储桶所需权限的 IAM 角色。

     如果 DataSync 之前为此 S3 存储桶创建了 IAM 角色，则默认情况下会选择该角色。
   + 选择您创建的自定义 IAM 角色。

     在某些情况下，您可能需要自己创建角色。有关更多信息，请参阅 [允许将任务报告上传 DataSync 到您的 S3 存储桶](#task-report-access)。
**重要**  
如果您的 S3 存储桶使用客户托管的 SSE-KMS 密钥进行加密，则该密钥的策略必须包含 DataSync 用于访问该存储桶的 IAM 角色。  
有关更多信息，请参阅 [使用服务器端加密访问 S3 存储桶](create-s3-location.md#create-s3-location-encryption)。

1. 完成任务的创建，然后[启动任务](run-task.md)以开始传输数据。

传输完成后，您可以[查看任务报告](task-report-viewing.md)。

### 使用 AWS CLI
<a name="creating-task-report-cli"></a>

1. 复制以下 `create-task` AWS Command Line Interface (AWS CLI) 命令：

   ```
   aws datasync create-task \
     --source-location-arn arn:aws:datasync:us-east-1:123456789012:location/loc-12345678abcdefgh \
     --destination-location-arn arn:aws:datasync:us-east-1:123456789012:location/loc-abcdefgh12345678 \
     --task-report-config '{
       "Destination":{
         "S3":{
           "Subdirectory":"reports/",
           "S3BucketArn":"arn:aws:s3:::your-task-reports-bucket",
           "BucketAccessRoleArn":"arn:aws:iam::123456789012:role/bucket-iam-role"
           }
       },
       "OutputType":"SUMMARY_ONLY"  
     }'
   ```

1. 对于 `--source-location-arn`参数，指定传输中源位置的 Amazon 资源名称（ARN）。`us-east-1`替换为相应的 AWS 账户 编号 AWS 区域，`123456789012`替换为相应的来源位置 ID，然后`12345678abcdefgh`替换为相应的来源位置 ID。

1. 对于 `--destination-location-arn` 参数，请指定传输中目标位置的 ARN。`us-east-1`替换为相应的数字 AWS 区域，`123456789012`替换为相应的 AWS 账户 数字，然后`abcdefgh12345678`替换为相应的目标位置 ID。

1. 对于 `--task-report-config` 参数，请执行以下操作：
   + `Subdirectory`— `reports/` 替换为您的 S3 存储桶中 DataSync 要上传任务报告的前缀。

     确保前缀末尾包含适当的分隔符。分隔符通常使用正斜杠 (`/`)。有关更多信息，请参阅*Amazon S3 用户指南*中的[使用前缀组织对象](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html)。
   + `S3BucketArn` — 指定您想要用于上传任务报告的 S3 存储桶的 ARN。
**提示**  
如果您计划将数据传输到 S3 存储桶，当您[禁用**保留已删除文件**选项](configure-metadata.md)时，不要使用相同的存储桶上传任务报告。否则，每次执行任务时 DataSync 都会删除之前的所有任务报告，因为这些报告不存在于您的来源位置。
   + `BucketAccessRoleArn`— 指定允许将任务报告上传 DataSync 到您的 S3 存储桶的 IAM 角色。

     有关更多信息，请参阅 [允许将任务报告上传 DataSync 到您的 S3 存储桶](#task-report-access)。
**重要**  
如果您的 S3 存储桶使用客户托管的 SSE-KMS 密钥进行加密，则该密钥的策略必须包含 DataSync 用于访问该存储桶的 IAM 角色。  
有关更多信息，请参阅 [使用服务器端加密访问 S3 存储桶](create-s3-location.md#create-s3-location-encryption)。
   + `OutputType` — 指定 `SUMMARY_ONLY`。

     有关更多信息，请参阅 [仅摘要任务报告](task-reports.md#task-report-types-summary)。

1. 运行 `create-task` 命令来创建您的任务。

   您会收到如下所示的响应，其中显示了您创建的任务的 ARN。您需要此 ARN 才能运行 `start-task-execution` 命令。

   ```
   {
       "TaskArn": "arn:aws:datasync:us-east-1:123456789012:task/task-12345678abcdefgh"
   }
   ```

1. 复制以下 `start-task-execution` 命令。

   ```
   aws datasync-task-report start-task-execution \
     --task-arn arn:aws:datasync:us-east-1:123456789012:task/task-12345678abcdefgh
   ```

1. 对于 `--task-arn` 参数，请指定您正在启动的任务的 ARN。使用您在运行 `create-task` 命令时收到的 ARN。

1. 运行 `start-task-execution` 命令。

传输完成后，您可以[查看任务报告](task-report-viewing.md)。

## 创建标准任务报告
<a name="creating-task-report-standard"></a>

您可以在创建[任务、启动任务或更新 DataSync 任务时配置标准任务报告](task-reports.md#task-report-types-standard)。

以下步骤说明在创建任务时如何配置标准任务报告。

### 使用控制 DataSync 台
<a name="ccreating-task-report-console"></a>

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

1. 在左侧导航窗格中，展开**数据传输**，然后选择**任务**，然后选择**创建任务**。

1. 配置您任务的源位置和目标位置。

   有关更多信息，请参阅 [我可以在哪里传输我的数据 AWS DataSync？](working-with-locations.md)。

1. 向下滚动到**任务报告**部分。对于**报告类型**，选择**标准报告**。

1. 对于**报告级别**，请选择下列选项之一：
   + **仅限错误**-您的任务报告仅包含 DataSync 尝试传输、跳过、验证和删除的内容的问题。
   + **成功和错误**-您的任务报告包括 DataSync 成功传输、跳过、验证和删除的内容以及未成功传输的内容。
   + **自定义**：允许您选择仅查看错误或仅查看任务报告特定方面的成功和错误。

     例如，您可以为已传输的文件列表选择**成功和错误**，但为报告的其余部分选择**仅错误**。

1. 如果您要传输到使用对象版本控制的 S3 存储桶，并且希望您的报告中包含每个已传输对象的新版本，请选中**包含 Amazon S3** 对象版本。

1. 对于**用于报告的 S3 存储**桶，请选择 DataSync 要在其中上传任务报告的 S3 存储桶。
**提示**  
如果您计划将数据传输到 S3 存储桶，当您[禁用**保留已删除文件**选项](configure-metadata.md)时，不要使用相同的存储桶上传任务报告。否则，每次执行任务时 DataSync 都会删除之前的所有任务报告，因为这些报告不存在于您的来源位置。

1. 在 **“文件夹” 中**，输入将报告 DataSync 上传到 S3 存储桶时用于任务报告的前缀（例如，**reports/**）。确保前缀末尾包含适当的分隔符。分隔符通常使用正斜杠 (`/`)。有关更多信息，请参阅*Amazon S3 用户指南*中的[使用前缀组织对象](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html)。

1. 对于 **IAM 角色**，执行以下操作之一：
   + 选择 “**自动生成**” 可 DataSync自动创建具有访问 S3 存储桶所需权限的 IAM 角色。

     如果 DataSync 之前为此 S3 存储桶创建了 IAM 角色，则默认情况下会选择该角色。
   + 选择您创建的自定义 IAM 角色。

     在某些情况下，您可能需要自己创建角色。有关更多信息，请参阅 [允许将任务报告上传 DataSync 到您的 S3 存储桶](#task-report-access)。
**重要**  
如果您的 S3 存储桶使用客户托管的 SSE-KMS 密钥进行加密，则该密钥的策略必须包含 DataSync 用于访问该存储桶的 IAM 角色。  
有关更多信息，请参阅 [使用服务器端加密访问 S3 存储桶](create-s3-location.md#create-s3-location-encryption)。

1. 完成任务的创建并[启动任务](run-task.md)以开始传输数据。

传输完成后，您可以[查看任务报告](task-report-viewing.md)。

### 使用 AWS CLI
<a name="creating-task-report-cli"></a>

1. 复制以下 `create-task` 命令：

   ```
   aws datasync create-task \
     --source-location-arn arn:aws:datasync:us-east-1:123456789012:location/loc-12345678abcdefgh \
     --destination-location-arn arn:aws:datasync:us-east-1:123456789012:location/loc-abcdefgh12345678 \
     --task-report-config '{
       "Destination":{
         "S3":{
           "Subdirectory":"reports/",
           "S3BucketArn":"arn:aws:s3:::your-task-reports-bucket",
           "BucketAccessRoleArn":"arn:aws:iam::123456789012:role/bucket-iam-role"
           }
       },
       "OutputType":"STANDARD",
       "ReportLevel":"level-of-detail",
       "ObjectVersionIds":"include-or-not"    
     }'
   ```

1. 对于（`--source-location-arn` 参数），指定传输中源位置的 ARN。`us-east-1`替换为相应的 AWS 账户 编号 AWS 区域，`123456789012`替换为相应的来源位置 ID，然后`12345678abcdefgh`替换为相应的来源位置 ID。

1. 对于 `--destination-location-arn` 参数，请指定传输中目标位置的 ARN。`us-east-1`替换为相应的数字 AWS 区域，`123456789012`替换为相应的 AWS 账户 数字，然后`abcdefgh12345678`替换为相应的目标位置 ID。

1. 对于 `--task-report-config` 参数，请执行以下操作：
   + `Subdirectory`— `reports/` 替换为您的 S3 存储桶中 DataSync 要上传任务报告的前缀。确保前缀末尾包含适当的分隔符。分隔符通常使用正斜杠 (`/`)。有关更多信息，请参阅*Amazon S3 用户指南*中的[使用前缀组织对象](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html)。
   + `S3BucketArn` — 指定您想要用于上传任务报告的 S3 存储桶的 ARN。
**提示**  
如果您计划将数据传输到 S3 存储桶，当您[禁用**保留已删除文件**选项](configure-metadata.md)时，不要使用相同的存储桶上传任务报告。否则，每次执行任务时 DataSync 都会删除之前的所有任务报告，因为这些报告不存在于您的来源位置。
   + `BucketAccessRoleArn`— 指定允许将任务报告上传 DataSync 到您的 S3 存储桶的 IAM 角色。

     有关更多信息，请参阅 [允许将任务报告上传 DataSync 到您的 S3 存储桶](#task-report-access)。
**重要**  
如果您的 S3 存储桶使用客户托管的 SSE-KMS 密钥进行加密，则该密钥的策略必须包含 DataSync 用于访问该存储桶的 IAM 角色。  
有关更多信息，请参阅 [使用服务器端加密访问 S3 存储桶](create-s3-location.md#create-s3-location-encryption)。
   + `OutputType`：指定 `STANDARD` 报告。

     有关详细信息，请参阅[标准任务报告](task-reports.md#task-report-types-standard)任务报告类型。
   + （可选）`ReportLevel`：指定您想要在您的报告中包含 `ERRORS_ONLY`（默认）还是 `SUCCESSES_AND_ERRORS`。
   + （可选）`ObjectVersionIds`： 如果您要传输到使用对象版本控制的 S3 存储桶，且您不希望再报告中包含每个已传输对象的新版本，请指定 `NONE`。

     默认情况下，此选项设置为 `INCLUDE`。
   + （可选）`Overrides`：自定义您的报告的特定 `ReportLevel` 方面。

     例如，您可能想查看`SUCCESSES_AND_ERRORS`目标位置中 DataSync删除的内容的列表，但您想要`ERRORS_ONLY`查看其他所有内容。在此示例中，您可以在 `--task-report-config` 参数中添加以下 `Overrides` 选项：

     ```
     "Overrides":{
       "Deleted":{
         "ReportLevel":"SUCCESSES_AND_ERRORS"
       }
     }
     ```

     如果您不使用 `Overrides`，则整个报告将使用您指定的 `ReportLevel`。

1. 运行 `create-task` 命令来创建您的任务。

   您会收到如下所示的响应，其中显示了您创建的任务的 ARN。您需要此 ARN 才能运行 `start-task-execution` 命令。

   ```
   {
       "TaskArn": "arn:aws:datasync:us-east-1:123456789012:task/task-12345678abcdefgh"
   }
   ```

1. 复制以下 `start-task-execution` 命令。

   ```
   aws datasync-task-report start-task-execution \
     --task-arn arn:aws:datasync:us-east-1:123456789012:task/task-12345678abcdefgh
   ```

1. 对于 `--task-arn` 参数，请指定您正在运行的任务的 ARN。使用您在运行 `create-task` 命令时收到的 ARN。

1. 运行 `start-task-execution` 命令。

传输完成后，您可以[查看任务报告](task-report-viewing.md)。