

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

# 使用 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
```

------