云构建通过将 eu.artifacts.<project>.appspot.com 存储桶更改为单区域来避免计费

Posted

技术标签:

【中文标题】云构建通过将 eu.artifacts.<project>.appspot.com 存储桶更改为单区域来避免计费【英文标题】:Cloud build avoid billing by changing eu.artifacts.<project>.appspot.com bucket to single-region 【发布时间】:2020-09-20 20:58:38 【问题描述】:

使用适用于 python 3.7 的应用引擎标准环境。

在运行app deploy 命令时,容器图像会上传到存储桶eu.artifacts.&lt;project&gt;.appspot.com 中的谷歌存储。

此消息在app deploy 期间打印

 Beginning deployment of service [default]...
#============================================================#
#= Uploading 827 files to Google Cloud Storage              =#
#============================================================#
File upload done.
Updating service [default]...

文件上传到多区域 (eu),如何将其更改为上传到单个区域?

猜测它是应该添加到存储库的配置文件,以指示应用引擎、云构建或云存储将文件上传到单个区域。

是否需要eu.artifacts.&lt;project&gt;.appspot.com 存储桶,或者是否可以使用.gcloudignore 文件忽略所有文件?

问题与How can I specify a region for the Cloud Storage buckets used by Cloud Build for a Cloud Run deployment? 类似,但针对应用引擎。

我正在使用服务帐户触发云构建。

尝试在上面的链接中实现解决方案中的更改,但无法摆脱多区域存储桶。

substitutions:
  _BUCKET: unused
steps:
- name: 'gcr.io/cloud-builders/gcloud'
  args: ['app', 'deploy', '--promote', '--stop-previous-version']
artifacts:
  objects:
    location: 'gs://$_BUCKET/artifacts'
    paths: ['*']

命令gcloud builds submit --gcs-log-dir="gs://$BUCKET/logs" --gcs-source-staging-dir="gs://$BUCKET/source" --substitutions=_BUCKET="$BUCKET"

【问题讨论】:

您是否尝试在您想要的区域创建存储桶并添加标志--bucket=BUCKET [1]? cloud.google.com/sdk/gcloud/reference/app/deploy @AndieVanille 尝试使用不同的命名存储桶,但这会导致重复,文件同时上传到 --bucket=&lt;name&gt;eu.artifacts.&lt;project&gt;.appspot.com。如果我想创建一个名为 eu.artifacts.&lt;project&gt;.appspot.com 的存储桶,那么我需要验证 google 为我创建的域名。 【参考方案1】:

我在部署后删除了整个存储桶,这会阻止计费

gsutil -m rm -r gs://us.artifacts.&lt;project-id&gt;.appspot.com

-m - 多线程/多处理(而不是逐个删除对象,此参数将同时删除对象)

rm - 删除对象的命令

-r - 递归

https://cloud.google.com/storage/docs/gsutil/commands/rm

【讨论】:

【参考方案2】:

经过稍微调查后,我想提一下这个 当您部署新容器时(部署您的 App Engine 应用程序时)-> 当您使用新主机名将图像推送到注册表时,“容器注册表”产品会创建一种存储桶Registry 在指定的多区域位置创建一个存储桶。这个桶是注册表的底层存储。在一个项目中,具有相同主机名的所有注册表共享一个存储bucket。

基于this,默认情况下无法访问,并且它本身包含在部署新容器时编写的容器镜像。不建议修改它,因为工件存储桶旨在包含部署图像,这可能会影响您的应用。

最后,我发现一些奇怪的事情是,当您创建一个默认存储桶(如前面提到的存储桶的情况)时,您还会获得一个同名的暂存存储桶,除了 staging。您可以将此暂存存储桶用于暂存和测试目的的临时文件;它也有 5 GB 的限制,但每周自动清空basis

【讨论】:

那么您有什么可以做的吗?我似乎也因使用此存储桶而被收费。

以上是关于云构建通过将 eu.artifacts.<project>.appspot.com 存储桶更改为单区域来避免计费的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 存储工件

云计算API网关遇上容器服务

将rasa部署到App引擎时,Google云构建权限错误

阿里云IoT+YF330013.阿里云IoT Studio WEB监控界面构建

使用阿里云容器服务Jenkins实现持续集成和Docker镜像构建

Spring Cloud云服务架构 - commonservice-eureka 项目过程构建