我一直在尝试使用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
文件,我意识到我可以覆盖此文件,但这似乎不是最佳实践。
答案 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