无服务器 AWS Lambda@Edge:如何调试

问题描述

我使用 python Lambda@Edge 部署了一个 serverless 函数,它使用测试功能运行正常

enter image description here

仅供参考,它设置为查看者请求

enter image description here

functions:
  cfLambda:
    handler: handler.lambda_handler
    events:
      - cloudFront:
          eventType: viewer-request

如果我转到 CloudWatch,我可以看到日志:

enter image description here

现在,当我使用 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 是:

  • 执行次数过多(不是我的情况,该云前端的流量为 0,这纯粹是测试)
  • 函数超出了 Lambda 函数超时配额

如果我查看控制台测试,它们仅消耗 ~220 毫秒和 ~75MB,所以我认为我们远低于 viewer request 的 5 秒/128MB 限制

enter image description here

如果我看一下 CloudFront logs,它们似乎没用,因为它们只是确认了 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    -   -

Q2:有没有办法增加 CloudFront 日志的详细程度(我找不到)?

Q3:如果我无法在 CloudWatch 中获得我的 CloudFront Lambda@Edge 调用(Q1=no)并且我无法增加 CloudFront 日志的详细程度(Q2=no),我该如何进一步调试?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)