我使用 AWS CloudFormation 或 OpenAPI (Swagger) 创建了一个带有代理资源的 API Gateway API。当我尝试向该 API 添加 URL 路径参数时,收到错误“Invalid mapping expression specified”。 如何解决此错误?

上次更新时间:2019 年 6 月 10 日

我使用 AWS CloudFormation 模板OpenAPI (Swagger) 定义创建了一个带有代理资源的 Amazon API Gateway API。当我尝试向该 API 添加 URL 路径参数时,收到错误“Invalid mapping expression specified”。 如何修复此问题?

简短描述

如果没有为代理路径参数 {proxy+}(也称为“贪婪路径变量”)定义 URL 路径参数映射,可能会发生此错误。

在 AWS CloudFormation 模板中,定义 AWS::ApiGateway::Method 部分的 RequestParameters 属性。在 OpenAPI 定义中,定义 x-amazon-apigateway-any-method object 下的 parameters 部分。

解决方法

AWS CloudFormation 模板

1.    更新您的模板,定义 RequestParameters 属性,如下所示:

"RequestParameters": {"method.request.path.proxy":true}

有关更新 API Gateway 资源的更多信息,请参阅 Amazon API Gateway 资源类型参考

2.    使用模板更新 AWS CloudFormation 堆栈。此操作会更新您的 API。

OpenAPI 定义

1.    更新您的 API 定义,定义 x-amazon-apigateway-any-method 部分下的 parameters,如下所示:

      "x-amazon-apigateway-any-method": {
                "parameters": [
          {
            "name": "proxy",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ]

....

....

}

有关更多信息,请参阅 OpenAPI 网站上的描述参数

2.    通过将更新后的 API 定义文件导入 API Gateway 来更新 API。

(可选)验证更改

在更新 AWS CloudFormation 模板或 OpenAPI 定义并更新 API 之后,可以通过检查 API Gateway 控制台来验证问题是否已修复。

1.    在 API Gateway 控制台中,选择您的 API 的名称。

2.    根据使用案例的需要添加 URL 路径参数。您应该不会再遇到错误。