启用 Lambda@Edge 后调试 CloudFront 的问题

2023-12-31

下列的本文 https://aws.amazon.com/blogs/apn/using-amazon-cloudfront-with-multi-region-amazon-s3-origins/,我正在尝试从 AWS 内的多个区域(同一域下)提供静态内容。

到目前为止,我有:

  • 将我的内容上传到 S3 存储桶
  • 为该存储桶启用“静态网络托管”
  • 并公开了
  • 在 CloudFront 中创建了一个以 S3 存储桶为源的分配
  • 在 Route 53 中创建了一个指向分配的记录集

至此,一切正常。如果我在浏览器中输入域名,我就可以看到静态内容。现在是时候让它成为多区域的了:

  • 按照文章中的说明创建一个 lambda 函数,其中的角色包含管理员访问政策(出于绝望——一旦我让它发挥作用,我会仔细设计合适的角色)
  • 将 lambda 函数链接到 CloudFront:Event type: origin-request, Include body: No, Path pattern: *
  • 编辑 CloudFront 发行版,添加标头X-DNS-ORIGIN

应用这些步骤后,我必须等待一分钟才能生效。一旦它们生效,我就无法再打开网页了。这样做将导致此错误消息:

503 ERROR
The request could not be satisfied.
The Lambda function associated with the CloudFront distribution is invalid or doesn't have the required permissions. 
If you received this error while trying to use an app or access a website, please contact the provider or website owner for assistance. 
If you provide content to customers through CloudFront, you can find steps to troubleshoot and help prevent this error by following steps in the CloudFront documentation (http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/http-503-service-unavailable.html). 
Generated by cloudfront (CloudFront)

我什至启用了 CloudFront 的日志记录机制。但这也没有帮助。日志仅显示有一个LambdaExecutionError。但它没有说任何有用的东西。

我相信 lambda 函数根本没有被调用,因为我在 CloudWatch 中没有看到为它生成的任何日志。此时,我不知道如何解决这个问题。任何帮助表示赞赏。

[EDIT]

我忘了提及。分配给 lambda 函数的角色有lambda.amazonaws.com and edgelambda.amazonaws.com在其中列为服务信任关系 tab.


已经好几个月了,但以防万一其他人也遇到和我一样的问题。这篇文章很有帮助:https://hackernoon.com/postcards-from-lambda-the-edge-11a43f215dc1 https://hackernoon.com/postcards-from-lambda-the-edge-11a43f215dc1

当您的代码在 Edge 上运行时,日志记录发生在该边缘服务器的 CloudWatch 区域中。日志可能不在您想象的位置。

要查找日志,请在边缘服务器区域中查找它们。就我而言,CloudWatch > 日志组 > /aws/lambda/us-east-1.lambda 函数名称

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

启用 Lambda@Edge 后调试 CloudFront 的问题 的相关文章

随机推荐