作为我所面临的previous problem的步骤之一,我需要查看一些Lambda @ Edge的日志,但是我在任何地方都找不到它们。
根据Lambda @ Edge上的documentation:
当您查看CloudWatch日志文件或指标时 故障排除错误,请注意将其显示或存储在其中 最靠近函数执行位置的Region。因此,如果 您拥有一个在美国境内拥有用户的网站或网络应用程序 王国,并且您有一个Lambda函数与您的 分布,例如,您必须更改Region才能查看 伦敦AWS区域的CloudWatch指标或日志文件。
我要在加拿大寻找的Lambda函数位于us-east-1
中(由CloudFront强制,因为它用作分发的事件处理程序),所以我认为最近的区域会是ca-central-1
。但是由于我不在ca-central-1
中进行开发,因此该区域中没有任何日志组。无论如何,我看不到Lambda @ Edge的日志。为了完整起见,我检查了所有区域,但找不到lambda函数的任何日志记录。为了清楚起见,我正在寻找具有lambda函数名称的日志组。
我很肯定应该有日志,因为我的代码中有console.log()
,而且我可以下载所请求的内容(lambda函数负责选择保存内容的S3存储桶),这意味着lambda函数已成功执行。如果不是,我应该无法获取S3内容。
在哪里可以找到Lambda @ Edge函数的日志?
答案 0 :(得分:1)
好像log describe-log-groups
的格式也变了。当我尝试脚本时,它什么也没返回。但是使用“/aws/lambda/$FUNCTION_NAME”而不是“/aws/lambda/us-east-1.$FUNCTION_NAME”,脚本返回具有以下结构的组列表:
${region} /aws/lambda/${function_name}
答案 1 :(得分:0)
对于可能面临相同问题的其他人,请使用同一文档页面中提到的脚本来查找您的日志组:
FUNCTION_NAME=function_name_without_qualifiers
for region in $(aws --output text ec2 describe-regions | cut -f 3)
do
for loggroup in $(aws --output text logs describe-log-groups --log-group-name "/aws/lambda/us-east-1.$FUNCTION_NAME" --region $region --query 'logGroups[].logGroupName')
do
echo $region $loggroup
done
done
创建一个文件,将上面的脚本粘贴到其中,将function_name_without_qualifiers
替换为函数名称,使其可执行并运行。它将为您找到Lambda @ Edge的区域和日志组。此处吸取的教训是,日志组的名称与普通日志组不同。相反,它遵循以下结构:
/aws/lambda/${region}.${function_name}