如何在 Google Developers Console 中设置费用限制
Posted
技术标签:
【中文标题】如何在 Google Developers Console 中设置费用限制【英文标题】:How do I set a cost limit in Google Developers Console 【发布时间】:2015-02-21 09:12:45 【问题描述】:在达到配额之前,Google Developers Console 中的某些功能(例如 Analytics API)是免费的。其他功能(例如 Google Cloud Storage)会通过第一次点击产生费用。
当我在https://console.developers.google.com/ > Storage > Cloud Storage > Storage Browser
下上传文件并将此文件公开提供时,我为每 GB 流量支付约 0.12 美元。
但从理论上讲,此链接的流量可能会爆炸,例如因为突然流行。因此,我想设置类似每日或每月的成本限制。
问:如何保护自己免受 Google Developers Console 中过高成本的影响?
【问题讨论】:
截至 2017 年 7 月,仍无法通过预算限制 GCE 的使用。如果一些邪恶的 DDOS 你的应用程序/数据库(例如从数百个主机/线程一次又一次地下载 1MB 文件),你可能会在早上醒来后看到数百到数千美元的账单。不仅如此,在您找到解决问题的方法之前,您将无法简单地重新打开您的应用程序,因为随着您的应用程序变大,DDOS 可能会随时回来。 如果我什至不能限制我的货币单位支出,我就不愿意使用 gcp。 【参考方案1】:你不能。从 2016 年 5 月 7 日起,我向 Google 询问了这个问题,这是他们的回复:
(GCE = Google 云引擎。没有支出限制。 GAE = Google 应用引擎——是的,它有支出限制。)
...您有资格获得支持...仅... ... [各种有用的链接] ...
话虽如此,目前没有任何功能可以让您 在 GCE 上配置有限的预算。这个功能肯定是可用的 对于 GAE [1]。正如您在 cmets 中提到的,您完全可以 关闭您的虚拟机(取决于您的用例)或将虚拟机设置为 如果达到一定的流量限制 [2],则会向您发送警报。
此致,
某人的名字 技术解决方案代表 谷歌云平台
[1]https://cloud.google.com/appengine/docs/quotas [2]https://cloud.google.com/monitoring/support/notification-options
@wmdry,你写道:“到这个链接的流量可能会爆炸”——我也害怕这个。这就是我向谷歌询问这个问题的原因。因此,我计划避免使用 Google 的 CDN,而是使用另一个有支出限制的 CDN 提供商。因为,与 nginx 不同,我看不到任何方式来限制/限制 Google 的 CDN。
不过,我确实计划使用 GCE(谷歌云引擎)。因此,现在我正在阅读有关如何限制我的 Nginx 服务器的速率。因为如果我只是正确配置 Nginx,那么你提到的 0.12 美元/GB 不可能在一个月内爆炸到 1 万美元?如果我从几个星期的假期回来时谷歌发送了 1 万美元的账单,这只是因为我的爱好项目和一些人永远一遍又一遍地下载 1 MB 的电影(因为:邪恶)。嗯,我的服务器越大越快,风险就越高。
我希望 Google 会增加支出限制,因为我确实想使用 Google 的 CDN。
2020 年更新: 显然,这确实会时不时地咬人——看这里:“烧掉 72,000 美元测试 Firebase 和 Cloud Run,差点破产” , 2020 年 12 月 8 日, https://news.ycombinator.com/item?id=25372336, 那样的话,他们可以联系谷歌,最后就不用付钱了。
【讨论】:
【参考方案2】:自 2017 年 7 月起,您可以设置通过电子邮件发送通知的预算但不限制支出:
要设置仅用于提醒的预算,该预算不会限制支出:
-
转到云平台控制台。
打开控制台左侧菜单并点击计费
如果您有多个结算帐号,请点击结算帐号名称。
在左侧,单击预算和警报。
官方帮助页面:https://support.google.com/cloud/answer/6293540?hl=en
【讨论】:
我没有看到任何表明它(设置预算和警报)将“限制总体支出”的信息。我的阅读是它只是发送电子邮件警报! 是的,现在还不清楚,真丢脸。 在设置预算时,它实际上明确表示“设置预算不会限制资源或 API 消耗”。所以它只是警报 - 不是硬限制。但是,您可以在别处设置 API 使用限制。 2021年仍然有效【参考方案3】:我发现 Google 的文档现在提供了两种方法来实际限制 GCP 项目的成本。它涉及以下设置:
-
创建一个checks the cost against the budget的Cloud Function,如果成本超出预算,则执行一定的动作。 Google 的文档提供了一个 sample 代码片段,它可以关闭项目中的所有 VM 实例或禁用项目的计费。关闭所有虚拟机将停止所有与虚拟机相关的成本,但您可以保留数据(并且仍然需要为存储付费)。禁用项目计费将有效地取消所有与成本相关的活动,并且您可能会丢失数据。您可以将 Cloud Function 命名为“budget-enforcer”。
上面提供的 Google 代码片段有一个硬编码的 ZONE 变量。记得更改它以匹配您的区域!
创建服务帐户以运行云功能“预算执行器”。要关闭 VM,服务帐户需要角色“Compute Instance Admin (v1)”。要禁用项目计费,服务帐号需要角色“项目计费经理”。
为云函数设置主题(我称我的为“proj-name-stop-vm”和“proj-name-disable-bill”)。
照常设置预算提醒,并将其连接到上述 Pub/Sub 主题之一。
请注意,Google 的文档确实提到在成本超过预算和触发功能之间可能存在延迟,因此如果您有绝对的硬成本限制,您应该建立一个缓冲区。我使用 90% 的预算作为关闭实例的触发线。
【讨论】:
Yan -- 我试过这个,但得到一个“KeyError”:***.com/questions/60099501/…你知道发生了什么吗? 我已经评论了你的问题。【参考方案4】:API 使用可以通过硬限制进行限制:
根据 API,您可以显式限制各种请求 方式,包括:每天请求,每 100 秒请求,以及 每个用户每 100 秒的请求数。您可能想限制 通过设置上限计费的使用量。例如,为了防止被计费 对于超出免费礼貌使用限制的使用,您可以设置请求 每日上限
Source
【讨论】:
文档说:“配额限制并不总是完全精确,因为在超过配额和开始强制执行之间存在一些延迟。使用配额作为工具时要限制计费,请允许一些缓冲。” cloud.google.com/apis/docs/capping-api-usage 文档中没有详细说明“一些缓冲区”的确切含义。 => 实际上,没有硬性限制!? 我刚刚与支持人员聊天,他们说 20 % 的缓冲区就可以了。如果我每天使用以下三个 API 和相应的限制,我将无法达到每月 200 美元的免费总限制。 * 距离矩阵 API:每天 170 个元素 * 方向 API:每天 170 个元素 * 地理编码 API:每天 340 个请求【参考方案5】:只需转到开发者控制台:
https://console.developers.google.com/project
选择您的项目。 选择“帐单和设置” 启用结算。然后转到 Compute/AppEngine/Settings 并设置每日预算。
【讨论】:
我没有这个选项。我从未创建过应用引擎应用程序。我使用云存储功能。这是我的侧边栏:link 你有一个应用引擎标签。 尝试从谷歌开发控制台创建一个新项目。这与新的应用引擎项目不同,因此您描述的选项将不会出现(afaik,请参阅我上面的链接/屏幕截图) 这个设置真的会影响云存储吗?这不只是为了应用引擎吗? 我很确定这个答案是不正确的。支出限制仅适用于 AppEngine,一般不适用于 GCE。请参阅下面的回答——我实际上联系了谷歌并询问了。【参考方案6】:转到 Google Cloud 控制台,然后转到结算/预算和提醒,为您的一个或所有项目创建新预算。您可以选择哪些服务应包含在限制中,并设置不应超过的每月金额。
【讨论】:
谢谢!为了清楚起见,这意味着无论如何(假设我选择了所有项目和服务)。我不会支付超过我指定的费用,对吧? @MTZ4 我想是这样,但您可能想与 Google 的某个人核实一下。 此选项只会向您发送通知,不会限制您的支出。【参考方案7】:您可以将预算发布/订阅警报与云功能相结合,如果达到阈值,该功能可以禁用整个帐户的计费。
完整教程在这里: https://www.youtube.com/watch?v=KiTg8RPpGG4
GitHub 仓库在这里: https://github.com/aioverlords/Google-Cloud-Platform-Killswitch
禁用计费
const _disableBillingForProject = async projectName =>
const res = await billing.updateBillingInfo(
name: projectName,
resource:
billingAccountName: ''
, // Disable billing
);
console.log(res);
console.log("Billing Disabled");
return `Billing disabled: $JSON.stringify(res.data)`;
;
【讨论】:
以上是关于如何在 Google Developers Console 中设置费用限制的主要内容,如果未能解决你的问题,请参考以下文章
如何从我的 Google Developers Console 中识别 Google Cloud Storage URI?
Google Developers Console 项目和 Google **Play** Developers Console 项目有啥区别?