Создание соединений Airflow в Cloud Composer с помощью интерфейса командной строки gcloud

Я пытаюсь создать соединения воздушного потока в Cloud Composer с помощью интерфейса командной строки gcloud. Я слежу за документом и добавляю следующий комментарий. https://cloud.google.com/composer/docs/how-to/managing/connections#creating_new_airflow_connections

gcloud composer environments run my-env \
  --project my-project \
  --location asia-northeast1 \
  connections -- --add \
  --conn_id=my-conn-id \
  --conn_type=google_cloud_platform \
  --conn_extra '{"extra\__google\_cloud\_platform\__project": "my-project", \
  "extra\__google\_cloud\_platform\__key_path": "/home/airflow/gcs/data/keys/my-key.json", \
  "extra\__google\_cloud\_platform\__scope": "https://www.googleapis.com/auth/cloud-platform"}'

kubeconfig entry generated for asia-northeast1-my-env-44718514-gke.
Executing within the following kubectl namespace: default
W0525 22:51:11.244104   93234 flags.go:39] conn_extra is DEPRECATED and will be removed in
a future version. Use conn-extra instead.
W0525 22:51:11.244246   93234 flags.go:39] conn_extra is DEPRECATED and will be removed in
a future version. Use conn-extra instead.
W0525 22:51:11.244256   93234 flags.go:39] conn_extra is DEPRECATED and will be removed in
a future version. Use conn-extra instead.

[2019-05-25 14:51:13,215] {settings.py:176} INFO - setting.configure_orm():
Using pool settings. pool_size=5, pool_recycle=1800
[2019-05-25 14:51:13,598] {default_celery.py:80} WARNING - You have configured a
result_backend of redis://airflow-redis-service:6379/0, it is highly recommended to use an
alternative result_backend (i.e. a database).
[2019-05-25 14:51:13,600] {__init__.py:51} INFO - Using executor CeleryExecutor
[2019-05-25 14:51:13,680] {app.py:51} WARNING - Using default Composer Environment Variables.
Overrides have not been applied.
[2019-05-25 14:51:13,688] {configuration.py:516} INFO - Reading the config from
/etc/airflow/airflow.cfg
[2019-05-25 14:51:13,698] {configuration.py:516} INFO - Reading the config from 
/etc/airflow/airflow.cfg

Соединение успешно создано, но идентификатор проекта, путь к ключевому файлу и область действия пусты. Значит, соединение недействительное.

Когда я создал вручную, эти свойства не пусты. Я что-то упускаю?

Изображение композитора: composer-1.5.0-airflow-1.10.1


person Yohei Onishi    schedule 25.05.2019    source источник
comment
Какую версию Composer / Airflow вы используете?   -  person kaxil    schedule 25.05.2019
comment
Я использую composer-1.5.0-airflow-1.10.1   -  person Yohei Onishi    schedule 26.05.2019
comment
Работает ли это, если вы используете длинную строку вместо \ -квотированных символов новой строки в тексте JSON (и переключитесь на conn-extra, как указано в предупреждении)? Цитирование оболочки - это ад. Также я бы ожидал, что __ не будет нуждаться в цитировании, но если это так, цитирование только одного из двух подчеркиваний в \__ вряд ли сработает.   -  person Jerry101    schedule 29.05.2019
comment
официальные документы предлагают использовать обратную косую черту cloud.google.com/composer/docs / how-to / management / connections   -  person Yohei Onishi    schedule 30.05.2019


Ответы (2)


Я не могу это воспроизвести. Когда я запускаю следующую команду, соединение добавляется с полем extras:

gcloud composer environments run my-env \
  --project my-project \
  --location europe-west1 \
  connections -- --add \
  --conn_id=my-conn-id \
  --conn_type=google_cloud_platform \
  --conn_extra='{"extra__google_cloud_platform__project": "my-project", "extra__google_cloud_platform__key_path":"/tesf"}
person kaxil    schedule 26.05.2019
comment
похоже, что запуск команды на консоли - это нормально. запуск этой команды из сценария оболочки не работает. - person Yohei Onishi; 30.05.2019

Обнаружена синтаксическая ошибка при экранировании цитаты. Это прекрасно работает.

$ CONNECTION_CREATE_COMMAND="gcloud composer environments run $COMPOSER_ENVIRONMENT \
  --project $COMPOSER_PROJECT \
  --location ${COMPOSER_LOCATION} \
  connections -- --add \
  --conn_id=${CONN_ID_BASE}_${app}_${c} \
  --conn_type=google_cloud_platform \
  --conn_extra '{\"extra__google_cloud_platform__project\": \"${BQ_PROJECT}\", \
                 \"extra__google_cloud_platform__key_path\": \"${KEY_JSON_FILE_PATH}\", \
                 \"extra__google_cloud_platform__scope\": \"https://www.googleapis.com/auth/cloud-platform\"}'"
$ eval $CONNECTION_CREATE_COMMAND
person Yohei Onishi    schedule 02.07.2019