我正在尝试使用链接到源请求事件的 lambda@Edge 函数来配置 Cloudfront 发行版。 lambda 边缘返回一个非常基本的 html 页面(代码基于此示例:服务静态内容(生成的响应))。部署后,分发在靠近北弗吉尼亚地区的位置按预期工作,但在其他位置失败并返回以下错误:
503:与 CloudFront 发行版关联的 Lambda 函数 被节流了。我们无法连接到此应用程序或网站的服务器 此时。可能是流量太大或者配置太高 错误。请稍后重试,或联系应用程序或网站所有者。如果你 通过 CloudFront 向客户提供内容,您可以找到以下步骤: 通过查看 CloudFront 来排除故障并帮助防止此错误 文档。
我已经尝试查看日志,但当抛出 503 错误时,cloudwatch 中没有记录任何内容,并且来自 CF 发行版的日志显示 lambdalimitExceeded 错误。
我一直在使用 VPN 在不同位置之间跳转,但我发现它只适用于靠近 us-east-1 区域的地方,这很奇怪。我正在使用联合帐户创建所有资源,我不知道它是否可能与 IAM 权限有关。
另一件事需要指出的是,如果我使用另一个 aws 账户和普通用户重现相同的场景,一切都会按预期进行。
如果您看到
lambdalimitExceeded
,那么您需要检查 Lambda@Edge 函数的以下内容:
请记住,Lambda@Edge 的执行位置更靠近用户,如果您尝试检索外部资源(到该区域),则可能会由于地理延迟而超时,您可以增加超时以解决此问题吗?
您运行的区域中是否有其他 Lambda 运行?如果您查看靠近用户边缘位置的区域之一的 CloudWatch 日志,您将看到这些 Lambda 日志,并希望能够确定根本原因。如果没有,则添加更多调试。
这是否已经弄清楚了?我目前正在抓狂并诅咒 AWS 的名字,试图找出为什么我的 Lambda@Edge 只能在 US-East-1 位置工作。