Como resolvo erros de “Expressão de mapeamento inválida especificada” do API Gateway?
Usei um modelo do AWS CloudFormation, uma definição de OpenAPI ou um comando da AWS Command Line Interface (AWS CLI) para criar uma API do Amazon API Gateway com um recurso proxy. Quando tento adicionar parâmetros de caminho de URL à API, recebo uma mensagem de erro “Expressão de mapeamento inválida especificada”.
Breve descrição
Quando o parâmetro do caminho do proxy {proxy+} não tem um mapeamento de parâmetros de caminho de URL definido, o API Gateway retorna uma mensagem de erro “Invalid mapping expression specified”.
Para resolver esse problema, conclua as etapas da ferramenta que você usou para criar a API.
Resolução
Modelo do CloudFormation
Defina a propriedade RequestParameters da seção AWS::ApiGateway::Method.
Conclua as seguintes etapas:
-
Atualize o modelo do CloudFormation para que o valor RequestParameters seja definido como verdadeiro.
Exemplo de modelo:
.... . 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 atualizar sua API, use o modelo do CloudFormation para atualizar a pilha do CloudFormation.
Observação: para obter mais informações sobre como atualizar os recursos do API Gateway, consulte a referência de tipo de recurso do Amazon API Gateway.
Definição de OpenAPI
Defina a seção de parâmetros no objeto x-amazon-apigateway-any-method.
Conclua as seguintes etapas:
-
Atualize sua definição de API para que parâmetros na seção x-amazon-apigateway-any-method tenham os seguintes valores:
"x-amazon-apigateway-any-method": { "parameters": [ { "name": "proxy", "in": "path", "required": true, "type": "string" } ] .... .... }
-
Importe seu arquivo de definição de API atualizado para o API Gateway para atualizar sua API.
Observação: para obter mais informações, consulte Describing parameters no site do Swagger.
Comando da AWS CLI
Observação: se você receber erros ao executar comandos da AWS CLI, consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Ao executar o comando put-integration para configurar a integração, adicione os parâmetros --request-parameters.
-
Execute o comando update-method para atualizar a configuração de Solicitação de método do 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"
-
Execute o comando put-integration para atualizar a configuração de Solicitação de integração do método HTTP que tem --request-parameters. O parâmetro de exemplo é chamado proxy e tem um valor de method.request.path.proxy. O comando put-integration configura uma integração HTTP_PROXY com um link 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"
Observação: substitua todos os valores de exemplo pelos seus valores.
Testar a configuração
Conclua as seguintes etapas:
- Abra o console do API Gateway e escolha o nome da sua API.
- Adicione parâmetros de caminho de URL.
Observação: se o parâmetro do caminho do proxy incluir um mapeamento de parâmetros de caminho de URL definido corretamente, nenhum erro será exibido.
Informações relacionadas
Objeto x-amazon-apigateway-integration.requestParameters
Conteúdo relevante
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há um ano