3

我已经创建了云前端分布并将 lambda 附加到触发器

`Event type: viewer-requestPath pattern: something/index.html`

 Event type: origin-requestPath pattern: something/index.html

根据我的 lambda,当我点击端点时,它会重定向到我想要重定向的页面。

但我无法在任何地区看到我的 lambda 日志。

它也没有显示调用计数。

有人遇到过这个问题吗??

这是我的 lambda 代码

'use strict';

exports.handler = (event, context, callback) => {
    /*
     * Generate HTTP redirect response with 302 status code and Location header.
     */
    console.log('event',event);
    const response = {
        status: '302',
        statusDescription: 'Found',
        headers: {
            location: [{
                key: 'Location',
                value: 'http://<domainname>/something/root.html',
            }],
        },
    };
    callback(null, response);
};
4

2 回答 2

4

像这样修改你的函数:

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

这样做是捕获您的 lambda 函数正在运行的区域——它将在测试期间显示 us-east-1,但在部署后显示准确的值。

您的浏览器、curl 等捕获的响应现在将包括x-lae-region: some-aws-region指示链接到正在处理您的特定请求的边缘的区域。检查该特定区域的日志——您应该在那里看到日志和调用。

另请注意,对于 Origin Request(但不是 Viewer Request)触发器,CloudFront 会缓存 Lambda 生成的响应,因此只有在缓存未命中时才会调用该函数。如果 CloudFront 已缓存响应,触发器将不会触发 - 缓存响应在不联系源的情况下提供。如果您启用此功能并且您没有看到响应中的更改,那么您几乎可以肯定正在查看缓存的响应,并且想要进行失效。

于 2018-03-27T19:17:49.653 回答
1

我遇到了一个非常相似的问题,它让我困扰了几个小时。对于 Lambda@Edge,AWS 控制台选项卡中的 Lambda 指标数据对于调用和日志似乎并不准确。至少它们并不完整。

我只在此选项卡上看到与源自控制台的“测试”事件调用相关的指标。我能够在 CloudWatch 中以名称 us-east-1.LambdaName-EdgeLambda-14DOC7T1Y1SGR 的名称将我的 Lambda 部署到的同一区域中找到我的完整调用指标,并且测试调用列在减去该区域的类似指标下。这些日志也以 Lambda 部署到的区域命名。例如,/aws/lambda/us-east-1.LambdaName-EdgeLambda-14DOC7T1Y1SGR。我的测试日志列在一个单独的日志组中,名称中没有区域。

于 2018-09-23T21:23:45.433 回答