如何解决Cloudformation中“以下资源更新失败”的问题?

问题描述 投票:0回答:1

我有一个使用 AWS CodePipeline 的多账户管道,但在产品账户中出现故障。该管道将在开发和测试中工作,但在生产中失败,并且 Cloudformation 堆栈给出错误:“以下资源无法更新:”并列出了多个 Lambda 函数。有人知道怎么修这个东西吗?我检查了权限并将其与其他帐户进行了比较,它们似乎匹配。据我了解,资源是在 CF 的控制之下,应该可以通过 CDK 进行更改? Lambda 函数的 CDK 定义似乎与 AWS 中当前的配置相匹配,因此我无法理解为什么它不再起作用。

资源也被“漂移”,为了解决这个问题,我从堆栈中删除了资源,并确保在删除之前包含“DeletionPolicy:“保留”。我当然导入了这些资源,但我想知道这是否可能是来源问题是什么?

这个真是绞尽脑汁

amazon-web-services aws-cloudformation aws-cdk aws-codepipeline
1个回答
0
投票

对于任何 Cloudformation 故障,首先要查看的位置是堆栈的“事件”选项卡,然后查找发生的情况。有一个非常好的“检测根本原因”按钮,通常会将您指向第一个故障事件。大多数时候,那里的消息应该提供足够的信息。有时,Cloudformation 消息的信息不足以让您知道该怎么做。

在这种情况下,您可以通过检查 Cloudtrail 来检查 Cloudformation 正在做什么。然后,您可能会看到输入和失败操作的错误。

基本上,Cloudformation 执行的每个操作都是在幕后进行 AWS API 调用,通常在同一区域中,除非某些内容是跨区域的或者是登录到 us-east-1 中的全球服务。

默认情况下,当您查看 Cloudtrail 时,在事件页面中它会显示最近的非只读操作。 Cloudtrail 可能需要几分钟时间才能显示所有最近的操作。在事件页面中,您可以更改表的列以显示错误代码,以便您可以快速找到哪些事件失败。您可能必须按用户名、资源服务或事件名称(失败的操作名称)进行过滤,才能找到违规事件/API 操作。一旦您找到失败的操作,您就可以查看输入,看看它是否符合您基于模板的预期,并且那里的错误消息可能包含更多信息。

我还建议检查Cloudformation故障排除指南以及未能帮助您进一步调试的服务的故障排除指南。

© www.soinside.com 2019 - 2024. All rights reserved.