为什么我无法在 CloudWatch 日志组中找到我的 DataSync 任务日志?

1 分钟阅读
0

我运行了 AWS DataSync 任务,但在相关 Amazon CloudWatch 日志组中找不到日志。我应该如何排查此问题?

解决方案

确认 CloudWatch Logs 具有允许 DataSync 上传日志的资源策略。请按照以下步骤查看 DataSync 代理在 AWS 区域中的 CloudWatch Logs 资源策略:

**注意:**如果在运行 AWS CLI 命令时遇到错误,请确保您使用的是最新版本的 AWS CLI

1.    使用 AWS 命令行界面(AWS CLI)运行 describe-resource-policies 命令:

aws logs describe-resource-policies --region us-east-1

注意:每个 AWS 账户在每个区域最多允许 10 个 CloudWatch Logs 资源策略。如果超过此限制,在创建资源策略时会收到一条错误消息。

2.    查看命令的输出。如果未设置资源策略,则输出类似于以下内容:

{
  "resourcePolicies": []
}

**重要提示:**确认在正确的 AWS 区域中启用了 DataSync 资源策略。该策略必须与您正在使用的 DataSync 代理位于同一区域。

请按照以下步骤创建资源策略,该策略授予 DataSync 上传日志的权限:

1.    创建一个 JSON 文件,向 DataSync 授予上传日志的最低权限:

{
  "Statement": [
    {
      "Sid": "DataSyncLogsToCloudWatchLogs",
      "Effect": "Allow",
      "Action": [
        "logs:PutLogEvents",
        "logs:CreateLogStream"
      ],
      "Principal": {
        "Service": "datasync.amazonaws.com"
      },
      "Resource": "*"
    }
  ],
  "Version": "2012-10-17"
}

您可以命名文件 policy.json

2.    使用 AWS CLI 运行 put-resource-policy 命令以使用 JSON 文件创建资源策略:

aws logs put-resource-policy --policy-name trustDataSync --policy-document file://policy.json --region <Region>

**重要提示:**将 DataSync 代理的 AWS 区域设置为 --region 的值。

3.    运行 describe-resource-policies 命令,确认资源策略已创建:

aws logs describe-resource-policies --region <Region>

注意:每个 AWS 账户在每个区域最多允许 10 个 CloudWatch Logs 资源策略。如果超过此限制,在创建资源策略时会收到一条错误消息。使用 put-resource-policy 命令验证您是否已达到限制。

4.    创建资源策略后,命令输出类似于以下内容:

{
  "resourcePolicies": [
    {
      "policyName": "trustDataSync",
      "policyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"DataSyncLogsToCloudWatchLogs\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"datasync.amazonaws.com\"},\"Action\":[\"logs:PutLogEvents\",\"logs:CreateLogStream\"],\"Resource\":\"*\"}]}",
      "lastUpdatedTime": 1577448776606
    }
  ]
}

5.    要测试资源策略,请运行 DataSync 任务。任务运行后几分钟,请确认您看到来自相关 CloudWatch 日志组的日志流。


相关信息

管理您的 CloudWatch Logs 资源的访问权限概述

AWS 官方
AWS 官方已更新 2 年前