无法删除 AWS Lambda@Edge 副本
Cannot delete AWS Lambda@Edge replicas
这个问题已经存在 here 但我认为它会对 SO 产生更大的影响。
我创建了一个 AWS Lambda@Edge 函数 以便在 Cloudfront URL 到达源之前重写它们。
AWS Lambda@Edge 函数在发布时会自动复制到所有区域,所以我对在每个区域看到这一点并不感到惊讶:
问题从这里开始:
我删除了 Lambda@Edge,因为它是一个测试,我想开始一个新的,但副本没有同时删除。
当时没什么大不了的,我想我可以简单地创建一个新的 Lambda@Edge 函数。
但是你不能,因为 Cloudfront 触发器一次只能使用一个功能(因为副本使用它,你不能创建一个新的)。
而且,触发器也不能删除。
所以现在我到处都是 Lambda@Edge 副本,无法删除,也无法创建类似的副本。
TL;DR
- 我创建了一个带有 CloudFront 触发器的 Lambda@Edge
- 我删除了它以创建一个新的(类似的)
- 现在还有副本存在
- 我无法删除副本
- 我无法创建新的 Lambda@Edge,因为副本已经 "in use" 触发器(我无法删除)
如果能在这方面得到一些帮助,我将不胜感激
弗朗索瓦
编辑:
我绝对认为这是一个错误,因为在我的副本页面中,Master ARN 的 link 以 404 响应。
我找到了部分答案:
原来我需要删除Cloudfront行为中的触发器。
简单地说:
- 转到您的 Cloudfront 分配的行为
- 检查触发 LambdaEdge 的那个
- 点击
Edit
- 转到页面最底部,然后单击 X 删除触发器
仍然,我无法删除副本,但至少我可以为此触发器创建新的 lambdas...
我向 AWS 支持部门询问了这个问题,得到的回答是:"you cannot delete replicated lambda functions for now, but we understand many people requires this".
AWS Lambda@Edge
http://docs.aws.amazon.com/es_es/lambda/latest/dg/lambda-edge.html
When you create a trigger, Lambda replicates the function to AWS
Regions and CloudFront edge locations around the globe. Note that
replicas can't be edited or deleted.
即使我试过 * 删除触发器然后创建 lambda(在我的情况下 lambda 接近 30)*,但我无法创建新的 lambda@edge。最后我做到了
Removed the cloud-front distribution which is associated with lambda function,
now its simple to move further. Please assure that distribution only used by that related lambda.
现在有一份文档 here 说明副本在 "few hours" 之后被删除 - 这意味着我随后也可以删除 Lambda 函数。
2020 年 1 月 5 日更新:如果删除 Lambda 表达式,大约需要 1 小时,一切都会消失!所以它只是速度较慢但行为类似于普通的 Lambdas?
我找到的最佳答案可以删除该功能,请按照以下步骤操作:
- 对于已部署函数的每个版本,删除该特定函数的触发器。
- 等待几个小时,直到 AWS 自动删除该特定功能的所有已部署副本。
- 在自动删除所有副本后,再次尝试删除 Lambda 函数。你应该成功。
来源:https://adrian.simionov.io/aws/2019/08/28/deleting-lambda-at-edge-functions.html
您好francois, yves, reki我已经找到删除Lambda@edge副本的解决方案。
- 首先,登录到 CloudFront 控制台并转到您的 分发。
- 在 Behaviors 选项卡下 - 勾选列出的 Behavior 和 edit
- 向下滚动到 Lambda 函数关联并通过单击 X 删除任何关联。
- 按是,编辑保存更改。
--- 现在您已经删除了关联,是时候删除 Lambda@edge 副本了
- 转到 Lambda 控制台并打开您的 lambda(您要删除)。
- 在顶部菜单 - Qualifiers -> Versions-> 选择列出的下拉版本
- 它将打开@edgeLambda 版本
- 在顶部菜单上 - 操作 -> 删除版本
- 这样,删除所有版本 - 您只剩下 $LATEST
- 同时删除它 - 您终于可以删除 Lambda@edge 函数
注意!>请记住删除与 Lambda@edge 函数关联的任何 IAM 角色和权限。
希望这对您有用,祝您愉快:)
使用旧的 AWS 控制台
直到这个日期,the documentation mentions the old solution mentioned also by :
使用新的 AWS 控制台
在控制台的新界面中,转到:
CloudFront > Distributions > **DistribName** > Edit behavior
那你可以把Function type改成No association然后Save changes就可以了。
我有一个类似的问题,我的 Lambda@Edge 根本没有任何 Cloudfront 触发器;但是,我仍然无法删除它。我尝试了以下方法并有所帮助,
- 创建一个新的 Cloudfront 分配,并将您的 Lambda@Edge 与这个新分配相关联。
- 等待分发完全部署。
- 从您刚刚创建的 Cloudfront 分配中删除 Lambda@Edge 的关联。
- 等待分发完全部署。
- 另外,再等几分钟。
- 然后,尝试删除您的 Lambda@Edge。
这个问题已经存在 here 但我认为它会对 SO 产生更大的影响。
我创建了一个 AWS Lambda@Edge 函数 以便在 Cloudfront URL 到达源之前重写它们。
AWS Lambda@Edge 函数在发布时会自动复制到所有区域,所以我对在每个区域看到这一点并不感到惊讶:
问题从这里开始:
我删除了 Lambda@Edge,因为它是一个测试,我想开始一个新的,但副本没有同时删除。
当时没什么大不了的,我想我可以简单地创建一个新的 Lambda@Edge 函数。
但是你不能,因为 Cloudfront 触发器一次只能使用一个功能(因为副本使用它,你不能创建一个新的)。
而且,触发器也不能删除。
所以现在我到处都是 Lambda@Edge 副本,无法删除,也无法创建类似的副本。
TL;DR
- 我创建了一个带有 CloudFront 触发器的 Lambda@Edge
- 我删除了它以创建一个新的(类似的)
- 现在还有副本存在
- 我无法删除副本
- 我无法创建新的 Lambda@Edge,因为副本已经 "in use" 触发器(我无法删除)
如果能在这方面得到一些帮助,我将不胜感激
弗朗索瓦
编辑:
我绝对认为这是一个错误,因为在我的副本页面中,Master ARN 的 link 以 404 响应。
我找到了部分答案:
原来我需要删除Cloudfront行为中的触发器。
简单地说:
- 转到您的 Cloudfront 分配的行为
- 检查触发 LambdaEdge 的那个
- 点击
Edit
- 转到页面最底部,然后单击 X 删除触发器
仍然,我无法删除副本,但至少我可以为此触发器创建新的 lambdas...
我向 AWS 支持部门询问了这个问题,得到的回答是:"you cannot delete replicated lambda functions for now, but we understand many people requires this".
AWS Lambda@Edge http://docs.aws.amazon.com/es_es/lambda/latest/dg/lambda-edge.html
When you create a trigger, Lambda replicates the function to AWS Regions and CloudFront edge locations around the globe. Note that replicas can't be edited or deleted.
即使我试过 * 删除触发器然后创建 lambda(在我的情况下 lambda 接近 30)*,但我无法创建新的 lambda@edge。最后我做到了
Removed the cloud-front distribution which is associated with lambda function, now its simple to move further. Please assure that distribution only used by that related lambda.
现在有一份文档 here 说明副本在 "few hours" 之后被删除 - 这意味着我随后也可以删除 Lambda 函数。
2020 年 1 月 5 日更新:如果删除 Lambda 表达式,大约需要 1 小时,一切都会消失!所以它只是速度较慢但行为类似于普通的 Lambdas?
我找到的最佳答案可以删除该功能,请按照以下步骤操作:
- 对于已部署函数的每个版本,删除该特定函数的触发器。
- 等待几个小时,直到 AWS 自动删除该特定功能的所有已部署副本。
- 在自动删除所有副本后,再次尝试删除 Lambda 函数。你应该成功。
来源:https://adrian.simionov.io/aws/2019/08/28/deleting-lambda-at-edge-functions.html
您好francois, yves, reki我已经找到删除Lambda@edge副本的解决方案。
- 首先,登录到 CloudFront 控制台并转到您的 分发。
- 在 Behaviors 选项卡下 - 勾选列出的 Behavior 和 edit
- 向下滚动到 Lambda 函数关联并通过单击 X 删除任何关联。
- 按是,编辑保存更改。 --- 现在您已经删除了关联,是时候删除 Lambda@edge 副本了
- 转到 Lambda 控制台并打开您的 lambda(您要删除)。
- 在顶部菜单 - Qualifiers -> Versions-> 选择列出的下拉版本
- 它将打开@edgeLambda 版本
- 在顶部菜单上 - 操作 -> 删除版本
- 这样,删除所有版本 - 您只剩下 $LATEST
- 同时删除它 - 您终于可以删除 Lambda@edge 函数
注意!>请记住删除与 Lambda@edge 函数关联的任何 IAM 角色和权限。
希望这对您有用,祝您愉快:)
使用旧的 AWS 控制台
直到这个日期,the documentation mentions the old solution mentioned also by
使用新的 AWS 控制台
在控制台的新界面中,转到:
CloudFront > Distributions > **DistribName** > Edit behavior
那你可以把Function type改成No association然后Save changes就可以了。
我有一个类似的问题,我的 Lambda@Edge 根本没有任何 Cloudfront 触发器;但是,我仍然无法删除它。我尝试了以下方法并有所帮助,
- 创建一个新的 Cloudfront 分配,并将您的 Lambda@Edge 与这个新分配相关联。
- 等待分发完全部署。
- 从您刚刚创建的 Cloudfront 分配中删除 Lambda@Edge 的关联。
- 等待分发完全部署。
- 另外,再等几分钟。
- 然后,尝试删除您的 Lambda@Edge。