Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services lambda@edge日志和调用计数未显示?_Amazon Web Services_Amazon Cloudfront_Aws Lambda Edge - Fatal编程技术网

Amazon web services lambda@edge日志和调用计数未显示?

Amazon web services lambda@edge日志和调用计数未显示?,amazon-web-services,amazon-cloudfront,aws-lambda-edge,Amazon Web Services,Amazon Cloudfront,Aws Lambda Edge,我已经创建了云端分布,并用触发器连接了lambda `Event type: viewer-requestPath pattern: something/index.html` Event type: origin-requestPath pattern: something/index.html 根据我的lambda,当我点击端点时,它会重定向到我想要重定向的页面 但我在任何地区都看不到我的lambda日志 它也没有显示调用计数 有人面对过这个问题吗 这是我的lambda代码 'use

我已经创建了云端分布,并用触发器连接了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);
};
“严格使用”;
exports.handler=(事件、上下文、回调)=>{
/*
*生成带有302状态代码和位置头的HTTP重定向响应。
*/
console.log('event',event);
常数响应={
状态:“302”,
statusDescription:'找到',
标题:{
地点:[{
键:'位置',
值:'http:///something/root.html',
}],
},
};
回调(空,响应);
};

如下修改您的函数:

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 } ],
        },
    };
const响应={
状态:“302”,
statusDescription:'找到',
标题:{
地点:[{
键:'位置',
值:'http:///something/root.html',
}],
'x-lae-region':[{key:'x-lae-region',值:process.env.AWS_region}],
},
};
它所做的是捕获lambda函数正在运行的区域——它将在测试期间显示us-east-1,但在部署后会显示一个准确的值

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


还要注意,对于原始请求(而不是查看器请求)触发器,CloudFront缓存Lambda生成的响应,因此只有在缓存未命中时才会调用该函数。如果CloudFront缓存了响应,触发器将不会触发——缓存的响应将在不联系源的情况下提供。如果您启用此函数,但没有看到响应中的更改,则几乎可以肯定您正在查看缓存的响应,并希望执行失效处理。

我遇到了一个非常类似的问题,它让我耽搁了几个小时。对于Lambda@EdgeAWS控制台选项卡中Lambda指标上的数据对于调用和日志来说似乎并不准确。至少它们还不完整


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

感谢您的回复。我改变了lambda密码。我仍然没有得到日志。除了弗吉尼亚州,我没有在任何其他地区找到日志组/lambda。我创建了新的缓存行为,并对其进行了测试。当您访问站点时,您在响应头中看到了哪个区域?非常感谢。它可以工作,我可以看到日志,但没有指标lambda计数保持0。太好了。。。但是您在响应标题中看到了哪个区域?谢谢。您可能会考虑使用更改您的连接似乎来自的地理区域,以便您可以看到其他区域的行为,以帮助确定该问题是否也存在于其他区域。