¿Cómo resuelvo los errores «Invalid mapping expression specified» de API Gateway?
He utilizado una plantilla de AWS CloudFormation, una definición de OpenAPI o un comando de la Interfaz de línea de comandos de AWS (AWS CLI) para crear una API de Amazon API Gateway con un recurso de proxy. Cuando intento añadir parámetros de ruta URL a la API, aparece el mensaje de error «Invalid mapping expression specified».
Descripción breve
Cuando el parámetro de ruta del proxy {proxy+} no tiene una asignación de parámetros de ruta URL definida, API Gateway devuelve un error especificado con una expresión de asignación no válida.
Para resolver este problema, complete los pasos de la herramienta que utilizó para crear la API.
Resolución
Plantilla de CloudFormation
Defina la propiedad RequestParameters de la sección AWS::ApiGateway::Method.
Siga estos pasos:
-
Actualice la plantilla de CloudFormation para que el valor RequestParameters se establezca en true.
Ejemplo de plantilla:
.... . ProxyMethod: Type: 'AWS::ApiGateway::Method' Properties: . . RequestParameters: method.request.path.proxy: true Integration: RequestParameters: integration.request.path.proxy: 'method.request.path.proxy' IntegrationHttpMethod: ANY . . ...
-
Para actualizar la API, utilice la plantilla de CloudFormation para actualizar la pila de AWS CloudFormation.
Nota: Para obtener más información sobre cómo actualizar los recursos de API Gateway, consulte Amazon API Gateway resource type reference.
Definición de OpenAPI
Defina la sección parameters en el x-amazon-apigateway-any-method.
Siga estos pasos:
-
Actualice la definición de la API para que parameters en la sección x-amazon-apigateway-any-method tengan los siguientes valores:
"x-amazon-apigateway-any-method": { "parameters": [ { "name": "proxy", "in": "path", "required": true, "type": "string" } ] .... .... }
-
Importe el archivo de definición de API actualizado a API Gateway para actualizar la API.
Nota: Para obtener más información, consulte Describing parameters en el sitio web de OpenAPI.
Comando de la AWS CLI
Nota: Si se muestran errores al ejecutar comandos de la AWS CLI, consulte Errores de solución de problemas de la AWS CLI. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.
Cuando ejecute el comando put-integration para configurar la integración, añada --request-parameters.
-
Ejecute el comando update-method para actualizar la configuración de Solicitud de método del método HTTP:
aws apigateway update-method \ --rest-api-id <your-api-id> \ --resource-id <your-resource-id> \ --http-method <your-http-method> \ --patch-operations op="add",path="/requestParameters/method.request.path.proxy",value="true"
-
Ejecute el comando put-integration para actualizar la configuración de Solicitud de integración del método HTTP que tiene**--request-parameters**. El parámetro de ejemplo se denomina proxy y tiene el valor method.request.path.proxy. El comando put-integration configura una integración HTTP_PROXY con un enlace de VPC:
aws apigateway put-integration \ --rest-api-id <your-api-id>\ --resource-id <your-resource-id> \ --http-method <your-http-method> \ --type HTTP_PROXY \ --integration-http-method <your-integration-http-method> \ --uri "<your-integration-endpoint-uri>" \ --connection-type VPC_LINK \ --connection-id <your-vpclink-connection-id> \ --request-parameters "integration.request.path.proxy=method.request.path.proxy"
Nota: Sustituya todos los valores del ejemplo por sus valores.
Prueba de la configuración
Siga estos pasos:
- Abra la consola de API Gateway y, a continuación, seleccione el nombre de su API.
- Añada los parámetros de la ruta URL.
Nota: Si el parámetro de ruta de proxy incluye una asignación de parámetros de ruta URL correctamente definida, no aparece ningún error.
Información relacionada
Objeto x-amazon-apigateway-integration.requestParameters
Configuración de una integración de proxy con un recurso de proxy
Configuración de transformaciones de datos para las API de REST
Contenido relevante
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace un año