Terraform 将";aws"ami";最新=真实影响未来更新?

Terraform 将";aws"ami";最新=真实影响未来更新?,terraform,terraform-provider-aws,terraform0.12+,Terraform,Terraform Provider Aws,Terraform0.12+,根据下面的配置,如果Amazon推出了新版本的AMI,那么对基础设施运行apply命令会发生什么 测试实例是否将被销毁并重新创建 所以情况 地形初始 地形应用 等N个月 地形图(或应用) 我会看到N个月前创建的ec2实例的“强制”重新创建吗?它使用的是AMI的旧版本,在当时是“最新的” data“aws\u ami”“amazon-linux-2”{ 最近的 滤器{ name=“所有者别名” 值=[“亚马逊”] } 滤器{ name=“name” 值=[“amzn2 ami hvm*”] } }

根据下面的配置,如果Amazon推出了新版本的AMI,那么对基础设施运行apply命令会发生什么

测试实例是否将被销毁并重新创建

所以情况

  • 地形初始
  • 地形应用
  • 等N个月
  • 地形图(或应用)
  • 我会看到N个月前创建的ec2实例的“强制”重新创建吗?它使用的是AMI的旧版本,在当时是“最新的”

    data“aws\u ami”“amazon-linux-2”{
    最近的
    滤器{
    name=“所有者别名”
    值=[“亚马逊”]
    }
    滤器{
    name=“name”
    值=[“amzn2 ami hvm*”]
    }
    }
    资源“aws_实例”“测试”{
    取决于=[“aws\u internet\u gateway.test”]
    ami=“${data.aws_ami.amazon-linux-2.id}”
    关联\u公共\u ip\u地址=真
    iam_instance_profile=“${aws_iam_instance_profile.test.id}”
    实例_type=“t2.micro”
    key_name=“bflad-20180605”
    vpc_security_group_id=[“${aws_security_group.test.id}]
    subnet_id=“${aws_subnet.test.id}”
    }
    

    最新=真实的“aws\u ami”是否会影响未来的更新?

    是,根据@ydaetskcoR所说,您可以查看
    忽略更改
    生命周期,然后它将不会重新创建实例

    是,根据@ydaetskcoR所说的,您可以查看
    忽略更改
    生命周期,然后它将不会重新创建实例

    @ydeatskoR和@sogyals429的答案是正确的。更具体地说:

    resource "aws_instance" "test" {
      # ... (all the stuff at the top)
    
      lifecycle {
        ignore_changes = [
          ami,
        ]
      }
    }
    

    注意:移动到:

    @ydeatskoR和@sogyals429的文档的答案正确。更具体地说:

    resource "aws_instance" "test" {
      # ... (all the stuff at the top)
    
      lifecycle {
        ignore_changes = [
          ami,
        ]
      }
    }
    

    注意:文档移动到:

    它将按照您的猜测被销毁并重新创建。您可以使用ignore_changes生命周期来防止这种情况。它将按照您的猜测被销毁并重新创建。您可以通过使用“忽略更改”生命周期来防止这种情况。