【问题标题】:Null error while dynamically creating AWS Lambda from java从 java 动态创建 AWS Lambda 时出现空错误
【发布时间】:2017-07-13 17:31:10
【问题描述】:

我正在尝试从另一个 lamda 函数 (java) 创建 lambda 函数。 这里是一段 sn-p 代码

LambdaFunctionCreater implements RequestHandler<Object, Object> {
...
}

我的班级中有以下方法

createNewLambdaFunction (Map<String, String> lambdaEnvProperties) {
try {
    AWSLambdaClientBuilder awsLambdaClient = AWSLambdaClient.builder();
            awsLambdaClient.setRegion(RegionUtils.getRegion("us-east-1").getName());
    CreateFunctionRequest req = new CreateFunctionRequest ();

            req.withDescription("Hello World")
            .withEnvironment(new Environment ().withVariables(myProperties))
            .withFunctionName("Sample Lambda Dynamically created"))
            .withHandler("com.sample.SampleLambda::handleRequest")
            .withRole("MyRole")
            .withRuntime("java8")
            .withMemorySize(128)
            .withTimeout(600)
            .addTagsEntry("Tag1", "Value1")
            .withCode(new FunctionCode().withS3Bucket("mybucket").withS3Key("myfile.jar").withS3ObjectVersion("latestversionid"));

    CreateFunctionResult result = awsLambdaClient.build().createFunction(req);
} catch (Exception e) {
            logger.error("Failed to create ", e.fillInStackTrace());
        }
}

上述调用失败并显示消息

java.lang.NullPointerExceptionnull 在 com.capitalone.aws.lambda.handler.LambdaFunctionCreater.createNewLambdaFunction(LambdaFunctionCreater.java:154)null at com.capitalone.aws.lambda.handler.LambdaFunctionCreater.handleRequest(LambdaFunctionCreater.java:104)null at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)null at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)null at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)null at java.lang.reflect.Method.invoke(Method.java:498)null at lambdainternal.EventHandlerLoader$PojoMethodRequestHandler.handleRequest(EventHandlerLoader.java:456)null at lambdainternal.EventHandlerLoader$PojoHandlerAsStreamHandler.handleRequest(EventHandlerLoader.java:375)null at lambdainternal.EventHandlerLoader$2.call(EventHandlerLoader.java:1139)null at lambdainternal.AWSLambda.startRuntime(AWSLambda.java:278)null at lambdainternal.AWSLambda.(AWSLambda.java:62)null at java.lang.Class.forName0(Native Method)null at java.lang.Class.forName(Class.java:348)null 在 lambdainternal.LambdaRTEntry.main(LambdaRTEntry.java:94)null

我们将不胜感激。

【问题讨论】:

    标签: amazon-web-services aws-lambda


    【解决方案1】:

    由于您没有发布完整的代码,因此很难评估空指针异常发生的位置。

    我会将代码拆分为更多部分,并避免将新对象直接传递到像.withEnvironment(new Environment ().withVariables(myProperties)) 这样的单个语句中。这很难调试,因为如果这样的语句失败,您将无法检查变量值。

    我还建议您将开发环境设置为可以直接在 IDE 中运行和调试代码。调试器监视会立即告诉您哪个变量是 NullPointerException 的来源。

    此 NullPointerException 可能是配置、权限或依赖问题。

    另见Java Lambda examples

    【讨论】:

      猜你喜欢
      • 2021-06-08
      • 1970-01-01
      • 2020-03-12
      • 2019-03-13
      • 2021-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多