当我尝试使用 AWS CloudFormation 或 OpenAPI (Swagger) 创建具有代理资源的 API Gateway API 时,出现错误“Execution failed due to configuration error: Illegal character in path”。 如何解决此错误?

上次更新时间:2019 年 7 月 3 日

我正使用 AWS CloudFormation 模板OpenAPI (Swagger) API 定义创建一个具有代理资源的 Amazon API Gateway API。当我创建该 API 时,我收到错误“Execution failed due to configuration error: Illegal character in path”。 如何修复此问题?

简短描述

如果没有为代理路径参数 {proxy+}(也称为“贪婪路径变量”)定义 URL 路径参数映射,可能会发生此错误。如果未定义该映射,API Gateway 会将参数名称评估为文字字符串“{proxy+}”。这会导致错误,因为“{”不是一个有效字符。

解决方法

  1. API Gateway 控制台中,选择您的 API 的名称。
  2. 使用资源窗格中选择的方法,在方法执行窗格中,选择集成请求
  3. 集成请求窗格中,验证终端节点 URL 是否使用正确的代理路径参数:{proxy}。(即不带“+”的贪婪路径变量。) 例如:http://example.com/{proxy}
  4. 展开 URL 路径参数,然后选择添加路径
  5. 执行以下操作:
    对于名称,输入 proxy。这对应于终端节点 URL 中的参数。
    对于映射来源,输入 method.request.path.proxy。在此,proxy 对应于方法请求窗格中定义的请求路径的名称。
  6. 选择复选标记图标(创建)。
    注意:如果您收到错误“Invalid mapping expression specified”,请更新 AWS CloudFormation 模板或 OpenAPI 定义。之后,重复本文中的步骤。
  7. 部署您的 API。