Cloud Composer缺少变量文件

时间:2019-01-09 12:48:33

标签: google-cloud-composer

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

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

the source看,这似乎是在预期位置不存在环境变量文件时发生的。这是因为Cloud Composer在其他位置设置了变量,所以此CLI无法正常工作吗?我注意到在实例的GCS存储桶上创建了一个env_var.json文件,我意识到我可以覆盖此文件,但这似乎不是最佳实践。

1 个答案:

答案 0 :(得分:1)

感觉像是黑客,但是我通过variables.json复制到了Composer的GCS存储桶数据文件夹,然后它起作用了。

这是由于os.path.exists()检查了运行Airflow的容器。我选择此方法来覆盖env_var.json,因为使用此方法可以在Airflow的用户界面中获取变量。

有兴趣的人的脚本:

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