当我尝试将资源导入 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]"(“创建此更改集时出错。在导入操作过程中,您无法修改或添加 [Outputs]”)
将资源导入堆栈时会出现此错误。使用资源导入模板创建新堆栈且模板通过 CloudFormation 控制台有输出时,也会发生这种情况。尝试以下故障排除步骤:
1. 将最新 CloudFormation 模板的 Outputs 部分与您的堆栈当前使用的模板进行比较。两个模板中的 Outputs 部分必须相同。如果值不相同,请更新最新的模板,以匹配当前模板的 Outputs 部分中的值和输出。
**重要事项:**导入操作不能包含对 Outputs 中 Logical 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]”(调用 CreateChangeSet 操作时出现错误 (ValidationError):在导入操作过程中,您无法修改或添加 [Tags])
当您使用 AWS CLI 或 AWS SDK 创建 IMPORT 类型更改集,且更改集包含已修改或添加的堆栈属性时,会出现此错误。
尝试以下故障排除步骤:
1.更改确认更改集创建操作中包含的堆栈属性与堆栈的当前属性值同步。
**重要事项:**不要更新或添加任何新的属性值。
2. 导入资源后,另外执行单独的更新操作更新您的属性。
排查资源已被修改的错误
"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."(“创建此更改集时出错。您在模板中修改了未导入的资源 [ResourceName]。在导入操作期间无法执行更新、创建或删除操作。”)
当您在资源导入操作期间修改现有资源时,会出现此错误。在导入操作期间,您无法创建、更新和删除资源。
尝试以下故障排除步骤:
1. 创建 UPDATE 类型更改集,而非 IMPORT 类型更改集。这会为您显示资源中更改的来源。
2. 对现有资源使用相同的资源规范,仅向模板添加要导入的相应资源。
排查要导入的资源列表错误
当您使用 AWS CLI 或 AWS SDK 创建 IMPORT 类型更改集时,通常会出现以下错误。
“An error occurred (ValidationError) when calling the CreateChangeSet operation: Resources [<ResourceName>] is missing from ResourceToImport list”(调用 CreateChangeSet 操作时出现错误 (ValidationError):资源 [] 从 ResourceToImport 列表中缺失)
如果您收到上述错误,请尝试以下故障排除步骤:
在您的 CloudFormation 模板中,确认您在将物理 ID 传递到要导入堆栈的所有资源的 ResourceToImport 属性中。
“An error occurred (ValidationError) when calling the CreateChangeSet operation: Must Provide at least one resource to import”(调用 CreateChangeSet 操作时出现错误 (ValidationError):必须提供至少一个要导入的资源)
如果您收到上述错误,请尝试以下故障排除步骤:
确认您在 AWS CLI 命令中包含 --resources-to-import,或者在 API 调用中包含 ResourceToImport。另外,请务必列出所有要导入的资源。
**重要事项:**必须将物理 ID 传递给所有新资源才能导入。
相关信息
从现有资源创建堆栈
将现有资源导入堆栈
支持导入和偏差检测操作的资源
将现有资源引入 CloudFormation 管理