未为任务创建ECS awslogs日志组

时间:2020-07-11 14:53:12

标签: amazon-web-services amazon-ecs amazon-cloudwatch ecs-taskdefinition

这是我的任务定义的一部分:

"logConfiguration": {
      "logDriver": "awslogs",
      "options": {
        "awslogs-group": "/ecs/main-frontend-production-php",
        "awslogs-region": "us-west-1",
        "awslogs-stream-prefix": "ecs",
        "awslogs-create-group": "true"
      }
    },

如果我去在aws控制台中查看任务,它会说日志驱动程序是awslogs,并在我单击得到错误消息There was an error getting log events. The specified log group does not exist.时立即“查看cloudwatch中的日志”,并且没有日志。

有点不知所措,似乎是这样的:https://docs.aws.amazon.com/AmazonECS/latest/userguide/using_awslogs.html我做对了吗?

现在,我的任务停留在“待处理”中,没有日志可以查找原因。

3 个答案:

答案 0 :(得分:0)

这是由于写入CloudWatch日志的权限无效导致的。

您必须为正在使用的角色附加权限。

如果不确定如何执行此操作,请遵循Using CloudWatch Logs with container instances文档。

答案 1 :(得分:0)

导致此错误的可能原因是该错误似乎容器实例能够获取日志组列表。

  • 确保容器和日志组位于同一区域us-west-1
  • 确保容器具有创建日志组的权限
  • 只需缩小问题范围,只需使用aws cli或aws控制台创建日志组/ecs/main-frontend-production-php,这样您就可以知道由于区域或权限而引起的实际原因。
aws logs create-log-group --log-group-name /ecs/main-frontend-production-php --region us-west-1

政策应该看起来像

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:DescribeLogStreams"
            ],
            "Resource": [
                "arn:aws:logs:*:*:*"
            ]
        }
    ]
}

答案 2 :(得分:0)

好吧,我终于想通了。我没有云监视日志的原因是因为没有从ECR中提取图像。我总是觉得“最新”是一些神奇的码头工人标签。显然不是,我必须对它进行最新标记才能找到它。

我认为cloudwatch日志一直可以正常工作,但是无法提取图像,因此没有日志可谈。