首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对“参考另一个堆栈中的资源”的CloudFormation更新支持

对“参考另一个堆栈中的资源”的CloudFormation更新支持
EN

Stack Overflow用户
提问于 2016-04-08 08:09:43
回答 1查看 1.4K关注 0票数 3

我正在使用来自演练:请参阅其他堆栈中的参考资料的示例来引用来自另一个堆栈的资源(我认为它非常有用,应该是一个开箱即用的特性)。但是,该示例似乎不适用于更新,即,如果将新输出添加到引用堆栈中。

有趣的是,lambda函数甚至没有根据日志和度量标准调用,因此它似乎不是一个可以在代码中修复的问题。不过,我确实认为,在更新时,代码应该按照PhysicalResourceId使用不同的在更新期间替换自定义资源

注意:这是一个来自https://forums.aws.amazon.com/thread.jspa?threadID=228649的交叉帖子。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-13 14:04:17

结果表明,CloudFormation只在其属性发生更改时才更新自定义资源。一旦发生这种情况,自定义资源应该会发出信号表示它发生了变化。所以

取代:

代码语言:javascript
运行
复制
response.send(event, context, response.SUCCESS, responseData);

使用

代码语言:javascript
运行
复制
var crypto = require('crypto');
var hash = crypto.createHash('md5').update(JSON.stringify(responseData)).digest('hex');
response.send(event, context, response.SUCCESS, responseData, hash);

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

代码语言:javascript
运行
复制
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

不过,这仍然需要更改属性。我想出的最好方法是向自定义资源传递一个伪随机参数:

代码语言:javascript
运行
复制
{
  "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" }
      }
    }
  }
}

未知参数(即Random)被lambda函数忽略。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36494623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档