首页 > 解决方案 > GCP gcloud deploy - 转义环境变量

问题描述

我们有一个有效的 gcloud deploy 命令,我们正在尝试添加一个新的环境变量。目前,工作示例如下所示:

gcloud functions deploy ftn_handler --set-env-vars APP_PROJECT_ID=my-project-id,CLOUD_STORAGE_BUCKET=my_bucket_name,ENVIRONMENT=development --runtime python37 --memory=1024MB  --trigger-resource my_project.appspot.com --trigger-event google.storage.object.finalize

现在,我们要添加的 env 变量是一个简单的列表,例如:MY_LIST=['val1', 'val2'],所以一开始我们尝试了明显的:

gcloud functions deploy ftn_handler --set-env-vars APP_PROJECT_ID=my-project-id,CLOUD_STORAGE_BUCKET=my_bucket_name,ENVIRONMENT=development,MY_LIST=['val1', 'val2'] --runtime python37 --memory=1024MB  --trigger-resource my_project.appspot.com --trigger-event google.storage.object.finalize

但立即得到了错误:

(gcloud.functions.deploy)无法识别的参数:val2]

所以我们开始研究转义值,如本文所示

根据这篇文章,我们认为以下可能有效

gcloud functions deploy ftn_handler --set-env-vars APP_PROJECT_ID=my-project-id,CLOUD_STORAGE_BUCKET=my_bucket_name,ENVIRONMENT=development,MY_LIST=^,^val1,val2 --runtime python37 --memory=1024MB  --trigger-resource my_project.appspot.com --trigger-event google.storage.object.finalize

但我们仍然收到错误:

(gcloud.functions.deploy) 参数 --set-env-vars:dict arg 的语法错误:[^val1]

我们使用转义语法尝试了许多变体,但都以某种错误结束。关于正确语法的任何想法,或者是否可以使用 --set-env-vars 实现这样的事情?

标签: google-cloud-platformsyntaxenvironment-variablesgcloud

解决方案


由于您使用的是 python,并且您希望将值列为环境变量,因此我找到了一个有用的答案,其中创建了 LIST_ITEMS 变量,然后由 python 代码拆分。

我已经复制了这个并且可以确认您可以使用 gcloud 命令添加变量:

gcloud functions deploy Your_Function --runtime python37 --set-env-vars LIST="a.1 b.2 c.3" --trigger-http

推荐阅读