Ошибка недопустимого поворота ключа Airflow Fernet

#python #airflow

Вопрос:

Попытка повернуть мой ключ fernet в Apache Airflow. В документации перечислены три шага, которые я должен предпринять для выполнения этой задачи:

 1. Set fernet_key to new_fernet_key,old_fernet_key
2. Run airflow rotate-fernet-key to re-encrypt existing credentials with the new fernet key
3. Set fernet_key to new_fernet_key
 

Выполнив эти действия, я установил fernet_key в своем поле airflow.cfg следующее значение:

 fernet_key = PgYclMAx5ovWHa3MEE2Qt4oIOPoB70U64frFnwBzTtc=,d3itG077fUgVXkTfLd2EEA6y7ShulLjGRYXwgEq78j4=
 

Примечание: Я подтвердил d3itG077fUgVXkTfLd2EEA6y7ShulLjGRYXwgEq78j4= , что это старый ключ. Я также убедился, что использовал библиотеку fernet для создания нового ключа, поэтому они должны быть правильно сформированы.

Когда я пытаюсь запустить airflow rotate-fernet-key , я получаю следующую ошибку:

 Traceback (most recent call last):
  File "/usr/local/bin/airflow", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.8/site-packages/airflow/__main__.py", line 40, in main
    args.func(args)
  File "/usr/local/lib/python3.8/site-packages/airflow/cli/cli_parser.py", line 48, in command
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/airflow/utils/cli.py", line 89, in wrapper
    return f(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/airflow/cli/commands/rotate_fernet_key_command.py", line 28, in rotate_fernet_key
    conn.rotate_fernet_key()
  File "/usr/local/lib/python3.8/site-packages/airflow/models/connection.py", line 265, in rotate_fernet_key
    self._extra = fernet.rotate(self._extra.encode('utf-8')).decode()
  File "/usr/local/lib/python3.8/site-packages/cryptography/fernet.py", line 183, in rotate
    raise InvalidToken
cryptography.fernet.InvalidToken
 

Версия воздушного потока: 2.0.2

Версия Python: 3.8.5

Есть какие-нибудь идеи о том, почему это может произойти?

Комментарии:

1. Вы перезапустили все свои службы после поворота ключа fernet?

2. @kaxil К сожалению, я вообще не могу вращаться. rotate-fernet-key Команда завершается с InvalidToken ошибкой

3. Это airflow connections list тоже дает вам ошибку>

4. @kaxil Нет. Я считаю, что исходный ключ fernet действителен, поэтому все команды соединений и переменных работают правильно.