terraform aws:ecs 未部署最新的任务定义

Adr*_*sch 1 amazon-web-services amazon-ecs terraform aws-fargate terraform-provider-aws

我的地形部署遇到了一个小问题。

新的任务定义是在部署期间创建的。然后我也在网络控制台中看到了这一点。ecs 现在应该实际使用这个新任务定义并更新它。相反,会再次部署最新的修订版。

我的期望是,如果我创建一个新的任务定义并将 arn 从该定义传递到 ecs,它将被部署。

不幸的是,我不知道从这里该去哪里。

我使用以下配置创建了一个 ecs 服务:

resource "aws_ecs_service" "service" {
  name                               = "${var.appPrefix}-api-service-${var.envPrefix}"
  cluster                            = var.ecsClusterId
  task_definition                    = aws_ecs_task_definition.ecsTaskDefinition.arn
  platform_version                   = "1.3.0"
  desired_count                      = 1
  deployment_minimum_healthy_percent = 50
  deployment_maximum_percent         = 200
  launch_type                        = "FARGATE"
  scheduling_strategy                = "REPLICA"
  wait_for_steady_state              = true
  force_new_deployment               = true

  network_configuration {
    security_groups  = [var.ecsSecurityGroupId]
    subnets          = [var.privateSubnet1Id, var.privateSubnet2Id]
    assign_public_ip = false
  }

  load_balancer {
    target_group_arn = var.targetGroupId
    container_name   = var.containerName
    container_port   = var.httpPort
  }

  lifecycle {
    ignore_changes = [task_definition, desired_count]
  }
}
Run Code Online (Sandbox Code Playgroud)

我的任务定义如下:

resource "aws_ecs_task_definition" "ecsTaskDefinition" {
  family                   = "${var.appPrefix}-api-ECSTaskDefinition"
  task_role_arn            = var.ecsTaskRoleArn
  execution_role_arn       = var.ecsTaskExecutionRoleArn
  network_mode             = "awsvpc"
  requires_compatibilities = ["FARGATE"]
  cpu                      = "512"
  memory                   = "1024"
  container_definitions    = <<DEFINITION
[...]
DEFINITION
}
Run Code Online (Sandbox Code Playgroud)

〜编辑:这是地形日志:

# module.ecs_api_module.aws_ecs_task_definition.ecsTaskDefinition must be replaced
-/+ resource "aws_ecs_task_definition" "ecsTaskDefinition" {
~ arn                      = "arn:aws:ecs:*****:********:task-definition/project-name-api-ECSTaskDefinition:507" -> (known after apply)
~ container_definitions    = (sensitive) # forces replacement
~ id                       = "project-name-api-ECSTaskDefinition" -> (known after apply)
- ipc_mode                 = "" -> null
- pid_mode                 = "" -> null
~ revision                 = 507 -> (known after apply)
- tags                     = {} -> null
~ tags_all                 = {} -> (known after apply)
# (8 unchanged attributes hidden)
}
Run Code Online (Sandbox Code Playgroud)

pey*_*cas 6

ignore_changes从资源中删除属性ecs_service或至少删除task_definition.

  lifecycle {
    ignore_changes = [desired_count]
  }
Run Code Online (Sandbox Code Playgroud)