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

Cloud build avoid billing by changing eu.artifacts.<project>.appspot.com bucket to single-region

为 python 3.7.

使用 App Engine 标准环境

当运行时app deploy命令是容器镜像上传到google存储桶eu.artifacts.<project>.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.<project>.appspot.com 存储桶,或者是否可以使用 .gcloudignore 文件忽略所有文件?

此问题与此问题类似 ,但适用于应用引擎。

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

尝试实施上述 link 中解决方案的更改,但无法摆脱多区域存储桶。

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"

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

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

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

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

gsutil -m rm -r gs://us.artifacts.<project-id>.appspot.com

-m - multi-threading/multi-processing(而不是删除 object-by-object 此参数将同时删除对象)

rm - 删除对象的命令

-r - 递归

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