Мои первоначальные предположения состоят в том, что одинарные кавычки не помогают с токеном, но, возможно, они необходимы, я не очень разбираюсь в использовании токенов.
Моя вторая проблема с connect.sh
- этосинтаксис тройного угла HEREDOC.Я думаю, что вы хотите:
- sed "s/%/%%/g" <<< "$url”
+ sed "s/%/%%/g" << "$url”
Но, возможно, вы только что сделали опечатку в StackOverflow, потому что это не поможет вам установить соединение.
Так что может быть еще несколько вещей: выне следует обращать внимание на то, что вы специально предоставили доступ пользователю airflow и что это пользователь, которого вы используете с инструментами mysql (который работает).
Планировщик и веб-сервер могут устанавливать несколько соединений с БД.поскольку они зацикливаются на файлах, чтобы заполнить пакет dag (iirc - это одно соединение на файл, проанализированный, что происходит в цикле как можно чаще).AWS говорит, что этот токен не работает для большого количества соединений.
Токен ограничен по времени, но он вам нужен для пары длительных процессов и рабочих тоже (они устанавливают новое соединение для каждогозадание выполнено).Но это должно работать как минимум для команды initdb
.
Хорошая новость заключается в том, что connect.sh
выполняется, и вы получаете сообщение об ошибке от MySQL.
Возможнодобавьте небольшую отладку:
sed "s/%/%%/g" << "$url” | tee debug_connect_sh.txt
Затем отредактируйте airflow.cfg
с этим выводом, назначенным на sql_alchemy_conn
, немного (удаляя sql_alchemy_conn_cmd
), и повторите попытку airflow initdb
, пока вы не сможете вычислитьиз того, что плохо разбирается в строке подключения.Затем вернитесь назад, чтобы исправить connect.sh
.Пожалуйста, поделитесь результатами.