gpt4 book ai didi

amazon-web-services - CloudFormation 更新支持 "Refer to Resources in Another Stack"

转载 作者:行者123 更新时间:2023-12-05 05:23:57 25 4
gpt4 key购买 nike

我正在使用 Walkthrough: Refer to Resources in Another Stack 中的示例从另一个堆栈引用资源(我认为这非常有用,并且应该是一个开箱即用的功能)。但是,该示例似乎不适用于更新,即如果将新输出添加到引用的堆栈中。

有趣的是,lambda 函数甚至没有根据日志和指标进行调用,因此这似乎不是一个可以在代码中修复的问题。我确实认为代码应该根据 Replacing a Custom Resource During an Update 在更新时使用不同的 PhysicalResourceId .

注意:这是来自 unanswered AWS Forum thread 的交叉帖子

最佳答案

事实证明,只有当自定义资源的属性之一发生更改时,CloudFormation 才会更新该资源。一旦发生这种情况,自定义资源应该发出它已更改的信号。所以

替换:

response.send(event, context, response.SUCCESS, responseData);

var crypto = require('crypto');
var hash = crypto.createHash('md5').update(JSON.stringify(responseData)).digest('hex');
response.send(event, context, response.SUCCESS, responseData, hash);

这将导致更新期间发生以下事件:

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 函数忽略。

关于amazon-web-services - CloudFormation 更新支持 "Refer to Resources in Another Stack",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36494623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com