我一直在将terraform配置从0.11升级到0.13,并从状态文件中删除了一个模块(使用terraform state rm module.mymodulename)。
在删除上面的资源后,我现在在运行计划命令时遇到了很多错误。现在,我不太确定它是否与删除模块有关,或者是否与升级有关。我可以看到aws_ecs_service已弃用了placement_strategy属性,我对如何安全地从状态文件中删除它有些困惑。
Placement_strategy不是我在资源中定义的,只是早期版本中的默认设置。
任何有关如何解决以下问题的建议吗?我需要将其备份并在我们的开发环境中运行。我倾向于删除资源“ aws_ecs_service”“ myappadmin-service”,然后再次导入。
terraform plan
Error: Invalid resource instance data in state
on ecs-instance-role.tf line 23:
23: resource "aws_iam_instance_profile" "ecs-instance-profile" {
Instance aws_iam_instance_profile.ecs-instance-profile data could not be
decoded from the state: unsupported attribute "roles".
Error: Invalid resource instance data in state
on modules\myappadmin\service.tf line 1:
1: resource "aws_ecs_service" "myappadmin-service" {
Instance module.myappadmin.aws_ecs_service.myappadmin-service data could not be
decoded from the state: unsupported attribute "placement_strategy".
Error: Invalid resource instance data in state
on modules\myappadmin\service.tf line 1:
1: resource "aws_ecs_service" "myappadmin-service" {
Instance module.myappadmin.aws_ecs_service.myappadmin-service data could not be
decoded from the state: unsupported attribute "placement_strategy".
Error: Invalid resource instance data in state
on modules\myappadmin\service.tf line 1:
1: resource "aws_ecs_service" "myappadmin-service" {
Instance module.myappadmin.aws_ecs_service.myappadmin-service data could not be
decoded from the state: unsupported attribute "placement_strategy".
Error: Invalid resource instance data in state
on modules\myappadmin\service.tf line 1:
1: resource "aws_ecs_service" "myappadmin-service" {
Instance module.myappadmin.aws_ecs_service.myappadmin-service data could not be
decoded from the state: unsupported attribute "placement_strategy".
Error: Invalid resource instance data in state
on modules\myappadmin\service.tf line 1:
1: resource "aws_ecs_service" "myappadmin-service" {
Instance module.myappadmin.aws_ecs_service.myappadmin-service data could not be
decoded from the state: unsupported attribute "placement_strategy".
Error: Invalid resource instance data in state
on modules\myappadmin\service.tf line 1:
1: resource "aws_ecs_service" "myappadmin-service" {
Instance module.myappadmin.aws_ecs_service.myappadmin-service data could not be
decoded from the state: unsupported attribute "placement_strategy".
答案 0 :(得分:3)
我不确定这个完全解释了您所看到的内容,但是这些错误之一似乎与a change to aws_ecs_service
in AWS provider major version 2有关,这表明您同时升级了Terraform 和同时提供AWS提供商。
为了更容易理解发生的情况,我建议一次只升级一个组件,这样您就可以在进行下一个升级之前进行一次升级所需的任何更改,因此您不必进行关联同时发布各种不同组件的发行说明。
鉴于您在这里看到的内容,我建议针对您的案例进行以下排序:
尽管分四个步骤进行操作似乎比繁重的操作困难,但这应意味着在每个步骤中,您只需要担心一组发行说明,并且您可以将需要进行的所有调试仅集中在一个组件上。
请注意,上面我描述了一次升级一个主要版本,而不是跳过。特别是Terraform CLI不支持直接从Terraform v0.11升级到v0.13,因为Terraform v0.13中不再提供从Terraform v0.12进行的自动升级工具。 AWS提供程序有可能直接从v1升级到v3,但是要这样做,您需要立即查阅两个版本的发行说明。
在上述过程中的某些时候,您可能会再次遇到这些错误。如果是这样,您将能够了解导致问题的更改,并有可能针对该组件(AWS提供程序或Terraform CLI,取决于您刚刚升级的组件)报告该问题。