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] を選択し、次の操作を行います。
Name に proxy と入力します。これは Endpoint URL のパラメータに対応します。
Mapped from には method.request.path.proxy と入力します。
注: ここでは、proxy は、Method Request ペインで定義されているリクエストパスの名前に対応しています。このリクエストパスは、{proxy} という名前のプロキシリソースを作成するか、greedy パス変数の場合は {proxy+} を作成することによって追加されます。
5. チェックマークアイコン (作成) を選択します。
注:「Invalid mapping expression specified」というエラーが表示される場合は、AWS CloudFormation テンプレートまたは OpenAPI 定義を更新します。次に、この記事の手順を繰り返します。
6. API をデプロイします。
関連情報
プロキシリソースとのプロキシ統合を設定する
API Gateway コンソールを使用したリクエストとレスポンスのデータマッピングの設定
API Gateway コンソールを使用して API 統合リクエストを設定する