无法删除AWS Lambda @ Edge副本

Fra*_*ois 21 lambda amazon-web-services amazon-cloudfront aws-lambda aws-lambda-edge

这个问题已经存在,但我认为它会对SO产生更大的影响.

我创建了一个AWS Lambda @ Edge函数,以便在Cloudfront URL到达Origin之前重写它.
AWS Lambda @ Edge函数在发布时会自动复制到所有区域,因此我对每个区域都看到这一点并不感到惊讶:

在此输入图像描述

这里开始出现问题:
我删除了Lambda @ Edge,因为它是一个测试,我想开始一个全新的,但复制品不会同时被删除.
当时没什么大不了的,我以为我可以创建一个新的Lambda @ Edge功能.
但你不能,因为Cloudfront触发器一次只能使用一个函数(因为副本使用它,你不能创建一个新函数).
而且,触发器也不能删除.

所以现在我无法在任何地方使用Lambda @ Edge复制品,我无法删除,也无法创建类似的复制品.


TL; DR

  • 我使用CloudFront触发器创建了Lambda @ Edge
  • 我删除它以创建一个新的(类似的)
  • 现在还有一个复制品
  • 我无法删除副本
  • 我无法创建新的Lambda @ Edge,因为副本已经"正在使用"触发器(我无法删除)

我很感激能得到这个
弗朗索瓦的 帮助


编辑:

我绝对认为这是一个错误,因为在我的副本页面中,主ARN的链接以404响应.

Fra*_*ois 13

我找到了答案的一部分:

事实证明,我需要删除Cloudfront行为中的触发器.
只是:

  • 转到Cloudfront分发的行为
  • 检查触发LambdaEdge的那个
  • 点击 Edit
  • 转到页面的最底部,然后单击X以删除触发器

不过,我无法删除副本,但至少我可以为此触发器创建新的lambda ...

  • 如果 Cloudformation 已经删除了 Cloudfront 发行版,您该怎么办? (3认同)
  • 关于此的AWS文档完全不错. (2认同)
  • 所以我在 AWS 峰会上与架构师讨论了这个问题。您的解决方案是正确的(即删除与其关联的每个行为中的触发器)。您将无法立即删除该函数(因为它已被复制,删除此关联需要时间),但是如果您给它 24 小时以使其传播,那么您将能够删除该函数。 (2认同)
  • 我有一些 Lambda,其中 CloudFront 分配已被删除一周,但我仍然无法删除它们。我最终制作了一个新的 CloudFront 分配,将其添加为触发器,然后删除触发器。然后在分发更新后,我可以删除 Lambdas (2认同)

rek*_*eki 5

我向AWS支持询问了这个问题,答案就像:"你现在不能删除复制的lambda函数,但我们知道很多人都需要这个".

AWS Lambda @ Edge http://docs.aws.amazon.com/es_es/lambda/latest/dg/lambda-edge.html

创建触发器时,Lambda会将该功能复制到全球范围内的AWS Regions和CloudFront边缘位置.请注意,无法编辑或删除副本.


lon*_*ony 5

现在这里有一个文档说明副本在“几个小时”后被删除 - 这意味着我也可以删除 Lambda 函数。

2020 年1 月 5 日更新:如果删除 Lambda,则需要大约 1 小时,一切都消失了!所以它只是更慢但表现得与普通的 Lambda 相似?

  • 如果这一直都是真的就好了。我已经经历过这工作和不工作。例如,我有一个 L@E 函数,它已经超过 24 小时没有与 CF 发行版关联,但我仍然无法删除它! (2认同)

DHE*_*RAJ 5

嗨,弗朗索瓦伊夫、雷基,我已经找到了删除 Lambda@edge 副本的解决方案。

  1. 首先,登录 CloudFront 控制台并转到您的Distribution
  2. “行为”选项卡下 - 勾选列出的“行为”编辑
  3. 向下滚动到 Lambda Function Associations 并通过单击X删除任何关联。
  4. “是,编辑”保存更改。--- 现在您已经删除了关联,是时候删除 Lambda@edge 副本了
  5. 转到 Lambda 控制台并打开您的 lambda(您想要删除)。
  6. 在顶部菜单 -限定符->版本-> 选择列出的下拉版本 在此输入图像描述
  7. 它将打开 @edgeLambda 版本
  8. 在顶部菜单 -操作->删除版本 在此输入图像描述
  9. 这样,删除所有版本 - 您只剩下$LATEST
  10. 也删除它 - 您终于可以删除 Lambda@edge 函数

注意!> 请记住删除与 Lambda@edge 函数关联的任何 IAM 角色和权限。

我希望这对你有用,享受吧:)