我使用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
}
和cloudwatch资源配置:
resource "aws_cloudwatch_log_group" "test_log_group" {
name = "test_log_group"
retention_in_days = 30
}
运行apex infra apply
时,出现以下错误!尝试使用不同的字符集,是否包含特殊字符等。没有任何效果。希望有人能帮助我:
ClientException: Log driver awslogs option 'awslogs-group' contains invalid characters.
答案 0 :(得分:1)
awslogs
Docker driver使用组 name 作为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
}