升级到 0.13 后如何修复 Terraform 不受支持的属性“ses_smtp_password”?

Bre*_*nor 1 terraform terraform-provider-aws

升级后,我在运行 a 时收到如下消息terraform plan

Error: Invalid resource instance data in state

  on iam_server_backup.tf line 4:
   4: resource "aws_iam_access_key" "backup" {

Instance aws_iam_access_key.backup data could not be decoded from
the state: unsupported attribute "ses_smtp_password".
Run Code Online (Sandbox Code Playgroud)

我修复它的方法是删除状态 ( terraform state rm aws_iam_access_key.backup)。但是,这在我运行时创建了新的访问密钥terraform apply,这很耗时,因为我必须更改所有应用程序中的所有访问密钥。有没有更好的方法来解决这个问题?

mmr*_*ins 5

unsupported attribute "ses_smtp_password"在更新 aws terraform 提供程序时遇到了同样的问题,并且能够通过手动下载和修改状态来修复它。

terraform state pull > state.json
Run Code Online (Sandbox Code Playgroud)

现在编辑state.json

  • 删除任何行 ses_smtp_password
  • 增加serial属性(例如"serial": 21,-> "serial": 22,
  • 节省
terraform state push state.json
terraform plan # should work again
Run Code Online (Sandbox Code Playgroud)

可选,但这样做是为了避免意外提交状态文件

rm state.json 
Run Code Online (Sandbox Code Playgroud)


Mar*_*k B 2

此错误与您升级到 Terraform 0.13 无关,实际上是由于从 AWS Terraform 提供程序的版本 2.x 升级到版本 3.x 造成的。如AWS Terraform 提供程序 3.0 升级指南中所述,您需要从使用切换ses_smtp_passwordses_smtp_password_v4.

进行此更改的原因是 SES 将在 2020 年 10 月停止接受旧类型的密码,因此您必须在此之前升级到使用版本 4 签名的密码。

如您所见,您需要从 Terraform 状态中删除旧密码,并让 Terraform 生成新ses_smtp_password_v4密码。