【发布时间】:2018-07-29 20:01:27
【问题描述】:
我正在使用 CloudFormation 来管理 CloudFront 分配。
在这个 CloudFront 分布上,我关联了一个 Lambda Edge 函数(不使用 CloudFormation)。
问题出在后面,当我使用相同的 CloudFormation 堆栈更新 CloudFront 分配时,它删除了所有 Lambda Edge 关联。
如何预防?
真是可惜了。。
PS:有时 CloudFormation 会删除 Lambda 关联(例如在更新证书 ARN 时),有时不会。
编辑:我可以尝试使用https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/protect-stack-resources.html,但有没有更简单的方法?不..
编辑:AWS 论坛 https://forums.aws.amazon.com/thread.jspa?threadID=274111 上的相同问题(需要登录)
【问题讨论】:
-
我怀疑问题的核心在于 CloudFormation 可以说是在做正确的事情 - CloudFront
UpdateDistributionAPI action 是一个整体操作,其中必须指定分发的所有属性,而不仅仅是更改.控制台隐藏了这种复杂性。 CloudFormation 可能只是将其更改为“应该”的样子。 -
@michael-sqlbot 是的.. 但是我应该如何添加 Lambda 关联?.. 看起来像 AWS“错误”。我认为将 Lambda 关联与 CloudFront 分配本身去关联是有意义的。也许 AWS 认为 Lambda Edge 和 CloudFront 高度耦合(但这太糟糕了)
-
它们非常高度耦合。事实上,这是一种轻描淡写的说法。 Lambda@Edge 是 CloudFront 的一部分——该部分能够挂钩请求和响应并调用 Lambda 函数。触发器(时间和功能)是缓存行为的属性。如果 CloudFormation 控制您的分配,您似乎应该从那里添加 Lambda 触发器,而不是直接添加。
-
是的,它们看起来高度耦合。问题是我有 3 Lambda@Edge 用于具有自己生命周期的不同事件(源响应、源请求、查看器响应)......还有 那些相同的 3 Lambda@Edge b> 用于 5 个不同的 CloudFront 分配。我被困住了。也许我的架构违背了 AWS 对 Lambda@Edge 的愿景:-/
标签: amazon-web-services aws-lambda amazon-cloudfront amazon-cloudformation aws-lambda-edge