Skip to content

Unable to parse the content-type value from ALB request (json format) #315

Open
@dotekien

Description

@dotekien
  • Framework version: 1.4
  • Implementations: Spring Boot 2

Scenario

Using SAM cli pass the alb request
sam local invoke -e alb-post.json

Here is the alb-post.json:
{ "requestContext": { "elb": { "targetGroupArn": "arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/lambda-279XGJDqGZ5rsrHC2Fjr/49e9d65c45c6791a" } }, "httpMethod": "POST", "path": "/accounts", "queryStringParameters": {}, "headers": { "accept": "application/json;v=1", "content-type": "application/json;v=1", "accept-encoding": "gzip", "accept-language": "en-US,en;q=0.9", "connection": "keep-alive", "host": "lambda-alb-123578498.us-east-2.elb.amazonaws.com", "upgrade-insecure-requests": "1", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", "x-amzn-trace-id": "Root=1-5c536348-3d683b8b04734faae651f476", "x-forwarded-for": "72.12.164.125", "x-forwarded-port": "11400", "x-forwarded-proto": "http", "x-imforwards": "20" }, "body": "{\"accountId\":\"9999\",\"nextScoreRefreshDate\":\"2018-12-06\"}", "isBase64Encoded": false }

Expected behavior

The rest controller should be invoke and insert the new account to database

Actual behavior

Get this error:
Unexpected and uncaught exceporg.springframework.web.HttpMediaTypeNotSupportedException: Content type '' not supported

Steps to reproduce

Run a sample pet-store with the ALB json request

Full log output

[2020-01-11 05:06:29.149] 982b37fe-a426-1403-10cf-41495a1288ec ERROR c.c.c.l.ScenarioReporter - CWCCD-2008, Description:Unexpected and uncaught exceporg.springframework.web.HttpMediaTypeNotSupportedException: Content type '' not supportedr at org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.handleNoMatch(RequestMappingInfoHandlerMapping.java:215)r at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lookupHandlerMethod(AbstractHandlerMethodMapping.java:420)r at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:366)r at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:66)r at org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandler(AbstractHandlerMapping.java:402)r at org.springframework.web.servlet.DispatcherServlet.getHandler(DispatcherServlet.java:1233)r at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1016)r at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)r at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)r at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)r at javax.servlet.http.HttpServlet.service(HttpServlet.java:665)r at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)r at javax.servlet.http.HttpServlet.service(HttpServlet.java:750)r at com.amazonaws.serverless.proxy.internal.servlet.FilterChainManager$ServletExecutionFilter.doFilter(FilterChainManager.java:351)r at com.amazonaws.serverless.proxy.internal.servlet.FilterChainHolder.doFilter(FilterChainHolder.java:90)r at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:94)r at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)r at com.amazonaws.serverless.proxy.internal.servlet.FilterChainHolder.doFilter(FilterChainHolder.java:90)r at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:88)r at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)r at com.amazonaws.serverless.proxy.internal.servlet.FilterChainHolder.doFilter(FilterChainHolder.java:90)r at com.filter.RequestLoggingFilter.doFilter(RequestLoggingFilter.java:49)r at com.amazonaws.serverless.proxy.internal.servlet.FilterChainHolder.doFilter(FilterChainHolder.java:90)r at com.filter.VersionFilter.doFilter(VersionFilter.java:49)r at com.amazonaws.serverless.proxy.internal.servlet.FilterChainHolder.doFilter(FilterChainHolder.java:90)r at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)r at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)r at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)r at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)r at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)r at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)r at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)r at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)r at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)r at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)r at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)r at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)r at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)r at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)r at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)r at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)r at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:74)r at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)r at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)r at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)r at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)r at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)r at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)r at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)r at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)r at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)r at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)r at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)r at com.amazonaws.serverless.proxy.internal.servlet.FilterChainHolder.doFilter(FilterChainHolder.java:90)r at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)r at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)r at com.amazonaws.serverless.proxy.internal.servlet.FilterChainHolder.doFilter(FilterChainHolder.java:90)r at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)r at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)r at com.amazonaws.serverless.proxy.internal.servlet.FilterChainHolder.doFilter(FilterChainHolder.java:90)r at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:114)r at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:104)r at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)r at com.amazonaws.serverless.proxy.internal.servlet.FilterChainHolder.doFilter(FilterChainHolder.java:90)r at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)r at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)r at com.amazonaws.serverless.proxy.internal.servlet.FilterChainHolder.doFilter(FilterChainHolder.java:90)r at com.amazonaws.serverless.proxy.internal.servlet.AwsLambdaServletContainerHandler.doFilter(AwsLambdaServletContainerHandler.java:150)r at com.amazonaws.serverless.proxy.spring.SpringBootLambdaContainerHandler.handleRequest(SpringBootLambdaContainerHandler.java:143)r at com.amazonaws.serverless.proxy.spring.SpringBootLambdaContainerHandler.handleRequest(SpringBootLambdaContainerHandler.java:43)r at com.amazonaws.serverless.proxy.internal.LambdaContainerHandler.proxy(LambdaContainerHandler.java:211)r at com.amazonaws.serverless.proxy.internal.LambdaContainerHandler.proxyStream(LambdaContainerHandler.java:246)r at com.StreamLambdaHandler.handleRequest(StreamLambdaHandler.java:34)r at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)r at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)r at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)r at java.lang.reflect.Method.invoke(Method.java:498)r at lambdainternal.EventHandlerLoader$StreamMethodRequestHandler.handleRequest(EventHandlerLoader.java:354)r at lambdainternal.EventHandlerLoader$2.call(EventHandlerLoader.java:906)r at lambdainternal.AWSLambda.startRuntime(AWSLambda.java:341)r at lambdainternal.AWSLambda.<clinit>(AWSLambda.java:63)r at java.lang.Class.forName0(Native Method)r at java.lang.Class.forName(Class.java:348)r at lambdainternal.LambdaRTEntry.main(LambdaRTEntry.java:114)r [2020-01-11 05:06:29.149] 982b37fe-a426-1403-10cf-41495a1288ec ERROR c.c.c.l.ScenarioReporter - CWCCD-2008, Description:Unexpected and uncaught exceporg.springframework.web.HttpMediaTypeNotSupportedException: Content type '' not supportedr at org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.handleNoMatch(RequestMappingInfoHandlerMapping.java:215)r at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lookupHandlerMethod(AbstractHandlerMethodMapping.java:420)r at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:366)r at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:66)r at org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandler(AbstractHandlerMapping.java:402)r at org.springframework.web.servlet.DispatcherServlet.getHandler(DispatcherServlet.java:1233)r at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1016)r at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)r at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)r at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)r at javax.servlet.http.HttpServlet.service(HttpServlet.java:665)r at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)r at javax.servlet.http.HttpServlet.service(HttpServlet.java:750)r at com.amazonaws.serverless.proxy.internal.servlet.FilterChainManager$ServletExecutionFilter.doFilter(FilterChainManager.java:351)r at com.amazonaws.serverless.proxy.internal.servlet.FilterChainHolder.doFilter(FilterChainHolder.java:90)r at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:94)r at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)r at com.amazonaws.serverless.proxy.internal.servlet.FilterChainHolder.doFilter(FilterChainHolder.java:90)r at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:88)r at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)r at com.amazonaws.serverless.proxy.internal.servlet.FilterChainHolder.doFilter(FilterChainHolder.java:90)r at com.filter.RequestLoggingFilter.doFilter(RequestLoggingFilter.java:49)r at com.amazonaws.serverless.proxy.internal.servlet.FilterChainHolder.doFilter(FilterChainHolder.java:90)r at com.filter.VersionFilter.doFilter(VersionFilter.java:49)r at com.amazonaws.serverless.proxy.internal.servlet.FilterChainHolder.doFilter(FilterChainHolder.java:90)r at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)r at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)r at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)r at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)r at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)r at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)r at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)r at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)r at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)r at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)r at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)r at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)r at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)r at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)r at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)r at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)r at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:74)r at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)r at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)r at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)r at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)r at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)r at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)r at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)r at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)r at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)r at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)r at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)r at com.amazonaws.serverless.proxy.internal.servlet.FilterChainHolder.doFilter(FilterChainHolder.java:90)r at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)r at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)r at com.amazonaws.serverless.proxy.internal.servlet.FilterChainHolder.doFilter(FilterChainHolder.java:90)r at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)r at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)r at com.amazonaws.serverless.proxy.internal.servlet.FilterChainHolder.doFilter(FilterChainHolder.java:90)r at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:114)r at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:104)r at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)r at com.amazonaws.serverless.proxy.internal.servlet.FilterChainHolder.doFilter(FilterChainHolder.java:90)r at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)r at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)r at com.amazonaws.serverless.proxy.internal.servlet.FilterChainHolder.doFilter(FilterChainHolder.java:90)r at com.amazonaws.serverless.proxy.internal.servlet.AwsLambdaServletContainerHandler.doFilter(AwsLambdaServletContainerHandler.java:150)r at com.amazonaws.serverless.proxy.spring.SpringBootLambdaContainerHandler.handleRequest(SpringBootLambdaContainerHandler.java:143)r at com.amazonaws.serverless.proxy.spring.SpringBootLambdaContainerHandler.handleRequest(SpringBootLambdaContainerHandler.java:43)r at com.amazonaws.serverless.proxy.internal.LambdaContainerHandler.proxy(LambdaContainerHandler.java:211)r at com.amazonaws.serverless.proxy.internal.LambdaContainerHandler.proxyStream(LambdaContainerHandler.java:246)r at com.StreamLambdaHandler.handleRequest(StreamLambdaHandler.java:34)r at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)r at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)r at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)r at java.lang.reflect.Method.invoke(Method.java:498)r at lambdainternal.EventHandlerLoader$StreamMethodRequestHandler.handleRequest(EventHandlerLoader.java:354)r at lambdainternal.EventHandlerLoader$2.call(EventHandlerLoader.java:906)r at lambdainternal.AWSLambda.startRuntime(AWSLambda.java:341)r at lambdainternal.AWSLambda.<clinit>(AWSLambda.java:63)r at java.lang.Class.forName0(Native Method)r at java.lang.Class.forName(Class.java:348)r at lambdainternal.LambdaRTEntry.main(LambdaRTEntry.java:114)r

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions