用于在 AWS API Gateway 上列出 API 的 AWS v1 与 v2 API 对于同一 API Gateway 实例返回不同的数据

Prz*_*mek 13 amazon-web-services aws-api-gateway aws-rest-api

我希望使用 REST API 列出我的 AWS API Gateway 实例上可用的 API。我试过:

我对这两个调用使用相同的身份验证凭据。

两者均响应 200 OK。

  • v1 使用我的 API 返回正确的数据
  • v2 返回空响应 ( {"items": []} )
  • AWS-CLI v2 命令aws apigateway get-rest-apis返回正确的数据

知道为什么 v2 REST API 返回空响应吗?

Muk*_*ell 23

v1 api 网关和 v2 api 网关是 AWS 中不同的资源。在 v1 中只有RESTAPI 网关,在 v2 中有两种类型:HTTPWebSocket网关。它们可以共存,但彼此不兼容,并且具有截然不同的功能集。

有关差异的概述,请参阅此处 API 网关类型之间的比较: //docs.aws.amazon.com/apigateway/latest/developerguide/http-api-vs-rest.html

但为了更具体地回答您的问题,请参阅https://apigateway.eu-central-1.amazonaws.com/v2/apis的回复 为空,因为您没有任何 v2“HTTP”api,而“REST”api 没有存在于 v2 中。

您在 v2 cli 中看到它们的原因是因为 v2 cli 工具通过单独的子命令支持这两者。重要的不是 cli 的版本,而是您使用的子命令:

  • “HTTP”API 的管理方式为apigatewayv2
  • “REST”API 是使用apigateway.

因此使用带有子命令的 v2 AWS-CLIapigateway仍然访问 v1apigateway资源。

aws apigatewayv2 get-apis使用“HTTP”API 网关资源时,您需要使用等效功能。