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.」 (設定エラーのために実行に失敗しました: パスに無効な文字があります) というエラーが表示されます。 この問題を解決する方法を教えてください。

簡単な説明

このエラーは、プロキシのパスパラメータ (「greedy」パス変数とも呼ばれます) {proxy+} に、URL パスパラメータマッピングを定義していない場合に発生することがあります。このマッピングが定義されていない場合、API Gateway はパラメータ名を文字列そのものの「{proxy+}」と評価します。「{」は有効な文字でないため、エラーが起こります。

解決方法

  1. API Gateway コンソールで、自身の API の名前を選択します。
  2. Resources ペインでメソッドが選択された状態で、Method Execution ペインで、Integration Request を選択します。
  3. Integration Request ペインで Endpoint URL で正しいプロキシのパスパラメータが使用されていることを確認してください: {proxy}。(つまり、「+」なしの greedy パス変数。) 例: http://example.com/{proxy}
  4. URL Path Parameters を展開し、Add path を選択します。
  5. 以下の操作を実行します。
    Nameproxy と入力します。これは Endpoint URL のパラメータに対応します。
    Mapped from には method.request.path.proxy と入力します。ここでは、proxyMethod Request ペインのリクエストパスの名前に対応します。
  6. チェックマークアイコン (Create) を選択します。
    注: 「Invalid mapping expression specified」というエラーが表示される場合は、AWS CloudFormation テンプレートまたは OpenAPI 定義を更新します。その後、この記事の手順を繰り返します。
  7. API をデプロイします。