Usando AWS re:Post, accetti AWS re:Post Termini di utilizzo

Come posso risolvere gli errori "Invalid mapping expression specified" da API Gateway?

3 minuti di lettura
0

Ho utilizzato un modello AWS CloudFormation, una definizione OpenAPI o un comando dell’interfaccia della linea di comando AWS (AWS CLI) per creare un'API Gateway Amazon API con una risorsa proxy. Quando provo ad aggiungere i parametri del percorso URL all'API, ricevo il messaggio di errore "Invalid mapping expression specified".

Breve descrizione

Quando il parametro del percorso proxy {proxy+} non ha una mappatura definita dei parametri del percorso URL, API Gateway restituisce un messaggio di errore "Invalid mapping expression specified".

Per risolvere tale problema, completa i passaggi relativi allo strumento impiegato per creare l'API.

Risoluzione

Modello CloudFormation

Definisci la proprietà RequestParameters della sezione AWS::ApiGateway::Method.

Completa i seguenti passaggi:

  1. Aggiorna il modello CloudFormation in modo che il valore RequestParameters sia impostato su true.

    Modello di esempio:

    ....
    .
      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. Per aggiornare l’API usa il modello CloudFormation per aggiornare lo stack di CloudFormation.

Nota: per ulteriori informazioni su come aggiornare le risorse API Gateway, consulta Amazon API Gateway resource type reference.

Definizione OpenAPI

Definisci la sezione dei parametri nell'oggetto x-amazon-apigateway-any-method object.

Completa i seguenti passaggi:

  1. Aggiorna la definizione dell'API in modo che i parametri nella sezione x-amazon-apigateway-any-method abbiano i seguenti valori:

          "x-amazon-apigateway-any-method": {                "parameters": [
              {
                "name": "proxy",
                "in": "path",
                "required": true,
                "type": "string"
              }
            ]
    
    ....
    
    ....
    
    }
  2. Importa il file di definizione API aggiornato in API Gateway per aggiornare l’API.

Nota: per ulteriori informazioni, consulta Describing parameters sul sito Web Swagger.

Comando AWS CLI

Nota: se visualizzi dei messaggi di errore quando esegui i comandi dell'interfaccia della linea di comando AWS, consulta la sezione Risolvere gli errori AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Quando esegui il comando put-integration per configurare l'integrazione, aggiungi --request-parameters.

  1. Esegui il comando update-method per aggiornare la configurazione Richiesta metodo del metodo 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. Esegui il comando put-integration per aggiornare la configurazione Richiesta integrazione del metodo HTTP con --request-parameters. Il parametro di esempio è denominato proxy e ha il valore method.request.path.proxy. Il comando put-integration imposta un'integrazione HTTP_PROXY con un collegamento 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: sostituisci tutti i valori di esempio con i tuoi valori.

Prova la configurazione

Completa i seguenti passaggi:

  1. Apri la console API Gateway, quindi scegli la tua API.
  2. Aggiungi i parametri del percorso URL.
    Nota: se il parametro del percorso proxy include una mappatura dei parametri del percorso URL definita correttamente, non viene visualizzato alcun errore.

Informazioni correlate

x-amazon-apigateway-integration.requestParameters object

Configurazione di un'integrazione proxy mediante una risorsa proxy

Setting up data transformations for REST APIs