问题描述
我正在尝试保留容器数据,为此,我想挂载一个卷。这是我的任务定义,尽管声明了该错误,但仍引发未知的卷错误。
aws_ecs_task_deFinition.wordpress:正在创建...错误:ClientException:未知卷'wordpress-volume'。
locals {
username = jsondecode(data.aws_secretsmanager_secret_version.wordpress.secret_string)["username"]
password = jsondecode(data.aws_secretsmanager_secret_version.wordpress.secret_string)["password"]
}
resource "aws_ecs_task_deFinition" "wordpress" {
family = "wordpress"
container_deFinitions = jsonencode([{
name = "wordpress"
image = "wordpress"
essential = true
cpu = 256
memory = 512
entryPoint = [ "sh","-c"]
command = ["ls -la /var/www/html"]
volumes = [{
name = "wordpress-volume"
efsVolumeConfiguration = {
fileSystemId = aws_efs_file_system.wordpress.id
}
}]
mountPoints = [{
sourceVolume = "wordpress-volume"
containerPath = "/var/www/html"
readOnly = false
}]
environment = [{
name = "wordpress_DB_HOST"
value = "127.0.0.1"},{
name = "wordpress_DB_USER"
value = local.username
},{
name = "wordpress_DB_PASSWORD"
value = local.password
},{
name = "wordpress_DB_NAME"
value = "wordpressdb"
}]
portMappings = [{
protocol = "tcp"
containerPort = 80
hostPort = 80
}]
}])
network_mode = "awsvpc"
requires_compatibilities = ["FARGATE"]
execution_role_arn = aws_iam_role.ecs_task_execution_role.arn
task_role_arn = aws_iam_role.ecs_task_role.arn
cpu = 1024
memory = 3072
}
解决方法
您的volumes
定义不应该在container_definitions
内,而是aws_ecs_task_definition
资源参数的一部分。
因此,您应该将这部分移到外面:
volumes = [{
name = "wordpress-volume"
efsVolumeConfiguration = {
fileSystemId = aws_efs_file_system.wordpress.id
}
}]
到
resource "aws_ecs_task_definition" "wordpress" {
...
volume {
name = "wordpress-volume"
efs_volume_configuration {
file_system_id = aws_efs_file_system.wordpress.id
}
}
...
}
查看文档:
- https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_task_definition#volume-block-arguments
- https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TaskDefinition.html
和容器定义文档: