lambda@edge 日志和调用计数没有显示?
lambda@edge logs and invocation counts are not showing?
我已经创建了云前端分发并将 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);
};
像这样修改你的函数:
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
以指示链接到处理您的特定请求的边缘的区域。检查该特定区域的日志——您应该在那里看到日志和调用。
另请注意,对于源请求(而非查看器请求)触发器,CloudFront 会缓存 Lambda 生成的响应,因此只有在缓存未命中时才会调用该函数。如果 CloudFront 缓存了响应,触发器将不会触发——缓存的响应在不联系源的情况下提供。如果您使此功能生效并且您没有看到响应中的变化,那么您几乎可以肯定正在查看缓存的响应,并且想要进行无效处理。
我遇到了一个非常相似的问题,它让我困扰了好几个小时。对于 Lambda@Edge,AWS 控制台选项卡中 Lambda 指标的数据对于调用和日志似乎并不准确。至少它们是不完整的。
我在此选项卡上只看到了与源自控制台的 "test" 事件调用相关的指标。我能够在我的 Lambda 以名称 us-east-1.LambdaName-EdgeLambda-14DOC7T1Y1SGR 部署到的同一区域的 CloudWatch 中找到我的完整调用指标,并且测试调用列在类似的指标下减去区域.这些日志还以 Lambda 部署到的区域命名。例如,/aws/lambda/us-east-1.LambdaName-EdgeLambda-14DOC7T1Y1SGR。我的测试日志列在名称中没有区域的单独日志组中。
我已经创建了云前端分发并将 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);
};
像这样修改你的函数:
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
以指示链接到处理您的特定请求的边缘的区域。检查该特定区域的日志——您应该在那里看到日志和调用。
另请注意,对于源请求(而非查看器请求)触发器,CloudFront 会缓存 Lambda 生成的响应,因此只有在缓存未命中时才会调用该函数。如果 CloudFront 缓存了响应,触发器将不会触发——缓存的响应在不联系源的情况下提供。如果您使此功能生效并且您没有看到响应中的变化,那么您几乎可以肯定正在查看缓存的响应,并且想要进行无效处理。
我遇到了一个非常相似的问题,它让我困扰了好几个小时。对于 Lambda@Edge,AWS 控制台选项卡中 Lambda 指标的数据对于调用和日志似乎并不准确。至少它们是不完整的。
我在此选项卡上只看到了与源自控制台的 "test" 事件调用相关的指标。我能够在我的 Lambda 以名称 us-east-1.LambdaName-EdgeLambda-14DOC7T1Y1SGR 部署到的同一区域的 CloudWatch 中找到我的完整调用指标,并且测试调用列在类似的指标下减去区域.这些日志还以 Lambda 部署到的区域命名。例如,/aws/lambda/us-east-1.LambdaName-EdgeLambda-14DOC7T1Y1SGR。我的测试日志列在名称中没有区域的单独日志组中。