与Java的AWS Lambda一起登录似乎已被打破



我在指南之后在Python和Java(简单的Hello World(中创建了相同的功能。使用相同的角色,Python版本的工作原理与预期生成日志流条目和打印" OK"。

from __future__ import print_function
import json
print('Loading function')
def lambda_handler(event, context):
    return "ok"

但是,java版本没有以相同的角色和设置来记录任何内容。

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";
    }
}

我想知道为什么它不会将任何内容放入CloudWatch日志组中。有人在Java上有相同的经验吗?有人有相同的经历吗?是否有解决方法的解决方法?

还发布在AWS论坛上:https://forums.aws.amazon.com/thread.jspa?threadid=254747

找到了此根本原因。角色策略不允许创建正确的日志资源,并且默默失败了。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": "*"
        }
    ]
}

最新更新