プロキシリソースで API Gateway API を作成するときに、「設定エラーが原因で実行に失敗しました。パスに無効な文字があります」エラーを解決するにはどうすればよいですか?

最終更新日: 2021 年 10 月 6 日

AWS CloudFormation テンプレート (または OpenAPI の API の定義) を使用し、プロキシリソースを使う Amazon API Gateway の API を作成しました。API を作成するときに「設定エラーのために実行に失敗しました。パスに無効な文字があります」というエラーが表示されます。 どうすればこのエラーを解決できますか?

簡単な説明

プロキシパスパラメータ ({proxy+}) の URL パスパラメータマッピングが定義されていない場合、API Gateway は次のエラーを返します。

設定エラーのため実行に失敗しました。パスに無効な文字があります

統合リクエストでこのパラメータに定義された URL パスパラメータマッピングがない場合、API Gateway はパラメータをリテラル文字列「{proxy+}」として評価します。「{」は有効な文字ではないため、この問題が発生すると API Gateway はエラーを返します。

このエラーを解決するには、次の手順を実行して、統合リクエストのプロキシパスパラメータの URL パスパラメータマッピングを定義します。

解決方法

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] を選択し、次の操作を行います。
Nameproxy と入力します。これは Endpoint URL のパラメータに対応します。
Mapped from には method.request.path.proxy と入力します。
注: ここでは、proxy は、Method Request ペインで定義されているリクエストパスの名前に対応しています。このリクエストパスは、{proxy} という名前のプロキシリソースを作成するか、greedy パス変数の場合は {proxy+} を作成することによって追加されます。

5.    チェックマークアイコン (作成) を選択します。

注:Invalid mapping expression specified」というエラーが表示される場合は、AWS CloudFormation テンプレートまたは OpenAPI 定義を更新します。次に、この記事の手順を繰り返します。

6.    API をデプロイします。