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 パスパラメーター を追加しようとすると、「nvalid mapping expression specified.」というエラーが発生します。 この問題を解決する方法を教えてください。

簡単な説明

このエラーは、プロキシのパスパラメータ (欲張りなパス変数とも呼ばれます) {proxy+} に、URL パスパラメーターマッピングを定義していない場合に発生することがあります。

AWS CloudFormation テンプレートの、 [RequestParameters] プロパティを [AWS::ApiGateway::Method] セクションで適切に定義してください。OpenAPI の定義では、[parameters] セクションを、x-amazon-apigateway-any-method object の下で定義します。

解決方法

AWS CloudFormation テンプレート

1.    テンプレートを更新します。 [RequestParameters] プロパティは次に示すとおりに定義します。

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

API ゲートウェイリソース更新の詳細については、「Amazon API Gateway Resource Type Reference」をご参照ください。

2.    自分のテンプレートを使い、AWS CloudFormation スタックを更新します。このアクションで API の更新が行われます。

OpenAPI 定義

1.    [parameters] を [x-amazon-apigateway-any-method] セクションの下で次のとおりに定義し、API を更新します。

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

....

....

}

詳細については、OpenAPI ウェブサイトの「Describing Parameters」をご参照ください。

2.    更新した API 定義ファイルを API Gateway にインポートし、API を更新します。

(オプション) 変更の確認

AWS CloudFormation テンプレートもしくは OpenAPI の定義を更新し、自身の API を更新した後は、API Gateway コンソールを見て問題が解決されているか確認できます。

1.    API Gateway コンソールで、自身の API の名前を選択します。

2.    ユースケースの必要に 応じて、URL パスパラメーターを追加します。エラーは表示されていないはずです。