如何禁用 REST 或 HTTP API 的 API 网关默认端点?

上次更新日期:2022 年 8 月 26 日

我想允许客户端仅使用自定义域名调用我的 API。如何停用 Amazon API Gateway REST 或 HTTP API 的默认 API execute-api 端点 URL?

简短描述

API 网关 REST APIHTTP API 使用以下格式的默认 API 端点:"https://{api_id}.execute-api.{region}.amazonaws.com"。如果您的 API 网关 REST 或 HTTP API 使用自定义域名,则可以停用默认端点。这允许所有流量通过自定义域名路由到您的 API。

解决方法

按照以下步骤使用 API 网关控制台、AWS 命令行界面(AWS CLI)或 AWS CloudFormation 禁用默认端点。

注意:

API 网关控制台

REST API

  1. 打开 API Gateway console(API Gateway 控制台)。
  2. 在导航窗格中,选择 API,然后选择您的 REST API。
  3. 在导航窗格中,选择设置
  4. 对于默认端点,选择已禁用,然后选择保存更改
  5. 在导航窗格中,依次选择资源操作,然后选择部署 API

HTTP API

  1. 打开 API Gateway console(API Gateway 控制台)。
  2. 在导航窗格中,选择 API,然后选择您的 HTTP API。
  3. 在导航窗格中,选择设置
  4. 对于默认端点,选择已禁用,然后选择保存更改
  5. 在导航窗格中,依次选择资源操作,然后选择部署 API

AWS CLI

REST API

运行类似于以下内容的 AWS CLI 命令 update-rest-api

aws apigateway update-rest-api --rest-api-id abcdef123 --patch-operations op=replace,path=/disableExecuteApiEndpoint,value='True'

要部署更新后的 API,请运行 AWS CLI 命令 create-deployment,如下所示

aws apigateway create-deployment --rest-api-id abcdef123 --stage-name dev

注意:将 api_id abcdef123 和 stage_name dev 替换为您的 REST API ID 和相应的阶段。

HTTP API

运行类似于以下内容的 AWS CLI 命令 update-api
aws apigatewayv2 update-api --api-id abcdef123 --disable-execute-api-endpoint

要部署更新后的 API,请运行 AWS CLI 命令 create-deployment,如下所示:

aws apigatewayv2 create-deployment --api-id abcdef123 --stage-name dev

注意:将 api_id abcdef123 和 stage_name dev 替换为您的 HTTP API ID 和相应的阶段。

CloudFormation 模板

要从 CloudFormation 模板中禁用默认端点,可以将 DisableExecuteApiEndpoint 参数设置为 True。更新 REST APIHTTP API 的 CloudFormation 模板。

重要信息:如果使用默认端点 URL 调用 API,则禁用默认端点会导致 HTTP 403 禁止错误。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?