lambda@edge 没有被云端触发

lambda@edge not getting triggered with cloudfront

我正在使用 lambda@edge 通过云端重定向我的网站。

我已将版本化的 lambda arn 附加到我的云前端缓存行为到它具有的所有 4 个事件。

当我访问我的云端端点时,它显示

502 ERROR
The request could not be satisfied.
The Lambda function returned invalid json: The json output must be an object type. 

当我检查我的 lambda 日志/调用指标时,我根本没有看到任何命中。

这背后的原因可能是什么?

我尽力找到了为什么我的 lambda 没有被触发的修复程序??

Lambda@Edge 和 CloudFront 有一些共同点 "gotchas"。您需要:

  • 发布 Lambda 函数的新版本
  • 将 CloudFront Lambda 关联更新为您的新版本,例如arn:aws:lambda:us-east-1:572007530218:function:gofaas-WebAuthFunction:45
  • 请求者
  • 的区域中查找 Lambda@Edge 日志

这与 "normal" Lambda Web 控制台流程不同,后者保存代码更改并从监控选项卡跳转到日志。

我错过了在我的 lambda 代码中的 header 下添加区域。

由于 lambda@edge 在边缘位置运行,我们需要动态提及该区域,以便它知道在 运行 在最近的边缘位置时将日志写入何处。

'x-lae-region': [ { key: 'x-lae-region', value: process.env.AWS_REGION } ]

const response = {
        status: '302',
        statusDescription: 'Found',
        headers: {
            location: [{
                key: 'Location',
                value: 'http://<destinationdomainname>/goto/hello.html',
            }],
            'x-lae-region': [ { key: 'x-lae-region', value: process.env.AWS_REGION } ],
        },
    };