- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 serverless
部署的 python Lambda@Edge
函数,它使用测试功能工作正常:
仅供引用,它设置为查看器请求:
functions:
cfLambda:
handler: handler.lambda_handler
events:
- cloudFront:
eventType: viewer-request
如果我转到 CloudWatch
,我可以看到日志:
现在,当我使用 cURL
进行测试时,失败并返回 503
:
HTTP/2 503
content-type: text/html
content-length: 1019
server: CloudFront
date: Mon, 05 Apr 2021 07:24:45 GMT
x-cache: LambdaExecutionError from cloudfront
via: 1.1 XXXXXXXXXXXXXXXXXX.cloudfront.net (CloudFront)
x-amz-cf-pop: AMS50-C1
x-amz-cf-id: 4vYpBnOGd6yfgowoSpiCyBkh5cbV1g3IJf1H2Eheln89MpEnScL-1g==
但是这次我在 CloudWatch 中没有得到任何日志。 问题 1:如何在 CloudWatch 中显示我的 Lambda@Edge CloudFront 调用痕迹?
如果我阅读 Lambda@Edge debug guide它说503 status code是:
如果我查看控制台测试,它们仅消耗 ~220ms 和 ~75MB 所以我认为我们远低于 viewer request 的 5 秒/128MB 限制|
如果我查看 CloudFront 日志
,它们似乎毫无用处,因为它们只是确认 503:
E2HX7F6YEZN897.2021-04-04-16.a77a21e1:2021-04-04 16:34:12 SEA19-C3 389 35.247.33.169 HEAD XXXXXXXX.cloudfront.net / 503 - Mozilla/5.0%20(Windows%20NT%205.1)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/41.0.2224.3%20Safari/537.36 - - LambdaExecutionError AcM5SX3ggB53fmjXO83xND_Lw3-eHXd8dlIZGEO53XaDMjuctRw== example.org https 223 0.021 - TLSv1.3 TLS_AES_128_GCM_SHA256 LambdaExecutionError HTTP/1.1 - - 51810 0.021 LambdaExecutionError text/html 1019 - -
问题 2:有没有办法增加 CloudFront 日志的详细程度(我找不到)?
问题 3:如果我无法在 CloudWatch 中获取 CloudFront Lambda@Edge 调用(Q1=no)并且无法增加 CloudFront Logs 的详细程度(Q2=no),我该如何进一步调试?
最佳答案
Lambda@Edge
函数必须部署到 us-east-1
地区。
x-amz-cf-pop
header 给出了有关请求执行位置的提示。可以引用这个非官方榜单here .
us-east-1
日志可以在 CloudWatch
中找到群下/aws/lambda/<Your-function-name>
.对于任何其他区域,日志组将为 /aws/lambda/us-east-1.<Your-function-name>
.如果您知道该地区,请选择适当的地区。转到 CloudWatch
并搜索相应的日志组。
您还可以从 CloudFront
导航到相应的日志页。转到 Monitoring
部分 -> 选择你的 Distribution
-> View Distribution Metrics
-> Lambda@Edge Errors
.当您将鼠标悬停在数据点上时,图表将显示所有区域的错误。知道发生错误的区域后,您可以选择相同的区域,然后选择 Lambda
。功能,最后点击View logs
.请引用下图。
看看一些官方例子here .对于 viewer-request
事件,那些操纵 request
的人是相关的。
CloudFront
可以在 /aws/cloudfront/LambdaEdge/<YourDistributionId>
访问日志
希望这能帮助您继续前进。
关于amazon-web-services - 无服务器 AWS Lambda@Edge : How to debug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66949758/
我是一名优秀的程序员,十分优秀!