amazon-web-services - 你如何忽略 Terraform 中的嵌套字段?

标签 amazon-web-services terraform amazon-ecs terraform-provider-aws infrastructure-as-code

Terraform新手在这里。我这里有一个 ECS 计划任务的代码。每当我更改此设置并应用更改时,任务定义的第一个版本就会在 ECS 任务中设置。所以我尝试向其中添加生命周期方法。

resource "aws_cloudwatch_event_target" "sqs" {
  rule      = aws_cloudwatch_event_rule.sqs.name
  target_id = local.namespace
  arn       = aws_ecs_cluster.app.arn
  role_arn  = aws_iam_role.ecsRole.arn
  input     = "{}"

  ecs_target {
    task_count          = 1
    task_definition_arn = aws_ecs_task_definition.sqs.arn
    launch_type         = "FARGATE"
    platform_version    = "LATEST"

    network_configuration {
      security_groups = [aws_security_group.nsg_task.id]
      subnets         = split(",", var.private_subnets)
    }
  }
}

尝试:
    resource "aws_cloudwatch_event_target" "sqs" {
      rule      = aws_cloudwatch_event_rule.sqs.name
      target_id = local.namespace
      arn       = aws_ecs_cluster.app.arn
      role_arn  = aws_iam_role.ecsRole.arn
      input     = "{}"

      ecs_target {
        task_count          = 1
        task_definition_arn = aws_ecs_task_definition.sqs.arn
        launch_type         = "FARGATE"
        platform_version    = "LATEST"

        network_configuration {
          security_groups = [aws_security_group.nsg_task.id]
          subnets         = split(",", var.private_subnets)
        }

        lifecycle {
          ignore_changes = [task_definition_arn]
        }
      }
    }


resource "aws_cloudwatch_event_target" "sqs" {
  rule      = aws_cloudwatch_event_rule.sqs.name
  target_id = local.namespace
  arn       = aws_ecs_cluster.app.arn
  role_arn  = aws_iam_role.ecsRole.arn
  input     = "{}"

  ecs_target {
    task_count          = 1
    task_definition_arn = aws_ecs_task_definition.sqs.arn
    launch_type         = "FARGATE"
    platform_version    = "LATEST"

    network_configuration {
      security_groups = [aws_security_group.nsg_task.id]
      subnets         = split(",", var.private_subnets)
    }
  }

  lifecycle {
    ignore_changes = [ecs_target.task_definition_arn]
  }

}

您如何通过生命周期忽略嵌套字段?

最佳答案

找到了解决办法。这有效

resource "aws_cloudwatch_event_target" "sqs" {
  rule      = aws_cloudwatch_event_rule.sqs.name
  target_id = local.namespace
  arn       = aws_ecs_cluster.app.arn
  role_arn  = aws_iam_role.ecsRole.arn
  input     = "{}"

  ecs_target {
    task_count          = 1
    task_definition_arn = aws_ecs_task_definition.sqs.arn
    launch_type         = "FARGATE"
    platform_version    = "LATEST"

    network_configuration {
      security_groups = [aws_security_group.nsg_task.id]
      subnets         = split(",", var.private_subnets)
    }
  }

  lifecycle {
    ignore_changes = [ecs_target.0.task_definition_arn]
  }
}

对我来说不寻常的语法,但这就是它的方式:)。

关于amazon-web-services - 你如何忽略 Terraform 中的嵌套字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61509823/

相关文章:

java - Amazon Lex AWS Lambda 钩子(Hook)的 Jackson JSON 反序列化

amazon-web-services - 在私有(private)子网中设置 Redash 实例。 EC2 状态检查失败

azure - 使用 Terraform 将磁盘附加到多个虚拟机

amazon-web-services - 在我的 EC2 实例上安装 SSM 代理,以便在没有 SSH 或 key 对的情况下安装 Inspector 代理

amazon-web-services - 在 EC2 与 ECS 上部署 Keycloak 的优势

amazon-web-services - Cloudfront 限制特定区域

node.js - 在 Lambda 函数中使用 s3 getObject 生成带有 InvalidToken 错误的 url

aws-cloudformation - IAM 策略 : MalformedPolicyDocument: Syntax errors in policy

amazon-web-services - 配置的日志驱动程序不支持读取 : Docker

docker - 由于运行状况检查失败,AWS ELB 在几分钟内终止 AWS ECS 中的 RabbitMQ 服务