

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

# 使用任务报告监控您的数据传输
<a name="task-reports"></a>

*任务报告*可提供详细信息，说明在任务执行期间， AWS DataSync 尝试传输、跳过、验证和删除的内容。有关更多信息，请参阅 [如何 DataSync 传输文件、对象和目录](how-datasync-transfer-works.md#transferring-files)。

任务报告以 JSON 格式生成。您可以自定义报告的详细程度：
+ [仅摘要任务报告](#task-report-types-summary)可为您提供有关任务执行的必要详细信息，例如传输了多少文件以及是否 DataSync 可以验证这些文件的数据完整性。
+ [标准任务报告](#task-report-types-standard)包括摘要和详细报告，其中列出了 DataSync尝试传输、跳过、验证和删除的每个文件、对象或文件夹。使用标准任务报告，您还可以指定[报告级别](#task-report-level)，以仅显示任务执行的错误，或其成功和错误。

## 使用案例
<a name="task-reports-use-cases"></a>

下面是任务报告可以帮助您对数据传输进行监控和审计的一些情境：
+ 迁移数百万个文件时，请快速识别传输 DataSync 有问题的文件。
+ 验证文件的 chain-of-custody进程。

## 仅摘要任务报告
<a name="task-report-types-summary"></a>

仅包含任务执行摘要的报告包括以下详细信息：
+  AWS 账户 运行任务执行的
+ 源和目标位置
+ 跳过、传输、验证和删除的文件、对象和文件夹总数
+ 传输的总字节（逻辑字节和物理字节）
+ 任务执行是否完成、取消或遇到错误
+ 开始和结束时间（包括传输的总时间）
+ 任务的设置（例如带宽限制、数据完整性验证和其他 DataSync 传输选项）

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

标准任务报告包括任务执行[摘要](#task-report-types-summary)，以及有关 DataSync 尝试传输、跳过、验证和删除的内容的详细报告。

**Topics**
+ [报告级别](#task-report-level)
+ [传输报告](#task-report-types-transferred)
+ [跳过报告](#task-report-types-skipped)
+ [验证报告](#task-report-types-verified)
+ [删除报告](#task-report-types-deleted)

### 报告级别
<a name="task-report-level"></a>

使用标准任务报告，您可以选择以下报告级别之一：
+ 仅错误
+ 成功与错误（本质上是任务执行过程中所发生一切情况的列表）

例如，您可能想查看哪些文件在传输过程中成功 DataSync 跳过，哪些文件没有成功跳过。成功 DataSync 跳过的文件可能是您故意 DataSync 要排除的文件，因为它们已经存在于您的目标位置。但是，例如，跳过的错误可能表明该用户 DataSync 没有读取文件的正确权限。

### 传输报告
<a name="task-report-types-transferred"></a>

任务执行期间 DataSync 尝试传输的文件、对象和目录的列表。传输报告包括以下详细信息：
+ 传输数据的路径
+ 传输数据的内容（内容、元数据或两者兼而有之）
+ 元数据，包括数据类型、内容大小（仅限对象和文件）等
+ 项目被转移的时间
+ 对象版本（当目标是启用了版本控制的 Amazon S3 存储桶时）
+ 目标中的某些内容是否被覆盖
+ 项目是否传输成功

**注意**  
在 S3 存储桶之间移动数据时，您在[源位置](create-s3-location.md)中指定的前缀可能会显示在您的报告（或 Amazon CloudWatch 日志中）中，即使该前缀不作为目标位置中的对象存在。（在 DataSync 控制台中，您可能还会注意到此前缀显示为已跳过或已验证的数据。）

### 跳过报告
<a name="task-report-types-skipped"></a>

在您的源位置 DataSync 找到但未尝试传输的文件、对象和目录的列表。 DataSync 跳过数据的原因可能取决于多种因素，例如如何配置任务和存储系统权限。下面是一些示例：
+ 一个文件存在于源位置和目标位置。自上次执行任务以来，源位置的文件未被修改。由于您[只传输已更改的数据，](configure-metadata.md#task-option-transfer-mode)因此下次运行任务时 DataSync 不会传输该文件。
+ 两个位置都存在的某个对象在源位置发生变化。运行任务时，会 DataSync 跳过目标中的此对象，因为您的任务不会[覆盖目标中的数据](configure-metadata.md#task-option-file-object-handling)。
+ DataSync 跳过源代码中使用[存档存储类](create-s3-location.md#using-storage-classes)且未恢复的对象。您必须恢复已存档的对象 DataSync 才能读取它。
+ DataSync 跳过源位置中的文件、对象或目录，因为它无法读取它。如果发生这种情况但不是预料之中的，请检查存储空间的访问权限，并确保该权限 DataSync 可以读取跳过的内容。

跳过报告包括以下详细信息：
+ 已跳过数据的路径
+ 跳过某件项目的时间
+ 被跳过的原因
+ 项目是否成功跳过

**注意**  
如果跳过报告包含成功和错误，您将任务配置为[只传输已更改的数据](configure-metadata.md)，并且源数据已存在于目标位置，那么跳过报告可能会很大。

### 验证报告
<a name="task-report-types-verified"></a>

在任务执行期间 DataSync 试图验证完整性的文件、对象和目录的列表。已验证数据的报告包括以下详细信息：
+ 已验证数据的路径
+ 项目得到验证的时间
+ 验证错误的原因（如果有）
+ 源校验和目标 SHA256 校验和（仅限文件）
+ 项目是否成功验证

请注意有关验证报告的以下注意事项：
+ 当您将任务配置为[仅验证传输的数据](configure-data-verification-options.md)时，在某些情况下 DataSync 不验证目录或无法传输的文件或对象。无论哪种情况，都 DataSync 不会在此报告中包含未经验证的数据。
+ 如果使用[增强模式](choosing-task-mode.md)，则在传输大型对象时，验证花费的时间可能会比平时更长。

### 删除报告
<a name="task-report-types-deleted"></a>

任务执行期间删除的文件、目录和对象的列表。 DataSync 仅当[您将任务配置为](configure-metadata.md)删除目标位置中不在源中的数据时，才会生成此报告。已删除数据的报告包括以下详细信息：
+ 已删除数据的路径
+ 项目是否成功删除
+ 删除项目的时间

## 示例任务报告
<a name="task-report-example"></a>

任务报告的详细程度由您决定。下面是一些采用以下配置的传输数据报告示例：
+ **报告类型**：标准
+ **报告级别**：成功和错误

**注意**  
报告使用 ISO-8601 标准作为时间戳格式。时间采用 UTC 格式，以纳秒为单位。这种行为不同于其他一些任务报告指标的测量方式。例如，[任务执行细节](https://docs.aws.amazon.com/datasync/latest/userguide/API_TaskExecutionResultDetail.html)（例如 `TransferDuration` 和 `VerifyDuration` ）以毫秒为单位进行测量。

增强模式任务报告使用的架构与基本模式任务报告略有不同。根据所用[任务模式](choosing-task-mode.md)，以下示例有助于您了解相应报告将呈现哪些内容。

**具有成功状态的传输数据报告示例**  
以下报告显示名为 `object1.txt` 的对象的传输取得成功。  

```
{
    "TaskExecutionId": "exec-abcdefgh12345678",
    "Transferred": [{
        "RelativePath": "object1.txt",
        "SourceMetadata": {
            "Type": "Object",
            "ContentSize": 6,
            "LastModified": "2024-10-04T14:40:55Z",
            "SystemMetadata": {
                "ContentType": "binary/octet-stream",
                "ETag": "\"9b2d7e1f8054c3a2041905d0378e6f14\"",
                "ServerSideEncryption": "AES256"
            },
            "UserMetadata": {},
            "Tags": []
        },
        "Overwrite": "False",
        "DstS3VersionId": "jtqRtX3jN4J2G8k0sFSGYK1f35KqpAVP",
        "TransferTimestamp": "2024-10-04T14:48:39.748862183Z",
        "TransferType": "CONTENT_AND_METADATA",
        "TransferStatus": "SUCCESS"
    }]
}
```

```
{
    "TaskExecutionId": "exec-abcdefgh12345678",
    "Transferred": [{
        "RelativePath": "/object1.txt",
        "SrcMetadata": {
            "Type": "Regular",
            "ContentSize": 6,
            "Mtime": "2022-01-07T16:59:26.136114671Z",
            "Atime": "2022-01-07T16:59:26.136114671Z",
            "Uid": 0,
            "Gid": 0,
            "Mode": "0644"
        },
        "Overwrite": "False",
        "DstS3VersionId": "jtqRtX3jN4J2G8k0sFSGYK1f35KqpAVP",
        "TransferTimestamp": "2022-01-07T16:59:45.747270957Z",
        "TransferType": "CONTENT_AND_METADATA",
        "TransferStatus": "SUCCESS"
    }]
}
```

**具有错误状态的传输数据报告示例**  
以下报告提供了何时 DataSync 无法传输名为的对象的示例`object1.txt`。  
此报告显示`object1.txt`由于 AWS KMS 权限问题而 DataSync 无法访问名为的对象。（如果您遇到此类错误，请参阅 [使用服务器端加密访问 S3 存储桶](create-s3-location.md#create-s3-location-encryption)。）  

```
{
    "TaskExecutionId": "exec-abcdefgh12345678",
    "Transferred": [{
        "RelativePath": "object1.txt",
        "SourceMetadata": {
            "Type": "Object",
            "ContentSize": 6,
            "LastModified": "2022-10-07T20:48:32Z",
            "SystemMetadata": {
                "ContentType": "binary/octet-stream",
                "ETag": "\"3a7c0b2f1d9e5c4a6f8b2e0d1c9f7a3b2\"",
                "ServerSideEncryption": "AES256"
            },
            "UserMetadata": {},
            "Tags": []
        },
        "Overwrite": "False",
        "TransferTimestamp": "2022-10-09T16:05:11.134040717Z",
        "TransferType": "CONTENT_AND_METADATA",
        "TransferStatus": "FAILED",
        "ErrorCode": "AccessDenied",
        "ErrorDetail": "User: arn:aws:sts::111222333444:assumed-role/AWSDataSyncS3Bucket/AwsSync-loc-0b3017fc4ba4a2d8d is not authorized to perform: kms:GenerateDataKey on resource: arn:aws:kms:us-east-1:111222333444:key/1111aaaa-22bb-33cc-44d-5555eeee6666 because no identity-based policy allows the kms:GenerateDataKey action"
    }]
}
```
此报告显示，由于 S3 存储桶权限问题，名为 `object1.txt` 的对象未传输。（如果您遇到此类错误，请参阅 [提供 DataSync 对 S3 存储桶的访问权限](create-s3-location.md#create-s3-location-access)。）  

```
{
    "TaskExecutionId": "exec-abcdefgh12345678",
    "Transferred": [{
        "RelativePath": "/object1.txt",
        "SrcMetadata": {
            "Type": "Regular",
            "ContentSize": 6,
            "Mtime": "2022-01-07T16:59:26.136114671Z",
            "Atime": "2022-01-07T16:59:26.136114671Z",
            "Uid": 0,
            "Gid": 0,
            "Mode": "0644"
        },
        "Overwrite": "False",
        "DstS3VersionId": "jtqRtX3jN4J2G8k0sFSGYK1f35KqpAVP",
        "TransferTimestamp": "2022-01-07T16:59:45.747270957Z",
        "TransferType": "CONTENT_AND_METADATA",
        "TransferStatus": "FAILED",
        "FailureReason": "S3 Get Object Failed",
        "FailureCode": 40974
    }]
}
```

## 限制
<a name="task-report-limitations"></a>
+ 单个任务报告大小不能超过 5 MB。如果您要复制大量文件，您的任务报告可能会被拆分为多个报告。
+ 在某些情况下，创建任务报告会影响数据传输的性能。例如，当网络连接延迟较高、传输的文件较小，或只复制元数据更改时，您可能会注意到这种情况。

# 创建 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)。

# 查看您的 DataSync 任务报告
<a name="task-report-viewing"></a>

DataSync 为每个任务执行创建任务报告。执行完成后，您可以在 S3 存储桶中找到相关任务报告。任务报告按前缀进行组织，前缀包括您的任务及其执行 IDs 情况。

要帮助在您的 S3 存储桶中查找任务报告，请使用以下示例：
+ **仅摘要任务报告** — `reports-prefix/Summary-Reports/task-id-folder/task-execution-id-folder`
+ **标准任务报告** — `reports-prefix/Detailed-Reports/task-id-folder/task-execution-id-folder`

由于任务报告采用 JSON 格式，因此您可以通过多种方式查看报告：
+ 使用 [Amazon S3 Select](https://docs.aws.amazon.com/AmazonS3/latest/userguide/selecting-content-from-objects.html) 查看报告。
+ 使用 Amazon Athena 和 Amazon Quick 等 AWS AWS Glue服务可视化报告。有关任务报告可视化的更多信息，请参阅 [AWS 存储博客文章](https://aws.amazon.com/blogs/storage/derive-insights-from-aws-datasync-task-reports-using-aws-glue-amazon-athena-and-amazon-quicksight/)。