感觉像个黑客,但我复制了
variables.json
到我的作曲家的gcs bucket数据文件夹,然后它工作了。
这是由于
os.path.exists()
检查正在运行气流的容器。我选择了这种方法而不是重写
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