API Gateway で API の作成が BadRequestException になったときの対処方法

2023.01.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

AWS CLI で新しい API を作成するとBadRequestExceptionが表示されます。
AWS 公式ドキュメントによるとパラメータが間違っているとのことですが、まったく同じパラメータが別の環境では成功しました。エラーになる理由を教えてください。

$ aws apigatewayv2 create-api \
    --name hato-http-api \
    --protocol-type HTTP

An error occurred (BadRequestException) when calling the CreateApi operation: HTTP APIs are not available in this AWS region

どう対応すればいいの?

エラーメッセージの後半をご確認ください。

BadRequestExceptionは基本的にオプションが間違っている場合に表示され、具体的な内容もエラーメッセージの一部として表示されます。今回の場合は「HTTP APIs are not available in this AWS region」の部分が該当し、指定した API タイプ(HTTP API)をリージョンがサポートしてないことが理由となります。

リージョンによってサポートされる機能には制限があることを認識し、必要に応じて別のリージョンや別タイプの利用をご検討ください。

なお、その他のエラーメッセージの場合は AWS CLI のリファレンスもご参照ください。

その他のエラー例とリファレンス

$ aws apigatewayv2 create-api \
    --name hato-http-api \
    --protocol-type HTTP  --route-selection-expression '${request.method} ${request.body}'  

An error occurred (BadRequestException) when calling the CreateApi operation: Unexpected variable in selection expression: ${request.body}

create-api — AWS CLI 2.9.15 Command Reference

For HTTP APIs, the routeSelectionExpression must be ${request.method} ${request.path}.

参考資料

BadRequestException | API Gateway Client - AWS SDK for JavaScript v3

The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.

インポート中のエラーと警告 - Amazon API Gateway

無効な OpenAPI ドキュメントなど、大きな問題に対してエラーが生成される場合があります。エラーは、失敗のレスポンスの例外 (例: BadRequestException) として返されます。