Amazon web services “云信息更新”支持;请参阅另一个堆栈中的资源“;
我使用来自的示例引用另一个堆栈中的资源(我认为这非常有用,应该是一个现成的特性)。但是,该示例似乎不适用于更新,即,如果将新输出添加到引用的堆栈中 有趣的是,lambda函数甚至没有根据日志和度量进行调用,因此它似乎不是一个可以在代码中修复的问题。我确实认为,代码应该在更新时使用不同的Amazon web services “云信息更新”支持;请参阅另一个堆栈中的资源“;,amazon-web-services,amazon-cloudformation,aws-lambda,Amazon Web Services,Amazon Cloudformation,Aws Lambda,我使用来自的示例引用另一个堆栈中的资源(我认为这非常有用,应该是一个现成的特性)。但是,该示例似乎不适用于更新,即,如果将新输出添加到引用的堆栈中 有趣的是,lambda函数甚至没有根据日志和度量进行调用,因此它似乎不是一个可以在代码中修复的问题。我确实认为,代码应该在更新时使用不同的PhysicalResourceId 注意:这是一篇来自的交叉文章。事实证明,CloudFormation只会在自定义资源的某个属性发生更改时更新该资源。一旦发生这种情况,定制资源应该发出它已更改的信号。所以 替换
PhysicalResourceId
注意:这是一篇来自的交叉文章。事实证明,CloudFormation只会在自定义资源的某个属性发生更改时更新该资源。一旦发生这种情况,定制资源应该发出它已更改的信号。所以 替换:
response.send(event, context, response.SUCCESS, responseData);
与
这将导致更新期间发生以下事件:
15:08:16 UTC+0200 UPDATE_COMPLETE Custom::NetworkInfo NetworkInfo
15:08:15 UTC+0200 UPDATE_IN_PROGRESS Custom::NetworkInfo NetworkInfo Requested update required the provider to create a new physical resource
15:08:08 UTC+0200 UPDATE_IN_PROGRESS Custom::NetworkInfo NetworkInfo
但这仍然需要更改属性。我想到的最好方法是向自定义资源传递一个伪随机参数:
{
"Parameters": {
"Random": {
"Description": "Random value to force stack-outputs update",
"Type": "String"
}
},
"Resources": {
"NetworkInfo": {
"Type": "Custom::NetworkInfo",
"Properties": {
"ServiceToken": { "Fn::GetAtt" : ["LookupStackOutputs", "Arn"] },
"Random": { "Ref": "Random" },
"StackName": { "Ref": "NetworkStackName" }
}
}
}
}
未知参数(即随机
)被lambda函数忽略
{
"Parameters": {
"Random": {
"Description": "Random value to force stack-outputs update",
"Type": "String"
}
},
"Resources": {
"NetworkInfo": {
"Type": "Custom::NetworkInfo",
"Properties": {
"ServiceToken": { "Fn::GetAtt" : ["LookupStackOutputs", "Arn"] },
"Random": { "Ref": "Random" },
"StackName": { "Ref": "NetworkStackName" }
}
}
}
}