Ich habe eine POST-API-Gateway-Methode, an die ich die folgende Anwendung/JSON-Stelle senden, um Parameter von ihm zu einem Lambda, mit dem die Methode verbunden ist, zu senden:API-Gateway - Body Mapping-Vorlage - optionale Körperparameter
{
"otherClientId": "12345",
"message": "Text",
"seconds": 0,
"hours": 0
}
ich die folgende Zuordnungsvorlage verwenden:
#set($inputRoot = $input.path('$'))
{
"authorizedUser": "$context.authorizer.principalId",
"otherClientId": "$inputRoot.otherClientId",
"message": "$inputRoot.message",
"amount": $inputRoot.amount,
"duration": $inputRoot.duration
}
Das Problem, das ich erlebt habe ist, dass ich eine „Bad String“ Fehlermeldung beim Versuch, die Anforderung ohne Betrag oder die Dauer zu senden. Aus irgendeinem Grund scheinen diese Parameter nicht optional zu sein (aber ich brauche sie!). Ich bin in der Lage, andere Parameter, wie zum Beispiel Nachricht, aber nicht die zwei Zahlenparameter zu verpassen.
Hat jemand anderes dies erfahren oder kann jemand auf das Offensichtliche hinweisen, das ich wahrscheinlich vermisse? Die AWS-Dokumentation ist ein wenig spärlich zu diesem Thema.
Vielen Dank für Ihre Antwort! Ich habe viele Kombinationen ausprobiert: '#set ($ hasAuthorizedUser =" $ context.authorizer.principalId "! =" ") #set ($ hasMessage = $ input.path ('$. Message')! =" ") #set ($ hasAmount = $ input.path ('$. Betrag')! = "") #set ($ hasDuration = $ input.path ('$. Dauer')! = "") { #if ($ hasAuthorizedUser), "authorizedUser": "$ context.authorizer.principalId" #end #if ($ hasMessage), "Nachricht": $ input.path ('$. message') # end #if ($ hasAmount), "Betrag": $ input.path ('$ .betrag') # end #if ($ hasDuration), "duration": $ input.path ('$. duration') # end } 'aber bekomme eine schlechte Zeichenfolge auch mit allen Parametern – RossP
Während ich weiß, dass die erste Lösung (mit den Anführungszeichen) funktioniert, erfordert es, dass ich die Zeichenfolgen zurück in nu konvertieren mbers innerhalb des Lambda, und das fühlt sich falsch für mich an! – RossP
es scheint, dass Sie extra ',' vor authorizedUser versuchen: '{ #if ($ hasAuthorizedUser)" authorizedUser ":" $ context.authorizer.principalId "#end #if ($ hasMessage)," Nachricht ": $ input.path ('$. message') # end #if ($ hasAmount), "Betrag": $ input.path ('$ .betrag') # end #if ($ hasDuration), "duration": $ input.path ('$. duration') # end } ' –