如何修复Terraform不支持的属性;ses“smtp密码”;升级到0.13之后?
升级后,当运行如何修复Terraform不支持的属性;ses“smtp密码”;升级到0.13之后?,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,升级后,当运行地形平面图时,我收到如下消息: 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:
地形平面图时,我收到如下消息:
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".
我修复它的方法是删除状态(terraformstate rm aws\u iam\u access\u key.backup
)。然而,当我运行terraformapply
时,它创建了新的访问密钥,这很耗时,因为我必须更改所有应用程序中的所有访问密钥。是否有更好的方法解决此问题?此错误与您升级到Terraform 0.13无关,实际上是由于从AWS Terraform provider的2.x版升级到3.x版。如中所述,您需要从使用ses\u smtp\u密码切换到ses\u smtp\u密码\u v4
此更改的原因是SES将在2020年10月停止接受旧类型的密码,因此在此之前,您必须升级到使用版本4签名的密码
如您所见,您需要从Terraform状态中删除旧密码,并让Terraform生成新的ses\u smtp\u password\u v4
密码。此错误与您升级到Terraform 0.13无关,实际上是由于从AWS Terraform provider的2.x版升级到3.x版。如中所述,您需要从使用ses\u smtp\u密码切换到ses\u smtp\u密码\u v4
此更改的原因是SES将在2020年10月停止接受旧类型的密码,因此在此之前,您必须升级到使用版本4签名的密码
如您所见,您需要从Terraform状态中删除旧密码,并让Terraform生成新的ses\u smtp\u password\u v4
密码。我在更新aws Terraform提供程序时遇到了同样的不受支持的属性“ses\u smtp\u password”
问题,并且能够通过手动下载和修改状态来修复它
terraform state pull > state.json
现在编辑state.json
和
- 删除带有
ses\u smtp\u密码的任何行
- 增加
serial
属性(例如“serial”:21,
->“serial”:22,
)
- 拯救
可选,但使其成为您不会意外提交状态文件
rm state.json
更新aws terraform提供程序时,我遇到了同样的不受支持的属性“ses_smtp_password”
问题,并且能够通过手动下载和修改状态来修复它
terraform state pull > state.json
现在编辑state.json
和
- 删除带有
ses\u smtp\u密码的任何行
- 增加
serial
属性(例如“serial”:21,
->“serial”:22,
)
- 拯救
可选,但使其成为您不会意外提交状态文件
rm state.json
我也只是面对这个问题,并希望提供一个解决方案,不需要与国家捣乱
解决方案是在升级到terraform 0.13之前将AWS提供程序升级到~>3.0。这导致ses\u smtp\u password
字段从状态中删除,从而允许升级到terraform 0.13而不会出现问题
不幸的是,我不理解这是如何工作的,我猜TF 0.13中有一个变化,这会导致在删除不推荐的属性时出现异常,因为TF 0.12使用的是0.13使用的同一版本的提供程序。我也刚刚面临这个问题,希望提供一个不需要处理的解决方案国家
解决方案是在升级到terraform 0.13之前将AWS提供程序升级到~>3.0。这导致ses\u smtp\u password
字段从状态中删除,从而允许升级到terraform 0.13而不会出现问题
不幸的是,我不理解这是如何工作的,我猜TF 0.13中有一个变化,这导致了在删除不推荐的属性时出现异常,因为TF 0.12使用的是与0.13使用的提供程序相同的版本。我与azurerm
提供程序有相同的问题。它被固定到版本~>1.44
,在更新到terraform 0.13之后,不受支持的属性
错误开始出现
是什么为我解决了问题(无需升级提供商):
运行terraform 0.13upgrade
-这将创建版本。tf
,并使用新格式的提供商版本约束,即:
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~> 1.44"
}
}
required_version = ">= 0.13"
}
现在,将source=“hashicorp/azurerm”
更改为source=“-/azurerm”
。这将使terraform使用旧的提供程序版本
对于AWS provider,您应该有一些非常相似的东西,具有不同的提供者名称和版本。我对azurerm
提供者也有同样的问题。它被固定到版本~>1.44
,在更新到terraform 0.13之后,不受支持的属性
错误开始出现
是什么为我解决了问题(无需升级提供商):
运行terraform 0.13upgrade
-这将创建版本。tf
,并使用新格式的提供商版本约束,即:
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~> 1.44"
}
}
required_version = ">= 0.13"
}
现在,将source=“hashicorp/azurerm”
更改为source=“-/azurerm”
。这将使terraform使用旧的提供程序版本
对于AWS提供商,您应该有一些非常相似的东西,具有不同的提供商名称和版本。Github PR用于删除属性:@mark-b,我应该提到它,但我从未创建至少我知道的ses_smtp_密码。Github PR用于删除属性:@mark-b,我应该提到它,但至少我知道我从未创建过ses_smtp_密码。你是否在任何地方使用/指定了ses_smtp_密码
?不,它不在我的配置中的任何地方。你是否在任何地方使用/指定了ses_smtp_密码
?不,它不在我的配置中