如何引用另一个CloudFormation模板中未配置Outputs的资源?
问题解答
是的,必须修改file1.yaml添加对应Outputs导出配置并重新部署file1对应的CloudFormation栈,这是使用CloudFormation原生跨栈引用能力的唯一要求,没有可以绕开该步骤的官方方案。
核心原因
CloudFormation的!ImportValue内置函数仅能拉取同一AWS账户、同一区域下其他CloudFormation栈的Outputs段中显式配置了Export的资源属性,未配置导出的栈内资源属于内部私有资源,其ID、ARN等属性不会对外暴露,其他栈无法直接读取。
操作注意事项
- 仅新增
Outputs导出配置、不修改原有Resources段配置的前提下,更新file1对应的栈不会影响已经部署运行的安全组、云服务器等实际资源,不会触发实例重启、重建操作。 - 导出的
Name值需要保证当前区域全局唯一,不能和其他栈的导出名称冲突。 - 后续如果需要删除file1对应的栈,必须先删除/修改所有引用了其导出值的栈,移除依赖关系后才能正常删除原栈。
不推荐的替代方案
如果确实暂时无法修改原栈配置,可以手动查询SG1的安全组ID,硬编码到file2.yaml的对应参数位置,但该方案完全脱离CloudFormation的资源关联管理,后续SG1如果发生重建、ID变更等情况,file2的配置会直接失效,且CloudFormation不会自动同步更新,生产环境不建议使用。
内容的提问来源于stack exchange,提问作者ca9163d9
相关产品推荐
相关产品推荐

