导入密钥对后运行 terraform apply 时,terraform 想要销毁(替换)它,为什么以及这意味着什么?

Tim*_*imo 1 amazon-web-services terraform terraform-provider-aws

我有以下地形配置:

resource "aws_key_pair" "default_key_pair" {
  key_name   = "default_key_pair"
  public_key = file("../../public_keys/default_key.pub")
}
Run Code Online (Sandbox Code Playgroud)

然后,我最初运行:

terraform import aws_key_pair.default_key_pair default_key_pair
Run Code Online (Sandbox Code Playgroud)

跟进的是

terraform apply
Run Code Online (Sandbox Code Playgroud)

然后它说

# aws_key_pair.default_key_pair must be replaced
-/+ resource "aws_key_pair" "default_key_pair" {
      ~ arn             = "arn:aws:ec2:place:id:key-pair/default_key_pair" -> (known after apply)
      ~ fingerprint     = "safasldjfjfljasfjasodjflasjfsdljfasdjf" -> (known after apply)
      ~ id              = "default_key_pair" -> (known after apply)
      + key_name_prefix = (known after apply)
      ~ key_pair_id     = "key-somethin-something" -> (known after apply)
      ~ key_type        = "ed25519" -> (known after apply)
      + public_key      = "ssh-ed25519 SNIP SNIP" # forces replacement
      - tags            = {} -> null
        # (2 unchanged attributes hidden)
    }
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我继续使用它,并且肯定旧密钥对似乎工作正常。然而,查看 terraform 状态数据,我可以看到 key_pair_id (我的意思是看起来像 的 id key-0f7664ff3fbd3ed0b)确实比以前发生了变化(我之前运行过terraform state rm "aws_key_pair.default_key_pair" && terraform destroy,在我不主动的时候关闭服务器使用它们并记下之前的密钥对 ID)。那么,究竟发生了什么以及为什么?我只是期望导入密钥后不需要进行任何更改即可使用它。

Mar*_*o E 5

根据资源文档导入部分aws_key_pair的注释:

AWS API 在响应中不包含公钥,因此 terraform apply 将尝试替换密钥对。目前没有针对此限制的受支持的解决方法。