En utilisant AWS re:Post, vous acceptez les AWS re:Post Conditions d’utilisation

Comment résoudre les erreurs « Invalid mapping expression specified » provenant d'API Gateway ?

Lecture de 3 minute(s)
0

J'ai utilisé un modèle AWS CloudFormation, une définition OpenAPI ou une commande de l’interface de la ligne de commande AWS (AWS CLI) pour créer une API Amazon API Gateway avec une ressource proxy. Lorsque j'essaie d'ajouter des paramètres de chemin d'URL à l'API, j’obtiens le message d'erreur « Invalid mapping expression specified ».

Brève description

Si le paramètre de chemin proxy {proxy+} n'a pas de mappage de paramètre de chemin d'URL défini, API Gateway renvoie le message d'erreur « Invalid mapping expression specified ».

Pour résoudre ce problème, suivez les étapes suivantes en fonction de l'outil utilisé pour créer l'API.

Résolution

Modèle CloudFormation

Définissez la propriété RequestParameters de la section AWS::ApiGateway::Method.

Procédez comme suit :

  1. Mettez à jour le modèle CloudFormation afin de définir la valeur RequestParameters sur true.

    Exemple de modèle :

    ....
    .
      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. Pour mettre à jour votre API, utilisez le modèle CloudFormation pour mettre à jour la pile CloudFormation.

Remarque : pour en savoir plus sur la mise à jour des ressources API Gateway, consultez la page Référence des types de ressources Amazon API Gateway.

Définition d'OpenAPI

Définissez la section parameters dans l'objet x-amazon-apigateway-any-method object.

Procédez comme suit :

  1. Mettez à jour la définition de votre API afin que la section parameters, sous la section x-amazon-apigateway-any-method, affiche les valeurs suivantes :

          "x-amazon-apigateway-any-method": {                "parameters": [
              {
                "name": "proxy",
                "in": "path",
                "required": true,
                "type": "string"
              }
            ]
    
    ....
    
    ....
    
    }
  2. Importez votre fichier de définition d'API mis à jour dans API Gateway pour mettre à jour votre API.

Remarque : pour en savoir plus, consultez la page Describing parameters du site Web de Swagger.

Commande AWS CLI

**Remarque :**Si des erreurs surviennent lorsque vous exécutez des commandes AWS CLI, consultez l’article Résoudre les erreurs AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.

Au moment d’exécuter la commande put-integration pour configurer l'intégration, veillez à ajouter les --request-parameters.

  1. Exécutez la commande update-method pour mettre à jour la configuration de la Requête de méthode pour la méthode 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. Exécutez la commande put-integration pour mettre à jour la configuration de la Demande d'intégration pour la méthode HTTP qui contient les --request-parameters. Dans l’exemple présenté, le paramètre est nommé proxy et possède la valeur method.request.path.proxy. La commande put-integration configure une intégration HTTP_PROXY avec un Lien 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"

    Remarque : remplacez tous les exemples de valeurs par vos propres valeurs.

Test de la configuration

Procédez comme suit :

  1. Ouvrez la console API Gateway, puis choisissez le nom de votre API.
  2. Ajoutez des paramètres de chemin d'URL.
    Remarque : si votre paramètre de chemin proxy inclut un mappage de paramètres de chemin d'URL correctement défini, aucune erreur ne s'affiche.

Informations connexes

Objet x-amazon-apigateway-integration.requestParameters

Configuration d’une intégration de proxy avec une ressource de proxy

Configuration de transformations de données pour les API REST

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 7 mois