5

我正在使用 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 没有被触发的问题??

4

2 回答 2

12

Lambda@Edge 和 CloudFront 有一些常见的“陷阱”。你需要:

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

这与保存代码更改并从监控选项卡跳转到日志的“正常” Lambda Web 控制台流程不同。

于 2018-03-30T15:31:14.030 回答
2

我错过了在我的 lambda 代码的标题下添加区域。

由于 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 } ],
        },
    };
于 2018-04-03T07:29:01.910 回答