【问题标题】:Google Cloud Function doesn't update on change when using Deployment Manager使用 Deployment Manager 时,Google Cloud Function 不会更新更改
【发布时间】:2021-04-16 20:38:51
【问题描述】:
在使用 Deployment Manager 和 Cloud Function 时,似乎在对函数进行代码更改时,Deployment Manager 似乎没有检测和更新该函数。
复制:
- 创建 helloworld 函数。
- 使用部署管理器部署功能。
- 更改代码。
- 再次部署。
- 通过访问控制台并检查源代码,观察部署的功能尚未更新。
如何使函数失效以使其正确部署?
【问题讨论】:
标签:
google-cloud-platform
google-cloud-functions
google-deployment-manager
【解决方案1】:
这与提供的链接 github.com/hashicorp/terraform-provider-google/issues/1938 有关。
似乎没有执行 zip 的哈希,因此需要对部署名称或其他属性进行某种更改。
我的解决方案是获取当前部署版本,并将其递增并将其作为属性传递给函数。
increment_function_version() {
FUN=$1
[[ -z "$FUN" ]] && echo "error: require function name" && exit 1
if ! gcloud functions describe $FUN --region=europe-west2 2> /dev/null; then
NEW_VERSION=1
else
VERSION=$(gcloud functions describe $FUN --region=europe-west2 | grep versionId | awk '{ print $2 }' | sed "s|\'||g")
NEW_VERSION=$(expr $(($VERSION + 1)))
fi
}
为了使用部署管理器执行此操作,我必须从 YAML 转换为完整的 python 模式(或 Jinja),因为无法使用 --config 标志传递属性。
gcloud deployment-manager --project $PROJECT_ID deployments update $NAME $TEMPLATE_FLAG --template mytemplate.py --properties version:$NEW_VERSION
为导入提供带有 python 模板的架构很重要,否则部署失败。