¿Cómo resuelvo los errores «Invalid mapping expression specified» de API Gateway?

3 minutos de lectura
0

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:

  1. 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
            .
            .
    ...
  2. 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:

  1. 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"
              }
            ]
    
    ....
    
    ....
    
    }
  2. 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.

  1. 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"
  2. 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:

  1. Abra la consola de API Gateway y, a continuación, seleccione el nombre de su API.
  2. 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

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 6 meses