通过 gcloud 设置具有特殊字符的 Cloud Composer 环境变量

Setting Cloud Composer Environment Variables with Special Characters via gcloud

我正在尝试弄清楚如何通过 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.

此错误是预期的 based on the docs

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

为了提高社区的知名度,我将 @DazWilkin 的评论作为答案。

gcloud 命令需要逗号分隔 "list" of key-value 对;但是,这与编程语言中的 list 对象不同。例如,在 Python 中,那个 list 对象将是这样的:

[1,2,3]

gcloud 工具的预期格式是:

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

也可以在 documentation 中看到(在 gcloud 选项卡下),如下所示:

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

正如@DazWilkin 所说,这意味着您不需要在 key-value 对周围包含 []

将您的命令留作下一个:

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