下面是lambda函数:
exports.lendingLambdaHandler = async (event, context) => {
const records = event.Records
console.log(records)
return {}
};
由NodeJS运行时(作为无服务器应用程序)执行,将进入的事件记录写入stdout
根据定义,console.log
打印到stdout
,如here所述,但是我需要查看云监视日志,因为这是AWS无服务器应用程序:
在AWS环境中查看stdout
的正确方法是什么?
答案 0 :(得分:2)
这是在AWS Lambda中处理日志记录的标准方法。快速浏览一下文档,显示没有可用的其他配置选项。
也就是说,有些事情可能对您更好。
在您的终端中查看日志:
aws lambda invoke --function-name YOUR_FUNCTION out --log-type Tail
将Cloudwatch日志流传输到另一个服务: Link to article
使用流传输方法可以为您提供更多控制权,让您将日志发送到其他服务,或者自定义日志记录格式并将其保存在所需的任何位置。
参考:
答案 1 :(得分:1)
Lambda函数是无服务器的,但这并不意味着没有服务器在运行您的lambda函数,它的真正意思是您根本看不到该服务器,也不必进行任何管理。 / p>
当您调用lambda函数时,有一群服务器等待启动新的docker容器,在其中将执行lambda函数(如果不断调用lambda函数,则重用现有的执行上下文),底部这行代码是stdout
(如果lambda与您在本地运行代码(或在您有权访问的服务器上)运行的代码相同)stdout
,不同之处在于您没有访问权限到您将在其中观察到的基础Docker容器。因此,日志也将发送到CW日志,以便您可以访问它们。
在AWS环境中查看stdout的正确方法是什么?
正如我所提到的,您无权访问执行lambda函数的基础容器,因此访问日志的正确方法是通过CW日志。当然,您可以选择根据需要或用例将日志从CW流式传输到任何其他服务。
答案 2 :(得分:0)
这应该可行,因为您不必创建输出文件并直接从stdout读取日志:
aws lambda invoke --function-name LAMBDA_FUNCTION_NAME \
--log-type Tail /dev/null \
--query 'LogResult' \
--output text | base64 -d
如果您需要指定配置文件名称:
aws lambda invoke --function-name LAMBDA_FUNCTION_NAME \
--log-type Tail /dev/null \
--query 'LogResult' \
--output text \
--profile PROFILE_NAME | base64 -d