更改现有GCP云函数的标签 [英] Changing label of existing GCP Cloud functions
本文介绍了更改现有GCP云函数的标签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用下面的命令更新已部署的GCP云函数的标签。
$ gcloud functions deploy GCFunction --update-labels env=dev,app=myapp
Deploying function (may take a while - up to 2 minutes)...failed.
当我们尝试更改现有函数的标签时,它看起来进行了部署。我们是否可以在不像任何其他API或云函数那样进行任何部署的情况下进行标签更改以执行相同的任务。
推荐答案
工作正常。
PROJECT=[[YOUR-PROJECT]]
REGION=[[YOUR-REGION]]
FUNCTION=[[YOUR-FUNCTION]]
ENDPOINT="https://cloudfunctions.googleapis.com/v1"
NAME="projects/${PROJECT}/locations/${REGION}/functions/${FUNCTION}"
URL="${ENDPOINT}/${NAME}"
gcloud functions describe ${FUNCTION}
--project=${PROJECT}
--region=${REGION}
--format="yaml(labels)"
labels:
app: myapp
deployment-tool: cli-gcloud
env: dev
curl
--request PATCH
--header "Authorization: Bearer $(gcloud auth print-access-token)"
--header "content-type: application/json"
--data "{"labels":{"env":"testing"}}"
${URL}?updateMask=labels
gcloud functions describe ${FUNCTION}
--project=${PROJECT}
--region=${REGION}
--format="yaml(labels)"
labels:
env: testing
注意您需要复制要保留的标签。在我的示例中,我没有复制
app
,它被补丁删除了。
注意响应正文是异步Operation,因此您需要检查其是否完成。
更新:操作
如果您安装了最优秀的jq
(或类似的JSON解析器),则可以轮询操作的状态,直到其完成(更好的做法是,也设置超时...供读者阅读)。
ENDPOINT="https://cloudfunctions.googleapis.com/v1"
NAME="projects/${PROJECT}/locations/${REGION}/functions/${FUNCTION}"
URL="${ENDPOINT}/${NAME}"
TOKEN=$(gcloud auth print-access-token)
VALUE="full-testing"
DATA="{"labels":{"env":"${VALUE}"}}"
NAME=$(curl
--silent
--request PATCH
--header "Authorization: Bearer ${TOKEN}"
--header "content-type: application/json"
--data "${DATA}"
${URL}?updateMask=labels |
jq -r .name) && echo ${NAME}
URL="${ENDPOINT}/${NAME}"
while [ $(curl --silent --request GET --header "Authorization: Bearer ${TOKEN}" ${URL} | jq -r .done) != "true" ]
do
printf "."
sleep 15s
done
gcloud functions describe ${FUNCTION}
--project=${PROJECT}
--region=${REGION}
--format="yaml(labels)"
我找不到gcloud functions operations
已实现。
这篇关于更改现有GCP云函数的标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文