我正在尝试使用更具成本效益的方式来部署我的Rails应用程序,并通过Ruby Starter项目来了解Google Cloud Platform.
它几乎是完美的,并且在价格方面肯定具有竞争力,但我无法弄清楚如何在重新部署后自动删除旧部署的版本实例.
即:假设我有一个版本的每个实例运行:
然后我对我的应用进行了更改并重新部署:
$ gcloud preview app deploy app.yaml worker.yaml --promote
所以现在我已经部署了每个实例的两个版本(因为Google智能地在它们之间切换,我假设):
但现在呢?这些实例是否会自行关闭?到目前为止,我发现摆脱它们的最好方法是从教程的删除项目页面:
删除应用版本
您可以在" 版本"页面中找到应用版本列表.要删除非默认版本,请选中复选框,然后单击" 删除".
Google App Engine上的每个人都只是手动删除其应用的旧部署吗?
要停止所有模块的所有非默认版本的所有实例(独立于这些模块所使用的语言),您可以control
使用modules
API 添加一个用Python编写的小模块:
from google.appengine.api.modules import modules # core logic (inside a cron or other handler) for m in modules.get_modules(): dv = modules.get_default_version(m) for v in modules.get_versions(m): if v != dv: modules.stop_version(m, v)
这不会删除非默认版本(modules
API似乎当前不支持删除),但确保它们的实例都没有运行(因此不会对它们产生任何费用).
这个核心逻辑用于将它包装在处理程序中,因此您可以根据需要触发它,例如在cron作业中,或者从外部触发的"常规"处理程序(使用适当的auth),例如通过wget或者在你的bash脚本中卷曲.
我不相信有Python的Ruby版本google.appengine.api.modules.modules
,但是,我可能错了......我找不到一个.但是,一个简单的Python编码模块应该允许您控制以任何其他App Engine语言编码的模块(因为App Engine允许您混合和匹配以不同语言编码的模块).