首页 > 解决方案 > 通过 gcloud 设置具有特殊字符的 Cloud Composer 环境变量

问题描述

我试图弄清楚如何通过gcloud一些特殊字符创建一个 Google Cloud Composer 环境并设置环境变量。

环境变量示例:API_URL=https://stuff.api.thing.com

gcloud我正在使用的 cmd 示例:

gcloud composer environments create new-env-1 --location=us-central1 --airflow_configs=[core-dags_are_paused_at_creation=True] --env-variables=[API_URL=https://stuff.api.thing.com,env_type=dev] --node_count=3 --python-version=3 --image-version=composer-1.10.0-airflow-1.10.6 --network=projects/backcountry-data-team/global/networks/default

运行上面的示例时,我收到以下错误:

ERROR: (gcloud.composer.environments.create) argument --env-variables: Bad value [[API_URL]: Only upper and lowercase letters, digits, and underscores are allowed. Environment variable names may not start with a digit.

根据 docs预计会出现此错误。

但是,如果我通过 GCP 控制台,我可以像示例一样设置环境变量。那么不应该有办法通过gcloud吗?

标签: environment-variablesgcloudgoogle-cloud-composer

解决方案


为了更好地了解社区,我将@DazWilkin 的评论作为答案。

gcloud命令需要一个逗号分隔的键值对“列表” ;但是,这与list编程语言上的对象不同。例如,在 Python 中,该list对象将是这样的:

[1,2,3]

相反,该gcloud工具的预期格式是:

... the-flag=key1=value1,key2=value2

这也可以在文档gcloud选项卡下)中看到,如下所示:

gcloud composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --update-env-variables=KEY=VALUE,KEY=VALUE...

正如@DazWilkin 所说,这意味着您不需要在键值对周围包含[and 。]

将您的命令保留为下一个:

gcloud composer environments create new-env-1 --location=us-central1 \
  --airflow_configs=core-dags_are_paused_at_creation=True \
  --env-variables=API_URL=https://stuff.api.thing.com,env_type=dev \
  --node_count=3 --python-version=3 --image-version=composer-1.10.0-airflow-1.10.6 \
  --network=projects/backcountry-data-team/global/networks/default

推荐阅读