使用来自Java的AWS Lambda进行日志记录似乎已中断
我已经按照指南在Python和Java(简单hello world)中创建了相同的函数。使用相同的角色,Python版本可以按预期工作,生成日志流条目并打印“ok” 但是,Java版本不会记录具有相同角色和设置的任何内容使用来自Java的AWS Lambda进行日志记录似乎已中断,java,amazon-web-services,lambda,Java,Amazon Web Services,Lambda,我已经按照指南在Python和Java(简单hello world)中创建了相同的函数。使用相同的角色,Python版本可以按预期工作,生成日志流条目并打印“ok” 但是,Java版本不会记录具有相同角色和设置的任何内容 package com.streambright; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandle
package com.streambright;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class Dbmgmt implements RequestHandler<Object, Object> {
@Override
public String handleRequest(Object in, Context ctx) {
System.out.println("test");
ctx.getLogger().log("o hai");
return "ok";
}
}
package com.streambright;
导入com.amazonaws.services.lambda.runtime.Context;
导入com.amazonaws.services.lambda.runtime.RequestHandler;
公共类Dbmgmt实现RequestHandler{
@凌驾
公共字符串handleRequest(上下文中的对象,ctx){
系统输出打印(“测试”);
ctx.getLogger().log(“o hai”);
返回“ok”;
}
}
我想知道为什么它不将任何内容放入CloudWatch日志组。有人对Java有同样的经验吗?有人有同样的经历吗?有解决这个问题的方法吗
还发布在AWS论坛上:找到了这一问题的根本原因。角色策略不允许创建正确的日志资源,因此默认失败。AWS UI没有太大帮助来帮助识别这个问题,我在一次审计中意外地遇到了它。将资源更改为*后,lambda函数能够创建日志资源
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"xray:PutTraceSegments",
"xray:PutTelemetryRecords",
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"ec2:CreateNetworkInterface",
"ec2:DeleteNetworkInterface",
"ec2:DescribeNetworkInterfaces",
"kms:Decrypt"
],
"Resource": "*"
}
]
}
找到了这个问题的根本原因。角色策略不允许创建正确的日志资源,因此默认失败。AWS UI没有太大帮助来帮助识别这个问题,我在一次审计中意外地遇到了它。将资源更改为*后,lambda函数能够创建日志资源
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"xray:PutTraceSegments",
"xray:PutTelemetryRecords",
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"ec2:CreateNetworkInterface",
"ec2:DeleteNetworkInterface",
"ec2:DescribeNetworkInterfaces",
"kms:Decrypt"
],
"Resource": "*"
}
]
}
您是否尝试过通过AWS控制台测试Java功能?它将让您查看是否有任何错误。@stdunbar这正是问题所在,它不会在任何地方记录任何错误,但当您使用AWS UI for Lambda时,Lambda是否运行?您得到了什么输入和输出?是的,它运行,从我返回或打印的任何内容生成输出,并且不生成任何日志记录。当我尝试访问日志时,它返回一个错误->“加载日志流时出错。请刷新此页面重试。”您是否尝试通过AWS控制台测试Java功能?它将让您查看是否有任何错误。@stdunbar这正是问题所在,它不会在任何地方记录任何错误,但当您使用AWS UI for Lambda时,Lambda是否运行?您得到了什么输入和输出?是的,它运行,从我返回或打印的任何内容生成输出,并且不生成任何日志记录。当我尝试访问日志时,它返回一个错误->“加载日志流时出错。请刷新此页面重试。”您必须在哪里设置此配置?我认为是Lambda策略。您必须在哪里设置此配置?我认为是Lambda策略。