如何从命令行 set/get 格式为 json 的气流变量

How to set/get airflow variables which are in json format from command line

我无法通过云 shell 编辑 json 格式的气流变量值 shell。

我正在使用云 shell 访问我的气流变量参数(json 格式),当我使用以下命令时它会给我完整的 json:

gcloud composer environments run composer001 
--location us-east1 variables 
--get params

但是我想编辑 json 中的值之一,我该如何访问它?

我参考了 google 上的文档和各种其他链接,但是只能找到如何设置不是 json 格式但为单值变量的变量。

Cloud Composer CLI 和 Airflow CLI 仅对 top-level 个变量进行操作,而不是其 JSON 内容。

您可以使用 Airflow UI 来编辑您的 JSON 变量,因为 UI 会加载整个变量并且您可以就地编辑它。或者,如果您需要通过命令行更新 JSON 变量中的特定值,您可以先将变量导出到 JSON 文件:

gcloud composer environments run \
    [ENVIRONMENT] --location [LOCATION] \
    variables -- --export /home/airflow/gcs/data/your-vars.json

gcloud composer environments storage data export \
    --environment [ENVIRONMENT] --location [LOCATION] \
    --source your-vars.json --destination .

使用像 jq:

这样的命令编辑 JSON 中的值
jq '.params.jsonkey = "newvalue"' your-vars.json > your-updated-vars.json

并将更新后的文件导入回 Cloud Composer:

gcloud composer environments storage data import \
    --environment [ENVIRONMENT] --location [LOCATION] \
    --source your-updated-vars.json

gcloud composer environments run \
    [ENVIRONMENT] --location [LOCATION] \
    variables -- --import /home/airflow/gcs/data/your-updated-vars.json