首页 > 解决方案 > Cloud Composer 缺少变量文件

问题描述

我一直在尝试使用气流 CLI将环境变量的 JSON 文件导入新创建的 Cloud Composer 实例,但是在运行以下命令时出现错误:Missing variables file.

gcloud composer environments run ${COMPOSER_NAME} \
    --location=${COMPOSER_LOCATION} \
    variables -- \
    -i ${VARIABLES_JSON}

从查看源代码来看,这似乎是在预期位置不存在环境变量文件时发生的。这是因为 Cloud Composer 在不同的位置设置了它的变量,所以这个 CLI 不起作用?我注意到env_var.json在实例的 GCS 存储桶上创建了一个文件,我意识到我可以覆盖这个文件,但这似乎不是最佳实践。

标签: google-cloud-composer

解决方案


感觉就像是 hack,但我将其复制variables.json到 Composer 的 GCS 存储桶数据文件夹中,然后它就起作用了。

这是由于os.path.exists()检查了 Airflow 正在运行的容器。我选择了这种覆盖覆盖的方法,env_var.json因为我使用这种方法在 Airflow 的 UI 中获得了变量。

任何有兴趣的人的脚本:

COMPOSER_DATA_FOLDER=/home/airflow/gcs/data

COMPOSER_GCS_BUCKET=$(gcloud composer environments describe ${COMPOSER_NAME} --location ${COMPOSER_LOCATION} | grep 'dagGcsPrefix' | grep -Eo "\S+/")

gsutil cp ${ENV_VARIABLES_JSON_FILE} ${COMPOSER_GCS_BUCKET}data

gcloud composer environments run ${COMPOSER_NAME} \
    --location ${COMPOSER_LOCATION} variables -- \
    -i ${COMPOSER_DATA_FOLDER}/variables.json

推荐阅读