

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

# 监控您的 AWS DataSync 转账
<a name="monitoring-overview"></a>

要维护 AWS DataSync 传输活动的可靠性和性能，实施监控非常重要。我们建议您收集监控数据，以便更轻松地调试出现的错误。但是 DataSync，在开始监控之前，请先制定一份包含以下问题答案的监控计划：
+ 监控目的是什么？
+ 您将监控哪些资源？
+ 监控这些资源的频率如何？
+ 您将使用哪些监控工具？
+ 谁负责执行监控任务？
+ 出现错误时应通知谁？

AWS 提供各种监控服务和工具 DataSync。可以配置其中一些工具为您执行监控任务，但有些工具需要手动干预。建议您尽可能实现监控任务自动化。

**Topics**
+ [了解数据传输性能计数器](transfer-performance-counters.md)
+ [使用 Amazon CloudWatch 指标监控数据传输](monitor-datasync.md)
+ [使用任务报告监控您的数据传输](task-reports.md)
+ [使用 Amazon CloudWatch 日志监控数据传输](configure-logging.md)
+ [使用记录 AWS DataSync API 调用 AWS CloudTrail](logging-using-cloudtrail.md)
+ [使用 Amazon 监控事件 EventBridge](events.md)
+ [AWS DataSync 使用手动工具进行监控](monitoring-task-manually.md)

# 了解数据传输性能计数器
<a name="transfer-performance-counters"></a>

[启动任务](run-task.md)时，会 AWS DataSync 提供计数器来帮助跟踪数据传输的性能和进度。

使用以下信息，了解每个计数器代表的信息。您可以在 DataSync 控制台或[DescribeTaskExecution](https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeTaskExecution.html)响应中查看这些计数器。某些计数器并非在所有[任务模式](choosing-task-mode.md)下都可用。


| 控制台 | `DescribeTaskExecution` | 任务模式支持 | 说明 | 
| --- | --- | --- | --- | 
|  –  |  `BytesWritten`  |  增强、基本  |   DataSync 实际写入目标位置的逻辑字节数。  | 
|  **数据吞吐量**  |  –  |  增强、基本  |  向目标位置 DataSync 写入逻辑字节的速率。 如果你使用的是 [DescribeTaskExecution](https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeTaskExecution.html)，如何计算这个计数器取决于你的任务模式： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/transfer-performance-counters.html)  | 
| 传输的数据 |  `BytesTransferred`  |  增强、基本  |  压缩前 DataSync 发送到网络的字节数（如果可以压缩）。 有关通过网络传输的字节数，请参阅**网络吞吐量**（在控制台中）或`BytesCompressed`（输入 [DescribeTaskExecution](https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeTaskExecution.html)）计数器。  | 
|  **已从目标删除**  |  `FilesDeleted`  |  Basic  |  在目标位置 DataSync 实际删除的文件、对象和目录的数量。 如果您未将任务配置为[在目标位置中删除不存在于源位置的数据](configure-metadata.md#task-option-file-object-handling)： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/transfer-performance-counters.html)  | 
|  **已从目标删除**  |   `FilesDeleted`, `FoldersDeleted`   |  增强  |  目标位置中 DataSync 实际删除的文件或对象以及目录的数量。 如果您未将任务配置为[在目标位置中删除不存在于源位置的数据](configure-metadata.md#task-option-file-object-handling)： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/transfer-performance-counters.html)  | 
|  –  |  `EstimatedBytesToTransfer`  | 增强、基本 |   DataSync 预期写入目标位置的逻辑字节数。  | 
|  –  |  `EstimatedFilesToDelete`  | Basic |   DataSync 预计在目标位置删除的文件、对象和目录的数量。 如果您未将[任务配置](configure-metadata.md#task-option-file-object-handling)为在目标位置中删除不存在于源位置的数据，则该值始终为 `0`。  | 
|  –  |   `EstimatedFilesToDelete`, `EstimatedFoldersToDelete`   | 增强 |  目标位置中 DataSync 预计要删除的文件或对象以及目录的数量。 如果您未将[任务配置](configure-metadata.md#task-option-file-object-handling)为在目标位置中删除不存在于源位置的数据，则该值始终为 `0`。  | 
|  –  |  `EstimatedFilesToTransfer`  |  Basic  |   DataSync 预计通过网络传输的文件、对象和目录的数量。此值是在 DataSync [准备](run-task.md#understand-task-execution-statuses)传输时计算的。 计算方法主要取决于使用的[传输模式](configure-metadata.md#task-option-transfer-mode)： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/transfer-performance-counters.html)  | 
|  –  |   `EstimatedFilesToTransfer`, `EstimatedFoldersToTransfer`   |  增强  |   DataSync 预计通过网络传输的文件或对象以及目录的数量。此值是在 DataSync [准备](run-task.md#understand-task-execution-statuses)传输时计算的。 计算方法主要取决于使用的[传输模式](configure-metadata.md#task-option-transfer-mode)： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/transfer-performance-counters.html)  | 
|  **文件吞吐量**  |  –  |  增强、基本  |  通过网络 DataSync 传输文件、对象和目录的速率。 如果你使用的是 [DescribeTaskExecution](https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeTaskExecution.html)，如何计算这个计数器取决于你的任务模式： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/transfer-performance-counters.html)  | 
|  –  |   `FilesFailed`, `FoldersFailed`   |  增强  |  任务执行期间 DataSync 无法准备、传输、验证和删除的文件或对象以及目录的数量。 如果出现故障，可以分别在“**准备好**”、“**已传输**”、“**已跳过**”和“**已从目标删除**”控制台计数器旁边进行查看。  | 
|  **在源处列出**  |   `FilesListed.AtSource`, `FoldersListed.AtSource`   |  增强  |  在您的源位置 DataSync 找到的文件或对象以及目录的数量。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/transfer-performance-counters.html)  | 
|  –  |   `FilesListed.AtDestinationForDelete`, `FoldersListed.AtDestinationForDelete`   |  增强  |  在目标位置 DataSync 找到的文件或对象以及目录的数量。 该计数器仅适用于您将任务配置为[在目标位置中删除不存在于源位置的数据](configure-metadata.md#task-option-file-object-handling)。  | 
|  **网络吞吐量** \$1  |  `BytesCompressed`  |  增强、基本  |  压缩后通过网络 DataSync 传输的物理字节数（如果可以压缩）。 除非**数据不可压缩，否则此数字通常小于传输的数据**`BytesTransferred`（在控制台中 [DescribeTaskExecution](https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeTaskExecution.html)）或（输入）。 \$1 对于增强模式，**网络吞吐量**不会显示在控制台中。  | 
|  **压缩百分比**  |  –  |  增强、基本  |  在通过网络发送之前 DataSync 压缩的传输数据所占的百分比。 如果你使用的是 [DescribeTaskExecution](https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeTaskExecution.html)，你可以用计算这个计数器`1 - BytesCompressed / BytesWritten`。  | 
|  **准备好**  |   `FilesPrepared`, `FoldersPrepared`   |  增强  |  比较源位置和目标位置后 DataSync 将尝试传输的文件或对象以及目录的数量。 在控制台中，此计数器还可以显示准备过程中 DataSync 跳过的对象数量。有关更多信息，请参阅 [如何 DataSync 准备数据传输](how-datasync-transfer-works.md#how-datasync-prepares)。 如果您将任务配置为[传输所有数据](configure-metadata.md#task-option-transfer-mode)，则此计数器不适用。在这种情况下， DataSync 将所有内容从源复制到目的地，而不比较位置之间的差异。  | 
|  **处理速率**  |  –  |  增强、基本  |   DataSync 读取源位置文件、对象和目录的速率。 处理速率基于多个[CloudWatch 指标](monitor-datasync.md#accessing-metrics)。确切的指标取决于使用的任务模式。 **增强模式**： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/transfer-performance-counters.html) **基本模式**： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/transfer-performance-counters.html)  | 
|  **剩余**  |  –  |  Basic  |   DataSync预计通过网络传输的剩余文件、对象和目录数量。 如果你使用的是 [DescribeTaskExecution](https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeTaskExecution.html)，你可以通过减去`FilesTransferred`来计算这个计数器。`EstimatedFilesToTransfer`  | 
|  **已跳过**\$1  |  `FilesSkipped`  | Basic |  传输过程中 DataSync 跳过的文件、对象和目录的数量。  | 
|  –  |   `FilesSkipped`, `FoldersSkipped`   | 增强 |  传输过程中 DataSync 跳过的文件或对象以及目录的数量。 [仅传输已更改的数据时，**跳过**的项目将包含在**准备好的**计数器中，或者在传输所有数据时包含在已](configure-metadata.md#task-option-transfer-mode)**[传输](configure-metadata.md#task-option-transfer-mode)的计数器中。**  | 
|  **已传输**  |  `FilesTransferred`  |  Basic  |  通过网络 DataSync 传输的文件、对象和目录的数量。在任务执行期间，当从源读取内容并通过网络发送内容时，该值会定期更新。 如果 DataSync 无法传输某些内容，则此值可以小于`EstimatedFilesToTransfer`或`EstimatedFoldersToTransfer`。在某些情况下，该值也可以大于`EstimatedFilesToTransfer`或`EstimatedFoldersToTransfer`。此计数器是特定于某些位置类型的实施，因此不要将其用作所传输内容的确切指示或用来监控任务执行。  | 
|  **已传输**  |   `FilesTransferred`, `FoldersTransferred`   |  增强  |  通过网络 DataSync 传输的文件或对象以及目录的数量。在任务执行期间，当从源读取内容并通过网络发送内容时，该值会定期更新。 如果 DataSync 无法传输某些内容，则此值可以小于`EstimatedFilesToTransfer`或`EstimatedFoldersToTransfer`。在某些情况下，该值也可以大于`EstimatedFilesToTransfer`或`EstimatedFoldersToTransfer`。此计数器是特定于某些位置类型的实施，因此不要将其用作所传输内容的确切指示或用来监控任务执行。  | 
|  **已验证**  |  `FilesVerified`  |  Basic  |  传输过程中要 DataSync 验证的文件、对象和目录的数量。 当您将任务配置为[仅验证传输的数据](configure-data-verification-options.md)时，在某些情况下 DataSync 不验证目录或无法传输的文件或对象。  | 
|  **已验证**  |   `FilesVerified`, `FoldersVerified`   |  增强  |  传输过程中要 DataSync 验证的文件或对象以及目录的数量。  | 

# 使用 Amazon CloudWatch 指标监控数据传输
<a name="monitor-datasync"></a>

Amazon CloudWatch 提供了跟踪 DataSync 传输性能和解决传输任务问题的指标。

可使用 Amazon CloudWatch 指标监控 AWS DataSync 传输性能。DataSync 指标每隔 5 分钟自动发送至 CloudWatch（无论如何[配置日志记录](configure-logging.md)）。这些指标保留 15 个月的时间。

要查看 DataSync 的 CloudWatch 指标，您可以使用以下工具：
+ CloudWatch 控制台
+ CloudWatch CLI
+ CloudWatch API
+ DataSync 控制台（在任务执行的详细信息页面上）

有关更多信息，请参阅 [https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html)。

## DataSync 的 CloudWatch 指标
<a name="accessing-metrics"></a>

DataSync 指标使用 `aws/datasync` 命名空间并提供以下维度的指标：
+ **AgentId** — 代理的唯一 ID（如果任务使用代理）。
+ **TaskId** — 任务的唯一 ID。其格式为 `task-01234567890abcdef`。

`aws/datasync` 命名空间包括以下指标。某些指标并非适用于所有[任务模式](choosing-task-mode.md)。


| CloudWatch 指标 | 任务模式支持 | 描述 | 
| --- | --- | --- | 
|  `BytesCompressed`  | 基本 |  DataSync 在压缩后通过网络传输的物理字节数（如果可以压缩）。除非数据不可压缩，否则该数字通常小于 `BytesTransferred`。 单位：字节  | 
|  `BytesPreparedDestination`  | 基本 |  DataSync 在目标位置准备的逻辑字节数。 单位：字节  | 
|  `BytesPreparedSource`  | 基本 |  DataSync 在源位置准备的逻辑字节数。 单位：字节  | 
|  `BytesTransferred`  | 基本 |  DataSync 在压缩之前发送到网络的字节数（如果可以压缩）。有关通过网络传输的字节数，请参阅 `BytesCompressed` 指标。 单位：字节  | 
|  `BytesVerifiedDestination`  | 基本 |  DataSync 在目标位置验证的逻辑字节数。 单位：字节  | 
|  `BytesVerifiedSource`  | 基本 |  DataSync 在源位置验证的逻辑字节数。 单位：字节  | 
|  `BytesWritten`  | 增强、基本 |  DataSync 写入目标位置的逻辑字节数。 单位：字节  | 
|  `FilesDeleted`  | 增强、基本 |  DataSync 在目标位置删除的文件、对象和目录的数量。如果您未将[任务配置](configure-metadata.md#task-option-file-object-handling)为在目标位置中删除不存在于源位置的数据，则该值始终为 `0`。 单位：个  | 
|  `FilesListedSource`  | 增强 |  DataSync 在您的源位置找到的对象的数量。 单位：个  | 
|  `FilesPrepared`  | 增强 |  DataSync 在比较源位置和目标位置后将尝试传输的对象数量。有关更多信息，请参阅 [如何 DataSync 准备数据传输](how-datasync-transfer-works.md#how-datasync-prepares)。 如果您将任务配置为[传输所有数据](configure-metadata.md#task-option-transfer-mode)，则此指标不适用。在这种情况下，DataSync 将源中的所有内容复制到目标，而不比较位置之间的差异。 单位：个  | 
|  `FilesPreparedDestination`  | 基本 |  DataSync 在目标位置准备的文件、对象和目录的数量。 单位：个  | 
|  `FilesPreparedSource`  | 基本 |  DataSync 在源位置准备的文件、对象和目录的数量。 单位：个  | 
|  `FilesSkipped`  | 基本 |  DataSync 在传输过程中跳过的文件、对象和目录的数量。 单位：个  | 
|  `FilesTransferred`  | 增强、基本 |  DataSync 通过网络传输的文件、对象和目录的数量。在[任务执行](run-task.md#understand-task-execution-statuses)期间，当从源读取内容并通过网络发送内容时，该值会定期更新。  如果 DataSync 传输内容失败，在 [DescribeTaskExecution](https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeTaskExecution.html) 响应中，此值可以小于 `EstimatedFilesToTransfer`。在某些情况下，此值也可能大于 `EstimatedFilesToTransfer`。此指标特定于某些位置类型实施，因此请不要将其用作传输内容的准确指示，也不要用于监控任务执行情况。  单位：个  | 
|  `FilesVerified`  | 增强 | DataSync 在传输过程中验证的对象的数量。 单位：个 | 
|  `FilesVerifiedDestination`  | 基本 |  DataSync 在目标位置验证的文件、对象和目录的数量。 单位：个  | 
|  `FilesVerifiedSource`  | 基本 |  DataSync 在源位置验证的文件、对象和目录的数量。 单位：个  | 

# 使用任务报告监控您的数据传输
<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/)。

# 使用 Amazon CloudWatch 日志监控数据传输
<a name="configure-logging"></a>

您可以使用 CloudWatch 日志监控您的 AWS DataSync 传输。建议将任务配置为至少记录基本信息（如传输错误）。

## DataSync 允许将日志上传到 CloudWatch 日志组
<a name="cloudwatchlogs"></a>

要为您的 DataSync任务[配置日志记录](#configure-logging-for-task)，您需要一个 CloudWatch DataSync 有权向其发送日志的日志组。您可以通过 AWS Identity and Access Management (IAM) 角色设置此访问权限。具体的工作原理取决于[任务模式](choosing-task-mode.md)。

------
#### [ Enhanced mode ]

在增强模式下， DataSync 自动将任务日志发送到名为的日志组`/aws/datasync`。如果您的日志组不存在 AWS 区域，则在 DataSync 创建任务时使用 IAM [服务相关角色](https://docs.aws.amazon.com/datasync/latest/userguide/using-service-linked-roles-service-action-2.html)代表您创建日志组。

------
#### [ Basic mode ]

有几种方法可以使用 “基本” 模式为 DataSync 任务设置 CloudWatch 日志组。在控制台中，您可以自动创建一个 IAM 角色，在大多数情况下，该角色包含上传日志 DataSync 所需的权限。请记住，从最低权限的角度来看，这个自动生成的角色可能无法满足您的需求。

如果您想使用现有的 CloudWatch 日志组或以编程方式创建任务，则必须自己创建 IAM 角色。

以下示例是授予这些权限的 IAM 策略。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DataSyncLogsToCloudWatchLogs",
            "Effect": "Allow",
            "Action": [
                "logs:PutLogEvents",
                "logs:CreateLogStream"
            ],
            "Principal": {
                "Service": "datasync.amazonaws.com"
            },
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": [
                    "arn:aws:datasync:us-east-1:444455556666:task/*"
                    ]
                },
                "StringEquals": {
                "aws:SourceAccount": "444455556666"
                }
            },
            "Resource": "arn:aws:logs:us-east-1:444455556666:log-group:*:*"
        }
    ]
}
```

该策略使用`Condition`语句来帮助确保只有来自指定账户的 DataSync 任务才能访问指定的 CloudWatch 日志组。我们建议在这些 `Condition` 语句中使用 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 和 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 全局条件上下文键来防范混淆代理人问题。有关更多信息，请参阅 [防止跨服务混淆代理](cross-service-confused-deputy-prevention.md)。

要指定一个或多个任务，请*`region`*替换为任务 AWS 区域 所在的区域代码（例如`us-west-2`），然后*`account-id`*替换为包含任务的账户的 AWS 账户 ID。 DataSync 要指定 CloudWatch日志组，请替换相同的值。您也可以修改该 `Resource` 语句以将特定日志组作为目标。有关使用 `SourceArn` 和 `SourceAccount` 的更多信息，请参阅《*IAM 用户指南*》中的[全局条件上下文键](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)。

要应用此策略，请将此策略语句保存到本地计算机上的文件中。然后运行以下 AWS CLI 命令以应用资源策略。要使用此示例命令，请将 `full-path-to-policy-file` 替换为包含您的策略语句的文件路径。

```
aws logs put-resource-policy --policy-name trust-datasync --policy-document file://full-path-to-policy-file
```

**注意**  
使用与您激活 DataSync 代理相同的 AWS 账户 命令来运行此命令。 AWS 区域 

有关更多信息，请参阅 [https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)。

------

## 为您的 DataSync 任务配置日志记录
<a name="configure-logging-for-task"></a>

我们建议您至少为 DataSync任务配置一定级别的日志记录。

**开始前的准备工作**  
DataSync 需要权限才能将日志上传到 CloudWatch 日志组。有关更多信息，请参阅 [DataSync 允许将日志上传到 CloudWatch 日志组](#cloudwatchlogs)。

### 使用控制 DataSync 台
<a name="configure-logging-steps-console"></a>

以下说明描述了如何在创建任务时配置 CloudWatch 日志记录。您还可以在编辑任务时配置日志记录。

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

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

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

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

1. 在**配置设置**页面上，选择[任务模式](choosing-task-mode.md)和其他任何选项。

   您可能对以下一些选项感兴趣：
   + 使用[清单](transferring-with-manifest.md)或[筛选条件](filtering.md)指定要传输的数据。
   + 配置如何[处理文件元数据](configure-metadata.md)和[验证数据完整性](configure-data-verification-options.md)。

1. 对于**日志级别**，选择以下选项之一：
   + **记录传输错误等基本信息**：发布只包含基本信息（如传输错误）的日志。
   + **记录所有传输的对象和文件**-发布所有 DataSync传输和执行数据完整性检查的文件或对象的日志。
   + **不要生成日志**

1. 根据您用于创建或指定 CloudWatch 日志组的任务模式，执行以下任一操作：

------
#### [ Enhanced mode ]

   选择 “**创建任务**” 时， DataSync会自动使用（或创建）名为的日志组`/aws/datasync`。

------
#### [ Basic mode ]

   对于**CloudWatch 日志组**，通过执行以下任一操作来指定 DataSync 有权将日志上传到的日志组：
   + 选择 “**自动生成**” 可自动创建一个允许 DataSync向其上传日志的日志组。
   + 在当前的 AWS 区域中选择一个现有日志组。

     如果您选择现有日志组，请确保该日志组[DataSync 有权](#cloudwatchlogs)将日志上传到该日志组。

------

1. 选择**创建任务**。

您已经准备好，可以[开始任务](run-task.md)。

### 使用 AWS CLI
<a name="configure-logging-steps-cli"></a>

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

   ```
   aws datasync create-task \
     --source-location-arn "arn:aws:datasync:us-east-1:account-id:location/location-id" \
     --destination-location-arn "arn:aws:datasync:us-east-1:account-id:location/location-id" \
     --task-mode "ENHANCED-or-BASIC" \
     --name "task-name" \
     --options '{"LogLevel": "log-level"}' \
     --cloudwatch-log-group-arn "arn:aws:logs:us-east-1:account-id:log-group:log-group-name:*"
   ```

1. 对于 `--source-location-arn`，指定源位置的 Amazon 资源名称（ARN）。

1. 对于 `--destination-location-arn`，指定目标位置的 ARN。

   如果您要跨 AWS 区域 账户转账，请确保 ARN 包含其他地区或账户 ID。

1. 对于 `--task-mode`，指定 `ENHANCED` 或 `BASIC`。

1. （推荐）对于 `--name`，请为任务指定一个您可以记住的名称。

1. 对于 `LogLevel`，指定下列选项之一：
   + `BASIC`：仅发布包含基本信息（如传输错误）的日志。
   + `TRANSFER`— 发布所有 DataSync 传输和执行数据完整性检查的文件或对象的日志。
   + `NONE`：不要生成日志。

1. 对于-`-cloudwatch-log-group-arn`，指定 CloudWatch日志组的 ARN。
**重要**  
如果 `--task-mode` 为 `ENHANCED`，您不需要指定此选项。有关更多信息，请参阅 [DataSync 允许将日志上传到 CloudWatch 日志组](#cloudwatchlogs)。

1. 运行 `create-task` 命令。

   如果命令成功，您将收到一条响应，显示所创建任务的 ARN。例如：

   ```
   { 
       "TaskArn": "arn:aws:datasync:us-east-1:111222333444:task/task-08de6e6697796f026" 
   }
   ```

您已经准备好，可以[开始任务](run-task.md)。

### 使用 DataSync API
<a name="configure-logging-steps-api"></a>

您可以通过将`CloudWatchLogGroupArn`参数与以下任一操作一起使用来配置任务的 CloudWatch 日志记录：
+ [https://docs.aws.amazon.com/datasync/latest/userguide/API_CreateTask.html](https://docs.aws.amazon.com/datasync/latest/userguide/API_CreateTask.html)
+ [https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateTask.html](https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateTask.html)

## 查看 DataSync 任务日志
<a name="monitoring-verification-errors-cloudwatch"></a>

[启动任务时](run-task.md)，您可以使用 CloudWatch 控制台或 AWS CLI （以及其他选项）查看任务执行日志。有关更多信息，请参阅 [https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)。

DataSync 为增强模式任务提供 JSON 结构的日志。基本模式任务具有非结构化的日志。以下示例显示与基本模式日志相比，增强模式日志的验证错误显示方式。

------
#### [ Enhanced mode log example ]

```
{
    "Action": "VERIFY",
    "Source": {
        "LocationId": "loc-abcdef01234567890",
        "RelativePath": "directory1/directory2/file1.txt"
    },
    "Destination": {
        "LocationId": "loc-05ab2fdc272204a5f",
        "RelativePath": "directory1/directory2/file1.txt",
        "Metadata": {
            "Type": "Object",
            "ContentSize": 66060288,
            "LastModified": "2024-10-03T20:46:58Z",
            "S3": {
                "SystemMetadata": {
                    "ContentType": "binary/octet-stream",
                    "ETag": "\"1234abcd5678efgh9012ijkl3456mnop\"",
                    "ServerSideEncryption": "AES256"
                },
                "UserMetadata": {
                    "file-mtime": "1602647222/222919600"
                },
                "Tags": {}
            }
        }
    },
    "ErrorCode": "FileNotAtSource",
    "ErrorDetail": "Verification failed due to file being present at the destination but not at the source"
}
```

------
#### [ Basic mode log example ]

```
[NOTICE] Verification failed > /directory1/directory2/file1.txt
[NOTICE] /directory1/directory2/file1.txt   dstMeta: type=R mode=0755 uid=65534 gid=65534 size=8972938 atime=1728657659/0 mtime=1728657659/0 extAttrsHash=0
[NOTICE]   dstHash: f9c2cca900301d38b0930367d8d587153154af467da0fdcf1bebc0848ec72c0d
```

------

# 使用记录 AWS DataSync API 调用 AWS CloudTrail
<a name="logging-using-cloudtrail"></a>

AWS DataSync 与 AWS CloudTrail一项服务集成，该服务提供用户、角色或角色所执行操作 AWS 服务 的记录 DataSync。 CloudTrail 将所有 API 调用捕获 DataSync为事件。捕获的调用包括来自 DataSync 控制台的调用和对 DataSync API 操作的代码调用。

如果您创建了跟踪，则可以允许将 CloudTrail 事件持续传输到 Amazon S3 存储桶，包括的事件 AWS DataSync。如果您未配置跟踪，您仍然可以在 CloudTrail 控制台的 “事件**历史记录” 中查看最新的事件**。使用收集的信息 CloudTrail，您可以确定向哪个请求发出 AWS DataSync、发出请求的 IP 地址、谁发出了请求、何时发出请求以及其他详细信息。

要了解更多信息 CloudTrail，请参阅[AWS CloudTrail 用户指南](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。

## 处理中的 DataSync 信息 CloudTrail
<a name="service-name-info-in-cloudtrail"></a>

CloudTrail 在您创建账户 AWS 账户 时已在您的账户上启用。当活动发生在中时 AWS DataSync，该活动会与其他 CloudTrail 事件一起记录在 AWS 服务 **事件历史**记录中。您可以在中查看、搜索和下载最近发生的事件 AWS 账户。有关更多信息，请参阅[使用事件历史查看 CloudTrail 事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)。

对于 AWS 账户中的事件的持续记录（包括 AWS DataSync 的事件），请创建跟踪记录。*跟踪*允许 CloudTrail 将日志文件传输到 Amazon S3 存储桶。默认情况下，在控制台中创建跟踪记录时，此跟踪记录应用于所有 AWS 区域。该跟踪将所有事件记录 AWS 区域 在同一个 AWS 分区中，并将日志文件传送到您指定的 Amazon S3 存储桶。此外，您可以配置其他 AWS 服务 ，以进一步分析和处理 CloudTrail 日志中收集的事件数据。有关更多信息，请参阅下列内容：
+ [创建跟踪记录概述](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail 支持的服务和集成](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [配置 Amazon SNS 通知 CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/configure-sns-notifications-for-cloudtrail.html)
+ [接收来自多个区域的 CloudTrail 日志文件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html)和[接收来自多个账户的 CloudTrail 日志文件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

所有 DataSync 操作都由记录 CloudTrail。（有关更多信息，请参阅 DataSync [API 参考](https://docs.aws.amazon.com/datasync/latest/userguide/API_Operations.html)。）

例如，对`CreateAgent``CreateTask`、和`ListLocations`操作的调用会在 CloudTrail 日志文件中生成条目。

每个事件或日志条目都包含有关生成请求的人员信息。身份信息有助于您确定以下内容：
+ 请求是使用根证书还是 AWS Identity and Access Management (IAM) 凭证发出。
+ 请求是使用角色还是联合用户的临时安全凭证发出的。
+ 请求是否由其他 AWS 服务发出。

有关更多信息，请参阅《*AWS CloudTrail 用户指南》中的[CloudTrailuserIdentity元素](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)。*

## 了解 DataSync 日志文件条目
<a name="understanding-service-name-entries"></a>

跟踪是一种配置，允许将事件作为日志文件传输到您指定的 Amazon S3 存储桶。 CloudTrail 日志文件包含一个或多个日志条目。事件代表来自任何来源的单个请求，包括有关请求的操作、操作的日期和时间、请求参数等的信息。 CloudTrail 日志文件不是公共 API 调用的有序堆栈跟踪，因此它们不会按任何特定顺序出现。

以下示例显示了演示该`CreateTask`操作的 CloudTrail 日志条目。

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "1234567890abcdef0",
        "arn": "arn:aws:iam::123456789012:user/user1",
        "accountId": "123456789012",
        "accessKeyId": "access key",
        "userName": "user1",
        "sessionContext": {
            "attributes": {
                "mfaAuthenticated": "false",
                "creationDate": "2018-12-13T14:56:46Z"
            }
        },
        "invokedBy": "signin.amazonaws.com"
    },
    "eventTime": "2018-12-13T14:57:02Z",
    "eventSource": "datasync.amazonaws.com",
    "eventName": "CreateTask",
    "awsRegion": "ap-southeast-1",
    "sourceIPAddress": "192.0.2.1",
    "userAgent": "signin.amazonaws.com",
    "requestParameters": {
        "cloudWatchLogGroupArn": "arn:aws:logs:ap-southeast-1:123456789012:log-group:MyLogGroup",
        "name": "MyTask-NTIzMzY1",
        "tags": [],
        "destinationLocationArn": "arn:aws:datasync:ap-southeast-1:123456789012:location/loc-abcdef01234567890",
        "options": {
            "bytesPerSecond": -1,
            "verifyMode": "POINT_IN_TIME_CONSISTENT",
            "uid": "INT_VALUE",
            "posixPermissions": "PRESERVE",
            "mtime": "PRESERVE",
            "gid": "INT_VALUE",
            "preserveDevices": "NONE",
            "preserveDeletedFiles": "REMOVE",
            "atime": "BEST_EFFORT"
        },
        "sourceLocationArn": "arn:aws:datasync:ap-southeast-1:123456789012:location/loc-021345abcdef6789"
    },
    "responseElements": {
        "taskArn": "arn:aws:datasync:ap-southeast-1:123456789012:task/task-1234567890abcdef0"
    },
    "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
    "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
    "eventType": "AwsApiCall",
    "recipientAccountId": "123456789012"
}
```

# 使用 Amazon 监控事件 EventBridge
<a name="events"></a>

Amazon EventBridge 事件描述了 DataSync 资源的变化。您可以设置规则来匹配这些事件，并将这些事件路由到一个或多个目标函数或流。尽最大努力发布事件。

## DataSync 转移事件
<a name="events-transfer"></a>

以下 EventBridge 事件可用于 DataSync 转移。


| **Agent state changes** | 
| --- |
| Event (事件) | 描述 | 
| 在线 | 已正确配置代理并且可供使用。这是代理的正常运行状态。 | 
| 离线 | 代理与该 DataSync 服务部门断开联系已有五分钟或更长时间。这可能是由于多种原因造成。有关更多信息，请参阅 [如果我的代理处于离线状态，我该怎么办？](troubleshooting-datasync-agents.md#troubleshoot-agent-offline)。 | 
| **Location state changes** | 
| --- |
| Event (事件) | 描述 | 
| 正在添加 | DataSync 正在添加地点。 | 
| 可用 | 位置已创建并且可供使用。 | 
| **Task state changes** | 
| --- |
| Event (事件) | 描述 | 
| Available | 任务已创建，可以开始了。 | 
| 运行 | 任务正在进行中，运行正常。 | 
| 不可用 | 任务配置不正确，无法使用。当与任务关联的代理脱机时，您可能会看到此事件。 | 
| 已排队 | 另一项任务正在运行并使用同一个代理。 DataSync 按顺序运行任务（先入先出）。 | 
| **Task execution state changes** | 
| --- |
| Event (事件) | 描述 | 
| 排队 | 另一个任务正在运行并使用相同的 DataSync 代理。有关更多信息，请参阅 [了解任务何时排队](run-task.md#queue-task-execution)。 | 
| 正在启动 | DataSync 正在初始化任务执行。此状态通常很快就会结束，但也可能需要几分钟。 | 
| 正在准备 |  DataSync 正在确定要传输哪些数据。 这一步可能只需要几分钟，也可能需要几个小时，具体取决于两个位置的文件、对象或目录的数量，以及任务配置方式。准备可能也不适用于您的任务。有关更多信息，请参阅 [如何 DataSync 准备数据传输](how-datasync-transfer-works.md#how-datasync-prepares)。  | 
| 正在传输 |  DataSync 正在执行实际的数据传输。 | 
| 正在验证 | DataSync 正在传输结束时执行数据完整性检查。 | 
| 成功 | 任务执行成功。 | 
| 正在取消 | 正在取消任务的执行。 | 
| 错误 | 任务执行失败。 | 

# AWS DataSync 使用手动工具进行监控
<a name="monitoring-task-manually"></a>

您可以从控制台或命令行跟踪您的 AWS DataSync 传输。

## 使用 DataSync 控制台监控您的转账
<a name="monitoring-task-console"></a>

您可以使用控制台监控 DataSync 传输情况，该控制台提供实时指标，例如传输的数据、数据和文件吞吐量以及数据压缩。

**使用 DataSync 控制台监控您的转账**

1. [开始 DataSync 任务](run-task.md#starting-task)后，选择 “**查看执行详情**”。

1. 查看有关您的传输的指标。

## 使用以下方法监控您的转账 AWS CLI
<a name="monitor-task-execution"></a>

您可以使用 AWS Command Line Interface (AWS CLI) 监控您的 DataSync 传输。

复制以下 `describe-task-execution` 命令。要使用此示例命令，请将 `user input placeholders` 替换为您自己的信息。

```
aws datasync describe-task-execution \
  --task-execution-arn 'arn:aws:datasync:region:account-id:task/task-id/execution/task-execution-id'
```

此命令返回有关任务执行的信息，如下所示。

```
{
    "BytesCompressed": 3500,
    "BytesTransferred": 5000,
    "BytesWritten": 5000,
    "EstimatedBytesToTransfer": 5000,
    "EstimatedFilesToDelete": 10,
    "EstimatedFilesToTransfer": 100,
    "FilesDeleted": 10,
    "FilesSkipped": 0,
    "FilesTransferred": 100,
    "FilesVerified": 100,
    "Result": {
        "ErrorCode": "??????",
        "ErrorDetail": "??????",
        "PrepareDuration": 100,
        "PrepareStatus": "SUCCESS",
        "TransferDuration": 60,
        "TransferStatus": "AVAILABLE",
        "VerifyDuration": 30,
        "VerifyStatus": "SUCCESS"
    },
    "StartTime": 1532660733.39,
    "Status": "SUCCESS",
    "OverrideOptions": {
        "Atime": "BEST_EFFORT",
        "BytesPerSecond": "1000",
        "Gid": "NONE",
        "Mtime": "PRESERVE",
        "PosixPermissions": "PRESERVE",
        "PreserveDevices": "NONE",
        "PreserveDeletedFiles": "PRESERVE",
        "Uid": "NONE",
        "VerifyMode": "POINT_IN_TIME_CONSISTENT"
    },
    "TaskExecutionArn": "arn:aws:datasync:us-east-1:111222333444:task/task-aaaabbbbccccddddf/execution/exec-1234abcd1234abcd1",
    "TaskReportConfig": {
        "Destination": {
            "S3": {
                "BucketAccessRoleArn": "arn:aws:iam::111222333444:role/my-datasync-role",
                "S3BucketArn": "arn:aws:s3:::amzn-s3-demo-bucket/*",
                "Subdirectory": "reports"
            }
        },
        "ObjectVersionIds": "INCLUDE",
        "OutputType": "STANDARD",
        "Overrides": {
            "Deleted": {
                "ReportLevel": "ERRORS_ONLY"
            },
            "Skipped": {
                "ReportLevel": "SUCCESSES_AND_ERRORS"
            },
            "Transferred": {
                "ReportLevel": "ERRORS_ONLY"
            },
            "Verified": {
                "ReportLevel": "ERRORS_ONLY"
            }
        },
        "ReportLevel": "ERRORS_ONLY"
    }
}
```
+ 如果任务执行成功，则**状态**的值会变为**成功**。有关响应元素含义的信息，请参阅 [DescribeTaskExecution](API_DescribeTaskExecution.md)。
+ 如果任务执行失败，则结果会发送可帮助您排查问题的错误代码。有关错误代码的信息，请参阅 [TaskExecutionResultDetail](API_TaskExecutionResultDetail.md)。

## 使用 `watch` 实用程序监控传输
<a name="monitor-realtime"></a>

要从命令行实时监控任务执行的进度，您可以使用标准 `watch` 监视实用工具。任务执行持续时间值以毫秒为单位。

该`watch`实用程序无法识别 DataSync 别名。下面的示例显示了如何直接调用 CLI。要使用此示例命令，请将 `user input placeholders` 替换为您自己的信息。

```
# pass '-n 1' to update every second and '-d' to highlight differences 
        $ watch -n 1 -d \ "aws datasync describe-task-execution --task-execution-arn 'arn:aws:datasync:region:account-id:task/task-id/execution/task execution-id'"
```