Подключите Airflow docker к RDS, используя AWS SSM Parameter Store Secrets Backend - PullRequest
0 голосов
/ 24 апреля 2020

У меня airflow работает на docker машине. Сейчас он работает нормально, но меня интересует использование AWS Systems manager в качестве поставщика имени пользователя и пароля для базы данных RDS (postgresql).

Я видел около AWS SSM Parameter Store Secrets Backend, поэтому я настроил airflow.cfg с:

[secrets]
backend = airflow.contrib.secrets.aws_systems_manager.SystemsManagerParameterStoreBackend
backend_kwargs ={"rds_user": "/pro/database/airflow/user", "rds_password": "/pro/database/airflow/password", "profile_name":"myrole"}

Переменная profile_name определяет роль AWS, в которой существуют параметры.

У меня также есть сценарий entrypoint.sh, который использует:

if [ -z "$AIRFLOW__CORE__SQL_ALCHEMY_CONN" ]; then
    # Default values corresponding to the default compose files
    : "${POSTGRES_HOST:="hostname"}"
    : "${POSTGRES_PORT:="5432"}"
    : "${POSTGRES_USER:=AIRFLOW__SECRETS__BACKEND_KWARGS['rds_user']}"
    : "${POSTGRES_PASSWORD:="mypassword"}"
    : "${POSTGRES_DB:="postgres"}"
    : "${POSTGRES_EXTRAS:-""}"

Как видите, я использую AIRFLOW__SECRETS__BACKEND_KWARGS['rds_user'] для чтения из переменной окружения, определенной в файле cfg, но она не работает. Если я войду в docker с Bash и переменными эха, у меня не будет никакой переменной, такой как AIRFLOW__XXXXXX.

Я пытаюсь следовать airflow docs об этом, но это совсем не объясняет, как Вы должны работать с этим.

...