Estoy trabajando en una aplicación SAM que tiene una función lambda con API Gateway como fuente del evento. API Endpoint es un método POST que requiere un conjunto de parámetros en el cuerpo de la solicitud. API Gateway nos brinda la capacidad de validar el cuerpo de la solicitud especificando un modelo de solicitud mediante la consola de AWS.
Consulte las capturas de pantalla a continuación de las opciones de la consola de AWS:
Necesito configurar opciones similares a través de la plantilla SAM y poder vincular un Modelo con el cuerpo de la solicitud, pero no puedo configurar la opción de validación de la solicitud y tampoco puedo encontrar ninguna documentación o ejemplo.
A continuación se muestra mi plantilla SAM
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: SAM Template Parameters: Stage: Type: String Default: dev Resources: MyApiGateway: Type: AWS::Serverless::Api Properties: Name: My AWS Serverless API StageName: !Ref Stage Models: ExchangeRate: $schema: "http://json-schema.org/draft-04/schema#" properties: base: type: string target: type: string required: - base - target title: User type: object ExchangeRateFunction: Type: AWS::Serverless::Function Properties: CodeUri: functions/exchange-rate/ Handler: index.handler Runtime: nodejs12.x Description: Function to Get Currency Exchange Rate MemorySize: 128 Timeout: 3 Policies: - AWSLambdaBasicExecutionRole Events: HelloWorld: Type: Api Properties: RestApiId: !Ref MyApiGateway Path: /exchange Method: POST RequestModel: Model: ExchangeRate Required: true Outputs: ExchangeRateFunction: Description: "Exchange Rate Lambda Function ARN" Value: !GetAtt ExchangeRateFunction.Arn MyApiGateway: Description: "My Seed API EndPoint" Value: !Sub "https://${MyApiGateway}.execute-api.${AWS::Region}.amazonaws.com/${Stage}"Documentación referida
Por favor, hágame saber cómo puedo configurar la opción 'Solicitar validador' en 'Validar cuerpo' usando la plantilla SAM. Agradeceré la ayuda
Agregue ValidateBody: verdadero, es decir
RequestModel: Model: ExchangeRate Required: true ValidateBody: trueMe encontré con el mismo problema, aparentemente esta característica falta en SAM por un tiempo, como puede ver en esta pregunta anterior:
¿Cómo agregar un validador de solicitudes en una plantilla de AWS SAM para AWS::Serverless::Api?
Además, se han abierto algunos problemas en GitHub, siendo el último:
https://github.com/awslabs/serverless-application-model/issues/1403
Hackeé una solución que incluye dos propiedades adicionales en la especificación SAM para resolver este problema, pero no espero que se convierta en una PR. Puedo proporcionar más instrucciones si desea utilizar mi repositorio bifurcado para implementar desde una rama de desarrollo.