我正在使用 Cloud Code(Visual Studio Code 的扩展),并且在 deploy 期间,通过 UI,我尝试设置 Environment Variables 字段,如下所示:
KEY1:value1
KEY2:value2,value3
但是我遇到了这个错误:
部署应用程序失败。错误:错误:(gcloud.run.deploy)参数 --set-env-vars:dict arg 语法错误:[value3]。有关提供带有特殊字符的列表或字典标志值的信息,请参阅
或gcloud topic flags-file
。 ,用法: gcloud run deploy [[SERVICE] --namespace=NAMESPACE] [可选标志] 可选标志可以是 --add-cloudsql-instances | --允许未经身份验证| --args | --异步| --二进制授权 | --碎玻璃| --清除二进制授权 | --clear-cloudsql-instances | --clear-cloudsql-instances | --clear-config-maps | --clear-config-maps | --clear-env-vars | --clear-env-vars | --清除键 | --清除标签 | --清除后密钥撤销操作类型 | --清除秘密 | --clear-vpc-连接器 | --集群| --集群位置 | --命令| --并发 | --连接性| --上下文| --CPU | --cpu 节流 | --env-vars-文件 | --帮助| --图像| --入口 | --键| --kubeconfig | --标签 | --最大实例数 | --记忆| --最小实例数 | --命名空间| --平台| --端口| --后密钥撤销操作类型--地区| --remove-cloudsql-instances | --删除-cloudsql-instances --remove-config-maps | --remove-config-maps | --remove-env-vars | --删除-env-vars | --删除标签 | --删除秘密 | --修订后缀 | --服务帐户 | --set-cloudsql-instances | --set-cloudsql-instances | --set-config-maps | --set-config-maps | --set-env-vars | --set-env-vars | --设置秘密 | --来源| --标签| --超时| --无交通 | --更新配置地图 | --更新环境变量 | --更新标签 | --更新秘密 | --使用-http2 | --vpc 连接器 | --vpc-egress 有关此命令及其标志的详细信息,请运行:gcloud run deploy --helpgcloud topic escaping
所以看来逗号需要转义。请问如何通过 Cloud Code UI 做到这一点?
我认为这里没有解决办法。 我们正在努力通过 https://github.com/GoogleCloudPlatform/cloud-code-vscode/issues/560 来解决此问题。
现在,我可以通过创建“环境变量”UI 字段
empty
并使用 Dockerfile
来设置变量来解决这个问题,此语法在此起作用:
ENV KEY1='value1'
ENV KEY2='value2,value3'
如前所述,在使用 --set-env-vars 或 --update-env-vars 命令时在环境变量的值之间放置逗号将被解释为声明新的环境变量 (https://cloud. google.com/sdk/gcloud/reference/topic/escaping)。
我发现的一个解决方法是将逗号替换为另一个标点符号/分隔符,例如分号,然后使我的代码适应这个新的分隔符:
--set-env-vars KEY="val1;val2;val3"
然后我将我的 Python 代码更新为如下所示:
env_var = os.environ.get('KEY')
env_var_values = env_var.split(';') #instead of env_var.split(',')