Terraform:日志驱动程序 awslogs 选项“awslogs-group”包含无效字符

shw*_*hwz 5 amazon-web-services amazon-cloudwatch apex terraform

我使用 terraform 和 apex 对 ECS 有以下配置。

resource "aws_ecs_task_definition" "task" {
    ...
      container_definitions = <<DEFINITION
      [
       {
    "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "${aws_cloudwatch_log_group.test_log_group.arn}",
          "awslogs-region": "${var.region}",
          "awslogs-stream-prefix": "/ecs"
        }
      }
    }
   ]
  DEFINITION
  }
Run Code Online (Sandbox Code Playgroud)

以及cloudwatch资源配置:

resource "aws_cloudwatch_log_group" "test_log_group" {
  name              = "test_log_group"
  retention_in_days = 30
}
Run Code Online (Sandbox Code Playgroud)

运行时apex infra apply,出现以下错误!尝试使用不同的字符集,有或没有特殊字符等。没有任何效果。希望有人可以帮助我:

ClientException: Log driver awslogs option 'awslogs-group' contains invalid characters.
Run Code Online (Sandbox Code Playgroud)

yda*_*coR 7

awslogsDocker 驱动程序采用组名称作为 的值awslogs-group,而不是日志组的 ARN。

所以你只想使用以下内容:

resource "aws_ecs_task_definition" "task" {
  # ...
  container_definitions = <<DEFINITION
[
  {
    "logConfiguration": {
      "logDriver": "awslogs",
      "options": {
          "awslogs-group": "${aws_cloudwatch_log_group.test_log_group.name}",
          "awslogs-region": "${var.region}",
          "awslogs-stream-prefix": "/ecs"
      }
    }
  }
]
DEFINITION
}
Run Code Online (Sandbox Code Playgroud)