【问题标题】:AWS ECS Task Definition with terraform and efs - Unknown volume带有 terraform 和 efs 的 AWS ECS 任务定义 - 未知卷
【发布时间】:2021-01-19 00:25:40
【问题描述】:

我正在尝试保存容器数据,为此我想挂载一个卷。这是我的任务定义,尽管声明它会引发未知卷错误。

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
    }

【问题讨论】:

    标签: docker terraform amazon-ecs amazon-efs


    【解决方案1】:

    您的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
          }
      }
    ...
    }
    

    查看文档:

    以及容器定义文档:

    【讨论】:

      猜你喜欢
      • 2021-09-17
      • 2021-05-12
      • 1970-01-01
      • 2021-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-18
      • 2017-03-04
      相关资源
      最近更新 更多