如何禁用 REST 或 HTTP API 的 API 网关默认端点?
上次更新日期:2022 年 8 月 26 日
我想允许客户端仅使用自定义域名调用我的 API。如何停用 Amazon API Gateway REST 或 HTTP API 的默认 API execute-api 端点 URL?
简短描述
API 网关 REST API 和 HTTP API 使用以下格式的默认 API 端点:"https://{api_id}.execute-api.{region}.amazonaws.com"。如果您的 API 网关 REST 或 HTTP API 使用自定义域名,则可以停用默认端点。这允许所有流量通过自定义域名路由到您的 API。
解决方法
按照以下步骤使用 API 网关控制台、AWS 命令行界面(AWS CLI)或 AWS CloudFormation 禁用默认端点。
注意:
- 如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI。
- 激活或停用默认端点后,需要部署才能使更新生效。
API 网关控制台
REST API
- 打开 API Gateway console(API Gateway 控制台)。
- 在导航窗格中,选择 API,然后选择您的 REST API。
- 在导航窗格中,选择设置。
- 对于默认端点,选择已禁用,然后选择保存更改。
- 在导航窗格中,依次选择资源、操作,然后选择部署 API。
HTTP API
- 打开 API Gateway console(API Gateway 控制台)。
- 在导航窗格中,选择 API,然后选择您的 HTTP API。
- 在导航窗格中,选择设置。
- 对于默认端点,选择已禁用,然后选择保存更改。
- 在导航窗格中,依次选择资源、操作,然后选择部署 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 API 或 HTTP API 的 CloudFormation 模板。
重要信息:如果使用默认端点 URL 调用 API,则禁用默认端点会导致 HTTP 403 禁止错误。