使用 Cloudformation 更新 LaunchConfig

Updating the LaunchConfig using Cloudformation

我们有一组 Cloudformation 模板来构建多个模块并维护基本模板以保存常见属性,如 AMI ID、VPC ID 等。Modulewise 模板将进行函数调用以获取所需的 属性来自基础堆栈。以下是 LaunchConfig 创建属性的示例。

"Properties" : {
    "AssociatePublicIpAddress" : { "Fn::GetAtt" : [ "NetworkStackInfo", "UsePublicIP" ] },
    "KeyName"                  : { "Fn::GetAtt": [ "BaseStackInfo", "StackKey" ] },
    "InstanceMonitoring"       : { "Fn::GetAtt": [ "BaseStackInfo", "EnableDetailedMonitoring" ] },
    "ImageId" : { "Fn::GetAtt": [ "BaseStackInfo", "MVCustomAMI" ] } 
}

我正在尝试更新 AMI id、VPC id 并重新构建所有堆栈。我已经完成了基础堆栈更新,它在堆栈输出中反映了新的 AMI/VPC ID。现在,当我尝试更新模块堆栈时,它没有检测到 Base 堆栈中新的 属性 更改,因此当我尝试更新堆栈时它没有采取任何操作。

有人可以帮我看看我是否遗漏了任何步骤吗?

回答我的问题,希望对某人有所帮助。

Cloudformation 通常缓存任何堆栈更新操作的依赖堆栈的输出。除非相应的资源被重命名或更改,否则不会提取新值,而是使用现有的缓存条目。
为了解决这个问题,我们需要重命名逻辑资源名称或向资源添加一些测试 属性,以便它将删除该资源并从该依赖堆栈中提取最新值。