使用 Amazon CloudWatch Logs 监控数据传输 - AWS DataSync

使用 Amazon CloudWatch Logs 监控数据传输

可使用 CloudWatch Logs 监控 AWS DataSync 传输。建议将任务配置为至少记录基本信息(如传输错误)。

允许 DataSync 将日志上传到 CloudWatch 日志组

要为 DataSync 任务配置日志记录,需要一个 DataSync 有权向其发送日志的 CloudWatch 日志组。可通过 AWS Identity and Access Management(IAM)角色设置该访问权限。具体的工作原理取决于任务模式

Enhanced mode

在增强模式下,DataSync 会自动向名为 /aws/datasync 的日志组发送任务日志。如果您的 AWS 区域中不存在该日志组,DataSync 会在您创建任务时,使用 IAM 服务相关角色代表您创建日志组。

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 语句中使用 aws:SourceArnaws:SourceAccount 全局条件上下文键来防范混淆代理人问题。有关更多信息,请参阅 防止跨服务混淆代理

要指定一个或多个 DataSync 任务,请将 region 替换为任务所在的区域代码 AWS 区域(例如 us-west-2),并将 account-id 替换为包含任务的账户的 AWS 账户 ID。要指定 CloudWatch 日志组,请替换相同的值。您也可以修改该 Resource 语句以将特定日志组作为目标。有关使用 SourceArnSourceAccount 的更多信息,请参阅《IAM 用户指南》中的全局条件上下文键

要应用此策略,请将此策略语句保存到本地计算机上的文件中。然后,运行以下 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 区域 来运行此命令。

有关更多信息,请参阅《Amazon CloudWatch Logs 用户指南》https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html

为 DataSync 任务配置日志记录

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

开始前的准备工作

DataSync 需要权限才能将日志上传到 CloudWatch 日志组。有关更多信息,请参阅 允许 DataSync 将日志上传到 CloudWatch 日志组

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

  1. 打开 AWS DataSync 控制台,地址:https://console.aws.amazon.com/datasync/

  2. 在左侧导航窗格中,展开数据传输,然后选择任务,然后选择创建任务

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

    有关更多信息,请参阅 我可以在哪里通过 AWS DataSync 传输数据?

  4. 配置设置页面上,选择任务模式和其他任何选项。

    您可能对以下一些选项感兴趣:

  5. 对于日志级别,选择以下选项之一:

    • 记录传输错误等基本信息:发布只包含基本信息(如传输错误)的日志。

    • 记录所有传输的对象和文件:发布 DataSync 传输和对其执行数据完整性检查的所有文件或对象的日志。

    • 不要生成日志

  6. 根据用于创建或指定 CloudWatch 日志组的任务模式,请执行以下操作之一:

    Enhanced mode

    在选择创建任务时,DataSync 会自动使用(或创建)名为 /aws/datasync 的日志组。

    Basic mode

    对于 CloudWatch 日志组,通过执行以下操作之一,指定 DataSync 有权向其上传日志的日志组:

    • 选择自动生成可自动创建一个允许 DataSync 向其上传日志的日志组。

    • 在当前的 AWS 区域 中选择一个现有日志组。

      如果选择现有日志组,请确保 DataSync 有权将日志上传到该日志组。

  7. 选择创建任务

您已经准备好,可以开始任务

  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:*"
  2. 对于 --source-location-arn,指定源位置的 Amazon 资源名称(ARN)。

  3. 对于 --destination-location-arn,指定目标位置的 ARN。

    如果要跨 AWS 区域 或账户传输,请确保 ARN 包含其他地区或账户 ID。

  4. 对于 --task-mode,指定 ENHANCEDBASIC

  5. (推荐)对于 --name,请为任务指定一个您可以记住的名称。

  6. 对于 LogLevel,指定下列选项之一:

    • BASIC:仅发布包含基本信息(如传输错误)的日志。

    • TRANSFER:发布 DataSync 传输和对其执行数据完整性检查的所有文件或对象的日志。

    • NONE:不要生成日志。

  7. 对于 --cloudwatch-log-group-arn,请指定 CloudWatch 日志组的 ARN。

    重要

    如果 --task-modeENHANCED,您不需要指定此选项。有关更多信息,请参阅 允许 DataSync 将日志上传到 CloudWatch 日志组

  8. 运行 create-task 命令。

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

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

您已经准备好,可以开始任务

您可以通过在以下任何操作中使用 CloudWatchLogGroupArn 参数来为您的任务配置 CloudWatch 日志记录:

查看 DataSync 任务日志

启动任务时,可使用 CloudWatch 控制台或 AWS CLI(以及其他选项)查看任务执行日志。有关更多信息,请参阅《Amazon CloudWatch Logs 用户指南》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