Open thiagohora opened 1 year ago
/cc @matejvasek (amazon-lambda,funqy), @patriot1burke (amazon-lambda,funqy)
I am pretty sure you need to set withHttp
on the builder, no the request context. Can you give it a try?
Hi @geoand
Thanks for answering this. There is no withHttp
on the APIGatewayV2HTTPEvent
.
There is on the builder
@geoand the builder is based on the fields, the project is using Lombok. You can confirm in the class. the object with an HTTP object is the request context.
/*
* Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
* the License. A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
package com.amazonaws.services.lambda.runtime.events;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
import java.util.Map;
@AllArgsConstructor
@Builder(setterPrefix = "with")
@Data
@NoArgsConstructor
/**
* API Gateway v2 event: https://docs.aws.amazon.com/lambda/latest/dg/services-apigateway.html
*/
public class APIGatewayV2HTTPEvent {
private String version;
private String routeKey;
private String rawPath;
private String rawQueryString;
private List<String> cookies;
private Map<String, String> headers;
private Map<String, String> queryStringParameters;
private Map<String, String> pathParameters;
private Map<String, String> stageVariables;
private String body;
private boolean isBase64Encoded;
private RequestContext requestContext;
@AllArgsConstructor
@Builder(setterPrefix = "with")
@Data
@NoArgsConstructor
public static class RequestContext {
private String routeKey;
private String accountId;
private String stage;
private String apiId;
private String domainName;
private String domainPrefix;
private String time;
private long timeEpoch;
private Http http;
private Authorizer authorizer;
private String requestId;
@AllArgsConstructor
@Builder(setterPrefix = "with")
@Data
@NoArgsConstructor
public static class Authorizer {
private JWT jwt;
private Map<String, Object> lambda;
private IAM iam;
@AllArgsConstructor
@Builder(setterPrefix = "with")
@Data
@NoArgsConstructor
public static class JWT {
private Map<String, String> claims;
private List<String> scopes;
}
}
@AllArgsConstructor
@Builder(setterPrefix = "with")
@Data
@NoArgsConstructor
public static class Http {
private String method;
private String path;
private String protocol;
private String sourceIp;
private String userAgent;
}
@AllArgsConstructor
@Builder(setterPrefix = "with")
@Data
@NoArgsConstructor
public static class IAM {
private String accessKey;
private String accountId;
private String callerId;
private CognitoIdentity cognitoIdentity;
private String principalOrgId;
private String userArn;
private String userId;
}
@AllArgsConstructor
@Builder(setterPrefix = "with")
@Data
@NoArgsConstructor
public static class CognitoIdentity {
private List<String> amr;
private String identityId;
private String identityPoolId;
}
}
}
You are right, my bad.
@patriot1burke this problem only seems to occur with quarkus-amazon-lambda-rest
. quarkus-amazon-lambda-http
works as expected.
We are facing the same issue, any update on this?
Same, I'm also facing this exception while using quarkus-amazon-lambda-rest
I could solve the issue by sending an APIGatewayProxyRequestEvent
to the lambda instead of APIGatewayV2HTTPEvent
.
So looks like quarkus-amazon-lambda-rest
expects APIGatewayProxyRequestEvent
and io.quarkus:quarkus-amazon-lambda-http
expects APIGatewayV2HTTPEvent
Describe the bug
Following the steps of this article. I was trying to create a simple hello world lambda that receives an API gateway event. However, when trying to push the APIGatewayV2HTTPEvent in a test following the example of the page. The result is a 500 status code due to an NPE.
Expected behavior
Return a 200 status code with the response body of the lambda.
Actual behavior
500 status code:
How to Reproduce?
Reproducer:
mvn archetype:generate \ -DarchetypeGroupId=io.quarkus \ -DarchetypeArtifactId=quarkus-amazon-lambda-rest-archetype \ -DarchetypeVersion=3.3.3
Output of
uname -a
orver
No response
Output of
java -version
17
GraalVM version (if different from Java)
No response
Quarkus version or git rev
3.3.3
Build tool (ie. output of
mvnw --version
orgradlew --version
)3.8.6
Additional information
No response