微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

terraform 用于基础设施生成的幂等错误的可能原因

如何解决terraform 用于基础设施生成的幂等错误的可能原因

我们正在使用 terraform 使用自定义任务定义在 AWS 基础设施中启动 ECS 容器。 由于我们不需要每次都启动完整的基础设施,因此隔离了仅用于启动 ECS 容器的部分。

启动正常进行,直到 ECS 启动代码被隔离,然后 ECS 服务启动开始给出指示幂等问题的错误

│ Error: error creating target service: error waiting for ECS service (sandBox) creation: InvalidParameterException: Creation of service was not idempotent. 
│  
│   with aws_ecs_service.ecs_service_target,│   on aws_infra_ecs.tf line 100,in resource "aws_ecs_target" "ecs_service_target": 
│  100: resource "aws_ecs_target" "ecs_service_target" { 
│

ECS 服务定义如下:

resource "aws_ecs_service" "ecs_service_target" {
    desired_count = 1
    name   = "target"
    launch_type = "FARGATE"
    cluster = data.aws_ecs_cluster.cluster_target.id
    enable_ecs_managed_tasks = true
    task_deFinition = aws_ecs_task_deFinition.target_taskdef.arn
    platform_version = "1.4.0"
...
    load_balancer {
         ...
         target_group_arn = data.aws_lb_target_group.aws_target.arn
    }
...
    network_configuration {
    ...
       security_groups = [ data.aws_security_group.target_sg.id ]
       subnets = [ "subet-5767c3c2" ] # A dynamic subnet reference id is used here 
    }
    depends_upon = [
       var.second_service_name,aws_ecs_task_deFinition.target_taskdef,data.aws_efs_access_point.target_ap
    ]
...
}

我预计问题是以下类型之一:

  1. 选择的子网可能因基于变量的选择而不同
  2. 使用间接数据引用(而不是直接资源引用)可能会导致问题
  3. 任务定义 JSON 编码问题

导致此类问题的其他原因可能是什么。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。