0

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

"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,并在我单击时立即“查看 cloudwatch 中的日志”:There was an error getting log events. The specified log group does not exist.并且没有日志。

有点不知所措,看起来像这样:https ://docs.aws.amazon.com/AmazonECS/latest/userguide/using_awslogs.html我做得对吗?

现在我的任务被困在“PENDING”中,我没有日志可以找出原因。

4

3 回答 3

1

这将由于写入 CloudWatch 日志的权限无效而发生。

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

如果您不确定如何执行此操作,请遵循将CloudWatch Logs 与容器实例一起使用文档。

于 2020-07-11T15:35:20.720 回答
1

好的,我终于想通了。我没有云监视日志的原因是图像没有从 ECR 中提取。我一直认为“最新”是一些神奇的 docker 标签。显然不是,我必须实际标记它最新的才能找到它。

我认为 cloudwatch 日志一直在工作,但图像无法拉取,因此没有日志可言。

于 2020-07-14T22:37:56.280 回答
1

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

  • 确保容器和日志组在同一个区域us-west-1
  • 确保容器有权创建日志组
  • 只是为了缩小问题范围,只需/ecs/main-frontend-production-php使用 aws cli 或 aws 控制台创建日志组,这样您就会知道实际原因,因为它是由于区域或权限。
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:*:*:*"
            ]
        }
    ]
}
于 2020-07-12T05:50:07.343 回答