更改现有GCP Cloud功能的标签



我正在使用以下命令更新已经部署的GCP Cloud函数的标签。

$ gcloud functions deploy GCFunction --update-labels env=dev,app=myapp
Deploying function (may take a while - up to 2 minutes)...failed.

当我们试图更改现有函数的标签时,它看起来是在进行部署。我们是否可以像任何其他API或Cloud函数一样,在不进行任何部署的情况下进行标签更改,以完成相同的任务。

它是有效的。

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,它已被PATCH删除。

注意响应主体是异步操作,因此您需要检查其完成情况。

更新:操作

如果您安装了最优秀的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

相关内容

  • 没有找到相关文章