AWS ECS使用terraform和EFS的任务定义 - 未知卷

3

我想将容器数据持久化,因此希望挂载一个卷。这是我的任务定义,尽管声明了卷,但仍会显示未知卷错误。

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
    }
1个回答

9

您的volumes定义不应该放在container_definitions中,而是作为aws_ecs_task_definition资源参数的一部分。

因此,您应该将这部分移动到外面:

 volumes = [{
      name = "wordpress-volume"
      efsVolumeConfiguration = {
         fileSystemId = aws_efs_file_system.wordpress.id
      }
 }]

to

resource "aws_ecs_task_definition" "wordpress" {
...
  volume {
      name  = "wordpress-volume"
      efs_volume_configuration {
        file_system_id = aws_efs_file_system.wordpress.id
      }
  }
...
}

请参阅文档:

容器定义文档:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接