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

上次更新时间:2020 年 12 月 14 日

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

解决方案

确认 CloudWatch Logs 具有允许 DataSync 上传日志的资源策略

请按照以下步骤查看 DataSync 代理的 AWS 区域中的 CloudWatch Logs 资源策略:

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

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

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

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

{
    "resourcePolicies": []
}

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

请按照以下步骤创建资源策略,该策略授予 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>

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 日志组的日志流。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?