【问题标题】:Cloud Function, Retry On Failure resets on Deploying functionCloud Function, Retry On Failure 在部署功能上重置
【发布时间】:2018-02-27 09:57:50
【问题描述】:
我遇到了一个问题,我需要在 Pub/Sub 云功能上启用“失败时重试”,但每当我为该功能部署更新时,我必须手动编辑并为此启用“失败时重试”函数。
是否有一个配置或选项可以让“失败时重试”保持启用状态,直到我禁用它?
【问题讨论】:
标签:
google-cloud-platform
google-cloud-functions
【解决方案1】:
如果您要部署 Google Cloud Functions(不是 Firebase Cloud Functions,请参阅 this note),您现在可以将 --retry 标志传递给您的部署命令,例如:
gcloud functions deploy FUNCTION_NAME --retry
请参阅these docs 了解更多信息。
【解决方案2】:
官方部署工具似乎还不支持设置重试行为。
部署后使用 REST API 修改重试行为似乎可行:
#!/bin/bash
project=$(gcloud config list project --format="value(core.project)")
function set_retry() {
curl -X PATCH -d '{"eventTrigger":{"failurePolicy":{"retry": {}}}}' \
"https://cloudfunctions.googleapis.com/v1/projects/$project/locations/us-central1/functions/$1?updateMask=eventTrigger.failurePolicy&access_token="$(gcloud auth application-default print-access-token)\
-H "Content-Type: application/json" -s -o /dev/null
}
gcloud beta functions list --format="value(name)" | while read fn; do
echo "setting retry policy for function $fn"
set_retry $fn
done
请注意,该区域已硬编码为上面的 us-central1,可能需要更改。