在哪里可以找到Lambda @ Edge的日志?

时间:2019-01-08 16:34:19

标签: amazon-web-services amazon-cloudwatch aws-lambda-edge

作为我所面临的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函数的日志?

2 个答案:

答案 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}