Make fields from com.amazonaws.serverless.proxy.model.AwsProxyRequest optional to set
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 35/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Stack technique
- aws, java, spring-boot
Piste de recherche
Commencez par com.amazonaws.serverless.proxy.model.AwsProxyRequest et la validation dans AwsProxyHttpServletRequestReader.readRequest. Comparez les exemples minimaux d’amorçage GET et POST de l’issue avec le modèle de request actuel et la gestion du contexte. Le travail est terminé lorsque les appelants peuvent construire les requests montrés sans champs ni objets factices, tout en continuant à prendre en charge les requests valides d’API Gateway.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
When using AWS Serverless Java Container with Spring Boot 3 and Lambda SnapStart with priming with I tested this type of priming implementation WebRequestPriming
Unfortunately I have to set so many fields of the com.amazonaws.serverless.proxy.model.AwsProxyRequest with dummy values and even create dummy objects like AwsProxyRequestContext and ApiGatewayRequestIdentity (see the method getAwsProxyRequest) in order not to get errors like:
at
com.amazonaws.serverless.exceptions.InvalidRequestEventException: The incoming event is not a valid request from Amazon API Gateway or an Application Load Balancer com.amazonaws.serverless.proxy.internal.servlet.AwsProxyHttpServletRequestReader.readRequest(AwsProxyHttpServletRequestReader.java:48)
or
java.lang.NullPointerException: Cannot invoke "com.amazonaws.serverless.proxy.model.ApiGatewayRequestIdentity.getAccessKey()" because the return value of "com.amazonaws.serverless.proxy.model.AwsProxyRequestContext.getIdentity()" is null
Here is the complete code I had to write in order to make it work:
private static AwsProxyRequest getAwsProxyRequest () {
final AwsProxyRequest awsProxyRequest = new AwsProxyRequest ();
awsProxyRequest.setHttpMethod("GET");
awsProxyRequest.setPath("/products/0");
//awsProxyRequest.setResource("/products/{id}");
awsProxyRequest.setPathParameters(Map.of("id","0"));
final AwsProxyRequestContext awsProxyRequestContext = new AwsProxyRequestContext();
final ApiGatewayRequestIdentity apiGatewayRequestIdentity= new ApiGatewayRequestIdentity();
apiGatewayRequestIdentity.setApiKey("blabla");
awsProxyRequestContext.setIdentity(apiGatewayRequestIdentity);
awsProxyRequest.setRequestContext(awsProxyRequestContext);
return awsProxyRequest;
}
For my use case this will be enough to do the priming like this:
final AwsProxyRequest awsProxyRequest = new AwsProxyRequest ();
awsProxyRequest.setHttpMethod("GET");
awsProxyRequest.setPathParameters(Map.of("id","0"));
Others, that priming Post request would only like to set the body like this:
final AwsProxyRequest awsProxyRequest = new AwsProxyRequest ();
awsProxyRequest.setHttpMethod("POST");
awsProxyRequest.setBody("bla");
Many field should be optional to set to easily construct such objects or please provide static factory methods for it to save on the boilerplate code.
Compare it with how easy it is to implement the same type of SnapStart priming with
- Spring Cloud Function AWS Adapter
see my implementation of the method getAPIGatewayProxyRequestEventAsJson here AmazonAPIGatewayPrimingResource
as I only do
final APIGatewayProxyRequestEvent proxyRequestEvent = new APIGatewayProxyRequestEvent ();
proxyRequestEvent.setHttpMethod("GET");
proxyRequestEvent.setPathParameters(Map.of("id","0"));
- Quarkus 3, see my implementation of the method getAwsProxyRequest here AmazonAPIGatewayPrimingResource
as I only do the same as above:
final APIGatewayProxyRequestEvent proxyRequestEvent = new APIGatewayProxyRequestEvent ();
proxyRequestEvent.setHttpMethod("GET");
proxyRequestEvent.setPathParameters(Map.of("id","0"));
- Langage dominant
- Java
- Étoiles
- 1.6k
- Forks
- 575
- Merge moyen
- 1 j 15 h
- PR mergées (30 j)
- 12
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de aws/serverless-java-container
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
aws/serverless-java-container#1729 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
aws/serverless-java-container#1715 ·
Les mainteneurs répondent en général sous 1 jour
-
Support for API Gateway mTLS clientCert fieldPeut-être pris @2748109647 l’a pris il y a 10 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 48/100
aws/serverless-java-container#1726 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
aws/serverless-java-container#1579 · 3 commentaires · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 3/5 1-2 jours Accessibilité débutants 42/100
aws/serverless-java-container#1568 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de aws/serverless-java-container
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
ls1intum/thesis-management#1473 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
LunaDeerMC/Dominion#301 · 1 commentaire ·
-
[FEATURE] Expose external refresh, node-level translog and warmer statsPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverteuntriaged
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
opensearch-project/opensearch-prometheus-exporter#680 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100