暂时关闭(禁用)API网关中的单个API而不删除?

cel*_*epo 9 amazon-web-services aws-api-gateway

AWS API Gateway 是否可以在 API Gateway 中“关闭”/“禁用”API,而不删除 API 本身? 我希望保留 API 的配置,而不会因为我希望避免的删除而丢失它;这也将具有防止 AWS 计费 API 使用的有益并行动机。

有可能吗,还是删除是唯一的选择?

小智 13

您可以将阶段的突发限制/速率限制设置为零。在控制台中:API网关 -> 选择 API -> 保护/限制 -> 选择您的阶段 -> 编辑默认路由限制 -> 突发限制=0,速率限制=0

至少对我有用。调用 API 时您会得到:

{"message":"请求过多"}


Mar*_*cin 8

没有禁用按钮,但有两种可能性可以考虑作为解决方法:

  1. 删除 API 阶段。如果没有阶段,API 将无法访问。
  2. 由于如果存在具有大量自定义设置的多个阶段,可能会出现问题,因此您可以Deny向 API 添加资源基础策略。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "execute-api:/{{stageNameOrWildcard}}/{{httpVerbOrWildcard}}/{{resourcePathOrWildcard}}"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

该策略将拒绝 API 的所有调用,从而使其有效禁用。但调用仍将计入 API 使用量。

  • 当然,将配置作为捕获 API 或阶段配置的代码将是可靠的解决方案,这将在很大程度上减轻 [1.] 删除的缺点。 (3认同)
  • @cellepo如果您的API位于CloudFormation模板中,您可以完全删除它,然后在需要时重新创建。 (2认同)
  • 注意:不要忘记在更新策略后重新部署 API:https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-resource-policies-create-attach.html。此外,变更的部署和传播之间可能存在滞后。根据经验,我观察到“拒绝”生效之前大约有 12 秒的延迟。 (2认同)