Cloud Composer отсутствует файл переменных - PullRequest
0 голосов
/ 09 января 2019

Я пытался импортировать JSON-файл переменных среды во вновь созданный экземпляр Cloud Composer, используя airflow CLI , но при запуске ниже я получаю сообщение об ошибке: Missing variables file.

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

Из источника кажется, что это происходит, когда файл переменной среды не существует в ожидаемом месте. Это потому, что Cloud Composer устанавливает свои переменные в другом месте, чтобы этот CLI не работал? Я заметил, что есть файл env_var.json, который создается в корзине GCS экземпляра, я понимаю, что могу перезаписать этот файл, но это не похоже на лучшую практику.

1 Ответ

0 голосов
/ 09 января 2019

Это похоже на хак, но я скопировал variables.json в папку данных GCS моего Composer, и затем это сработало.

Это связано с 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
...