如何解决 CloudFormation 中的更改集错误?
上次更新时间:2021 年 3 月 17 日
当我尝试将资源导入 AWS CloudFormation 堆栈时,我遇到了错误。
简短描述
根据您遇到的错误类型,完成以下相应部分中的步骤
- 排查输出错误
- 排查堆栈属性验证错误
- 排查资源已被修改的错误
- 排查要导入的资源列表错误
注意:如果您在运行 AWS 命令行界面 (AWS CLI) 命令时遇到错误,请确保您使用的是最新版的 AWS CLI。
解决方法
排查输出错误
如果您遇到以下错误:
There was an error creating this change set.
As part of the import operation, you cannot modify or add [Outputs]
请尝试以下问题排查步骤:
1. 比较最新 CloudFormation 模板与您的堆栈当前正在使用的模板的 Outputs(输出)部分。两个模板的 Outputs(输出)部分应该相同。
如果其中的值不一样,请更新最新的模板以使其与您的堆栈当前正在使用的模板 Outputs(输出)部分的值和输出完全一致。
重要提示:导入操作不能包含对 Outputs(输出)部分中 Logical ID(逻辑 ID)、Description(描述)、Value(值)、Export(导出)以及其他参数的增加和修改。
2. 导入操作完成后,使用所需的 Outputs(输出)配置更改再次更新堆栈。
排查堆栈属性验证错误
如果您遇到以下错误:
An error occurred (ValidationError) when calling the CreateChangeSet operation: As part of the import operation, you cannot modify or add [Tags]
请尝试以下问题排查步骤:
1. 确认所包含用于更改集创建操作的堆栈属性(例如 Tags 或 NotificationARNs)与堆栈的当前属性值同步。
重要提示:请勿更新或添加任何新属性值。
2. 导入资源后,通过单独的更新操作更新属性。
注意:当使用 AWS CLI 或 AWS 开发工具包创建 IMPORT 类型的更改集并包含修改或添加的堆栈属性时,会出现此错误。
排查资源已被修改的错误
在资源导入操作期间修改现有的资源时,会引发此错误。在导入操作期间,不允许执行创建、更新和删除操作。
如果您遇到此错误:
There was an error creating this change set
You have modified resources [ResourceName] in your template that are not being imported. Update, create or delete operations cannot be executed during import operations.
请尝试以下操作:
1. 创建 UPDATE 类型的更改集而不是 IMPORT 类型的更改集。这将会显示资源中的更改源。
2. 使用与现有资源完全相同的 Resources(资源)规范,并且只添加应导入模板的资源。
排查要导入的资源列表错误
如果您遇到以下错误:
An error occurred (ValidationError) when calling the CreateChangeSet operation: Resources [<ResourceName>] is missing from ResourceToImport list
An error occurred (ValidationError) when calling the CreateChangeSet operation: Must Provide at least one resource to import
请尝试以下操作:
1. 验证您是否在 AWS CLI 命令包含了 --resources-to-import,或在 API 调用中包含了ResourceToImport。此外,请务必列出所有要导入的资源。
注意:这些错误通常会在使用 AWS CLI 或 AWS 开发工具包创建 IMPORT 类型的更改集时发生。
重要提示:您必须将某个物理 ID 传递给所有要导入的新资源。