Skip to content

NPE when using PathVariable in native image #1087

@VSVDEv

Description

@VSVDEv

To help us debug your issue fill in the basic information below using the options provided

Serverless Java Container version: 2.0.1

Implementations: / Spring Boot3 /

Framework version: eg SpringBoot 3.3.4

Frontend service: ServerlessHttpApi

Deployment method: SAM

Scenario

Run native image using samples/springboot3/pet-store-native I add dependency and update controller

Expected behavior

respond to get request

Actual behavior

internal server error

Steps to reproduce

add dependency

<dependency>
	<groupId>com.amazonaws</groupId>
	<artifactId>aws-java-sdk-dynamodb</artifactId>
	<version>1.12.744</version>
</dependency>

update controller

@RestController
@RequestMapping("/orders")
public class HelloController {

    private final AmazonDynamoDB client;

    public HelloController(){
        client = AmazonDynamoDBClientBuilder.standard()
               .withRegion(Regions.US_EAST_1)
               .build();
    }

    @GetMapping
    public List<DeliveryOrder> getOrders() {
        return getOrdersList();
    }



    public List<DeliveryOrder> getOrdersList(){
        ScanRequest scanRequest2 = new ScanRequest().withTableName("WeatherData");
        ScanResult scan = client.scan(scanRequest2);
        return scan.getItems().stream().map(this::toDeliveryOrder).toList();
    }


    private DeliveryOrder toDeliveryOrder(Map<String, AttributeValue> item) {
        return new DeliveryOrder(item.get("Location").getS(),item.get("Date").getS(), parseInt(item.get("Precipitation").getS()));
    }
}

update template

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: Serverless Java Container GraalVM
Resources:
  WeatherData:
    Type: AWS::DynamoDB::Table
    DeletionPolicy: Delete
    Properties:
      TableName: WeatherData
      AttributeDefinitions:
        - AttributeName: Location
          AttributeType: S

      KeySchema:
        - AttributeName: Location
          KeyType: HASH

      BillingMode: PAY_PER_REQUEST



  ServerlessWebNativeFunction:
    Type: AWS::Serverless::Function
    Properties:
      MemorySize: 512
      FunctionName: pet-store-native
      Timeout: 15
      CodeUri: ./target/pet-store-native-0.0.1-SNAPSHOT-native-zip.zip
      Handler: NOP
      Runtime: provided.al2023
      Policies:
        - DynamoDBCrudPolicy:
            TableName: !Ref WeatherData
      Events:
        HttpApiEvent:
          Type: HttpApi
          Properties:
            TimeoutInMillis: 20000
            PayloadFormatVersion: '1.0'
        
Globals:
  Api:
    EndpointConfiguration: REGIONAL
Outputs:
  ServerlessWebNativeApi:
    Description: URL for application
    Value: !Sub 'https://${ServerlessHttpApi}.execute-api.${AWS::Region}.amazonaws.com/orders'
    Export:
      Name: ServerlessWebNativeApi

**

Full log output

Paste the full log output from the Lambda function's CloudWatch logs

2024-10-21T09:39:40.554Z
:: Spring Boot :: (v3.3.4)
2024-10-21T09:39:40.614Z
2024-10-21T09:39:40.614Z INFO 9 --- [ main] c.a.s.p.s.AwsSpringWebRuntimeInitializer : AWS Environment: {_AWS_XRAY_DAEMON_PORT=2000, SHLVL=1, _HANDLER=NOP, TZ=:UTC, AWS_LAMBDA_FUNCTION_NAME=ln, AWS_REGION=us-east-1, AWS_LAMBDA_FUNCTION_MEMORY_SIZE=512, AWS_XRAY_DAEMON_ADDRESS=169.254.79.129:2000, AWS_DEFAULT_REGION=us-east-1, AWS_LAMBDA_LOG_GROUP_NAME=/aws/lambda/ln, PATH=/usr/local/bin:/usr/bin/:/bin:/opt/bin, AWS_LAMBDA_LOG_STREAM_NAME=2024/10/21/[$LATEST]331de34f6f5a4c2096f698f360bcf690, AWS_LAMBDA_INITIALIZATION_TYPE=on-demand, LANG=en_US.UTF-8, LAMBDA_RUNTIME_DIR=/var/runtime, AWS_LAMBDA_RUNTIME_API=127.0.0.1:9001, AWS_LAMBDA_FUNCTION_VERSION=$LATEST, AWS_XRAY_CONTEXT_MISSING=LOG_ERROR, _AWS_XRAY_DAEMON_ADDRESS=169.254.79.129, OLDPWD=/var/task, LAMBDA_TASK_ROOT=/var/task, LD_LIBRARY_PATH=/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib:/opt/lib, PWD=/var/task, _=./ln}
2024-10-21T09:39:40.615Z
2024-10-21T09:39:40.615Z INFO 9 --- [ main] c.a.s.p.s.AwsSpringWebRuntimeInitializer : AWS Handler: NOP
2024-10-21T09:39:40.632Z
2024-10-21T09:39:40.632Z INFO 9 --- [ main] c.a.s.s.springboot3.DemoApplication : Starting AOT-processed DemoApplication using Java 21.0.2 with PID 9 (/var/task/ln started by sbx_user1051 in /var/task)
2024-10-21T09:39:40.632Z
2024-10-21T09:39:40.632Z INFO 9 --- [ main] c.a.s.s.springboot3.DemoApplication : No active profile set, falling back to 1 default profile: "default"
2024-10-21T09:39:40.670Z
2024-10-21T09:39:40.670Z INFO 9 --- [ main] o.s.c.f.s.w.ServerlessAutoConfiguration : Configuring Serverless Web Container
2024-10-21T09:39:40.693Z
2024-10-21T09:39:40.693Z INFO 9 --- [ main] o.s.c.f.s.w.ServerlessAutoConfiguration : Initializing DispatcherServlet
2024-10-21T09:39:40.693Z
2024-10-21T09:39:40.693Z INFO 9 --- [ main] o.s.c.f.s.web.ServerlessServletContext : Initializing Spring DispatcherServlet 'dispatcherServlet'
2024-10-21T09:39:40.693Z
2024-10-21T09:39:40.693Z INFO 9 --- [ main] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2024-10-21T09:39:40.875Z
2024-10-21T09:39:40.875Z INFO 9 --- [ main] o.s.web.servlet.DispatcherServlet : Completed initialization in 182 ms
2024-10-21T09:39:40.875Z
2024-10-21T09:39:40.875Z INFO 9 --- [ main] o.s.c.f.s.w.ServerlessAutoConfiguration : Initalized DispatcherServlet
2024-10-21T09:39:40.892Z
2024-10-21T09:39:40.892Z WARN 9 --- [ main] w.s.c.ServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'helloController': Instantiation of supplied bean failed
2024-10-21T09:39:40.892Z
Application run failed
2024-10-21T09:39:40.892Z
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'helloController': Instantiation of supplied bean failed
2024-10-21T09:39:40.893Z
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1243)
2024-10-21T09:39:40.893Z
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1180)
2024-10-21T09:39:40.893Z
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562)
2024-10-21T09:39:40.893Z
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522)
2024-10-21T09:39:40.893Z
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337)
2024-10-21T09:39:40.893Z
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
2024-10-21T09:39:40.893Z
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335)
2024-10-21T09:39:40.893Z
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
2024-10-21T09:39:40.893Z
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:975)
2024-10-21T09:39:40.893Z
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:971)
2024-10-21T09:39:40.893Z
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:625)
2024-10-21T09:39:40.893Z
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
2024-10-21T09:39:40.893Z
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
2024-10-21T09:39:40.893Z
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456)
2024-10-21T09:39:40.893Z
at org.springframework.boot.SpringApplication.run(SpringApplication.java:335)
2024-10-21T09:39:40.893Z
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1363)
2024-10-21T09:39:40.893Z
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1352)
2024-10-21T09:39:40.893Z
at com.amazonaws.serverless.sample.springboot3.DemoApplication.main(DemoApplication.java:10)
2024-10-21T09:39:40.893Z
at java.base@21.0.2/java.lang.invoke.LambdaForm$DMH/sa346b79c.invokeStaticInit(LambdaForm$DMH)
2024-10-21T09:39:40.893Z
Caused by: com.amazonaws.SdkClientException: Unable to load partition metadata from com/amazonaws/partitions/endpoints.json
2024-10-21T09:39:40.893Z
at com.amazonaws.partitions.PartitionsLoader.build(PartitionsLoader.java:82)
2024-10-21T09:39:40.893Z
at com.amazonaws.regions.RegionMetadataFactory.create(RegionMetadataFactory.java:30)
2024-10-21T09:39:40.893Z
at com.amazonaws.regions.RegionUtils.initialize(RegionUtils.java:64)
2024-10-21T09:39:40.893Z
at com.amazonaws.regions.RegionUtils.getRegionMetadata(RegionUtils.java:52)
2024-10-21T09:39:40.893Z
at com.amazonaws.regions.RegionUtils.getRegion(RegionUtils.java:106)
2024-10-21T09:39:40.893Z
at com.amazonaws.client.builder.AwsClientBuilder.getRegionObject(AwsClientBuilder.java:256)
2024-10-21T09:39:40.893Z
at com.amazonaws.client.builder.AwsClientBuilder.withRegion(AwsClientBuilder.java:245)
2024-10-21T09:39:40.893Z
at com.amazonaws.client.builder.AwsClientBuilder.withRegion(AwsClientBuilder.java:232)
2024-10-21T09:39:40.893Z
at com.amazonaws.serverless.sample.springboot3.HelloController.<init>(HelloController.java:30)
2024-10-21T09:39:40.893Z
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainInstanceFromSupplier(AbstractAutowireCapableBeanFactory.java:1277)
2024-10-21T09:39:40.893Z
at org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier(DefaultListableBeanFactory.java:951)
2024-10-21T09:39:40.893Z
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1237)
2024-10-21T09:39:40.893Z
... 18 more
2024-10-21T09:39:40.912Z
INIT_REPORT Init Duration: 1503.18 ms Phase: invoke Status: error Error Type: Runtime.ExitError
2024-10-21T09:39:40.912Z
START RequestId: 54bcdaa3-b650-4606-9944-ff76e910a26b Version: $LATEST
2024-10-21T09:39:40.913Z
RequestId: 54bcdaa3-b650-4606-9944-ff76e910a26b Error: Runtime exited with error: exit status 1 Runtime.ExitError
2024-10-21T09:39:40.913Z
END RequestId: 54bcdaa3-b650-4606-9944-ff76e910a26b
2024-10-21T09:39:40.913Z
REPORT RequestId: 54bcdaa3-b650-4606-9944-ff76e910a26b Duration: 1504.53 ms Billed Duration: 1505 ms Memory Size: 512 MB Max Memory Used: 80 MB
2024-10-21T09:39:40.943Z
INIT_START Runtime Version: provided:al2023.v30 Runtime Version ARN: arn:aws:lambda:us-east-1::runtime:30773c51f62ce897f99bf1867de

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions