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

时间:2019-01-07 23:32:38

标签: amazon-web-services amazon-cloudfront aws-lambda-edge

this article之后,我正在尝试从AWS内多个区域(在同一域下)提供静态内容。

到目前为止,我有:

  • 将我的内容上传到S3存储桶
  • 为该存储桶启用了“静态虚拟主机”
  • 并将其公开
  • 在CloudFront中以S3存储桶为源创建了一个分布
  • 在Route 53中创建了一个指向该分布的记录集

至此,一切正常。如果在浏览器中输入域名,则可以看到静态内容。现在是时候将其设置为多区域了:

  • 按照文章中的说明创建一个lambda函数,该角色具有 AdministratorAccess 策略(出于绝望,一旦工作,我将仔细设计适当的角色)
  • 将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中看不到为其生成任何日志。在这一点上,我不知道如何解决此问题。任何帮助表示赞赏。

[编辑]

我忘了提。分配给lambda函数的角色在其信任关系选项卡中将lambda.amazonaws.comedgelambda.amazonaws.com列为服务。

1 个答案:

答案 0 :(得分:1)

已经有几个月了,但是如果有人遇到和我一样的同样问题。本文对您有所帮助:https://hackernoon.com/postcards-from-lambda-the-edge-11a43f215dc1

  

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

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