如何在灵活的环境中部署GAE项目而无需计费?

时间:2017-01-20 12:47:11

标签: google-app-engine gcloud

我一直在使用Flask和其他第三方库开发一些REST服务,我想在灵活的环境中将其部署到GAE。我通常部署到GAE标准环境,但我想尝试新的灵活环境。目前,我希望在不启用结算的情况下部署到灵活的环境,Google支持部门向我保证,可以在GAE灵活环境下进行部署,而无需启用结算功能。

在本地运行我的代码工作正常,并具有以下yaml文件:

runtime: python
env: flex
entrypoint: gunicorn -b :$PORT whereismybus230.starter:app

runtime_config:
  python_version: 3

所以我通过Google云控制台网页(像往常一样)创建了一个新项目,并在我的本地计算机上创建了一个新的gcloud配置文件,因此我将其部署到这个新项目中。 然后我跑:

gcloud app deploy --verbosity=info

我知道正在构建一个docker镜像,并且在某些时候它将被推送到计算引擎但是在几分钟后它会失败:

Successfully built sophiabus230 aniso8601 future docopt itsdangerous MarkupSafe
Installing collected packages: Werkzeug, click, MarkupSafe, Jinja2, itsdangerous, Flask, jsonschema, pytz, six, python-dateutil, aniso8601, flask-restplus, beautifulsoup4, future, sophiabus230, coverage, requests, docopt, coveralls
Successfully installed Flask-0.12 Jinja2-2.9.4 MarkupSafe-0.23 Werkzeug-0.11.15 aniso8601-1.2.0 beautifulsoup4-4.5.3 click-6.7 coverage-4.3.4 coveralls-1.1 docopt-0.6.2 flask-restplus-0.9.2 future-0.16.0 itsdangerous-0.24 jsonschema-2.5.1 python-dateutil-2.6.0 pytz-2016.10 requests-2.12.5 six-1.10.0 sophiabus230-0.4
 ---> 3e3438680079
Removing intermediate container bd9f8ccb6f4a
Step 8 : ADD . /app/
 ---> bde0915f6720
Removing intermediate container e3193eb4ef70
Step 9 : CMD gunicorn -b :$PORT whereismybus230.starter:app
 ---> Running in 022d38d769f8
 ---> 36893d0a549a
Removing intermediate container 022d38d769f8
Successfully built 36893d0a549a
PUSH
The push refers to a repository [us.gcr.io/whereismy230/appengine/default.20170120t131841]
e5f488ee94c5: Preparing
8d27ce27f03c: Preparing
3d5800d45c36: Preparing
06ba8a2a8ec3: Preparing
c0fb81dae3c6: Preparing
2e4eabdbeed3: Preparing
b5d474284f52: Preparing
c307273999be: Preparing
d73750730c30: Preparing
63bbaf04cf0b: Preparing
badb9b2d625b: Preparing
40c928fd4dcc: Preparing
dfcf8dbe47e1: Preparing
6d820e13990c: Preparing
2e4eabdbeed3: Waiting
b5d474284f52: Waiting
c307273999be: Waiting
d73750730c30: Waiting
63bbaf04cf0b: Waiting
badb9b2d625b: Waiting
40c928fd4dcc: Waiting
dfcf8dbe47e1: Waiting
6d820e13990c: Waiting
denied: Unable to create the repository, please check that you have access to do so.
The push refers to a repository [us.gcr.io/whereismy230/appengine/default.20170120t131841]
...
ERROR: (gcloud.app.deploy) Error Response: [2] Build failed; check build logs for details

使用IAM服务,我确保我的帐户是项目的所有者,甚至检查了所有权限。 由于灵活的环境依赖于计算引擎(VM),我试图从网页上查看,它告诉我需要启用计费才能使用此功能。

我做错了吗? 谢谢!

1 个答案:

答案 0 :(得分:2)

来自App Engine Pricing

  

标准环境中的实例可以访问每日   由集合定义的免费提供的资源使用限制   quotas。超出这个水平,申请将收取费用   下面列出。要控制应用程序成本,可以设置一个   spending limit。要估算标准环境的成本,   使用定价计算器。

     

Go to the pricing calculator

     

对于灵活环境中的实例,服务和API是   价格如下所述。

来自Flexible environment instances

  

在App Engine灵活环境中运行的应用程序是   部署到您指定的虚拟机类型。这张桌子   总结了各种计算的每小时计费率   资源:

US
Resource  Unit    Unit cost
vCPU  per core hour   $0.0526
Memory    per GB hour     $0.0071
Persistent disk   per GB per month    $0.0400

与标准环境不同,flex env没有免费配额。这符合您的观察,即开发人员控制台要求启用计费以运行GAE Flex实例。

如果没有启用结算功能,您可能能够部署您的应用(但实际上没有为其启动GAE实例,因此您不想确定其有用性,因为您想尝试使用){{ 1}}选项:

  

--no-promote

     

宣传已部署的版本以接收所有流量。

     

默认为True。更改当前的默认行为   环境,运行:

--promote
     

为此覆盖默认的 $ gcloud config set app/promote_by_default false 属性值   命令调用。使用promote_by_default停用。

旁注:当您遇到问题时,您可能还希望使用--no-promote来获取有关失败的更多相关信息。