37

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

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

在此处输入图像描述

问题从这里开始
我删除了 Lambda@Edge,因为它是一个测试,我想开始一个新的,但是副本没有同时被删除。
当时这没什么大不了的,我认为我可以简单地创建一个新的 Lambda@Edge 函数。
但是你不能,因为Cloudfront 触发器一次只能使用一个函数(因为副本使用它,你不能创建一个新函数)。
而且,触发器也不能删除

所以现在我到处都使用 Lambda@Edge 副本,我无法删除,也无法创建类似的副本。


TL;博士

  • 我使用 CloudFront 触发器创建了 Lambda@Edge
  • 我删除它以创建一个新的(类似的)
  • 现在有一个副本仍然存在
  • 我无法删除副本
  • 我无法创建新的 Lambda@Edge,因为触发器已被副本“使用”(我无法删除)

我很感激能在这个
François 上得到一些帮助


编辑:

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

4

7 回答 7

29

我找到了答案的一部分:

事实证明,我需要删除 Cloudfront 行为中的触发器
简单地:

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

尽管如此,我还是不能删除副本,但至少我可以为这个触发器创建新的 lambdas ......

于 2017-07-25T13:30:40.640 回答
6

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

2020-01-05 更新:如果您删除 Lambda,大约需要 1 小时,然后一切都消失了!所以它只是更慢但行为类似于普通的 Lambdas?

于 2018-10-18T09:04:11.460 回答
5

我向 AWS 支持人员询问了这个问题,它的回答是:“你现在不能删除复制的 lambda 函数,但我们知道很多人需要这个”。

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

当您创建触发器时,Lambda 将该函数复制到全球的 AWS 区域和 CloudFront 边缘站点。请注意,无法编辑或删除副本。

于 2017-08-02T09:27:32.043 回答
4

嗨, francoisyvesreki ,我已经找到了删除 Lambda@edge 副本的解决方案。

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

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

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

于 2020-04-27T07:26:04.893 回答
1

即使我尝试*删除触发器然后创建 lambda(在我的情况下 lambda 达到近 30)*,但我无法创建新的 lambda@edge。最后我做到了

移除了与 lambda 函数相关的云端分布,现在更容易进一步移动。请确保该发行版仅由该相关 lambda 使用。

于 2018-02-15T08:54:39.153 回答
1

最佳答案我发现可以删除该功能,请按照以下步骤操作:

  1. 对于已部署函数的每个版本,删除该特定函数的触发器。
  2. 等待几个小时,直到 AWS 将自动删除该特定功能的所有已部署副本。
  3. 自动删除所有副本后,再次尝试删除 Lambda 函数。你应该成功。

资料来源:https ://adrian.simionov.io/aws/2019/08/28/deleting-lambda-at-edge-functions.html

于 2020-04-07T19:43:37.030 回答
0

使用旧的 AWS 控制台

在此日期之前,文档提到了 OP也提到的旧解决方案:

使用新的 AWS 控制台

在控制台的新界面中,转到:

CloudFront > Distributions > **DistribName** > Edit behavior

然后您可以将 Function 类型更改为No association然后Save changes,仅此而已。

在此处输入图像描述

于 2022-03-02T10:03:00.783 回答