首页 > 解决方案 > 使用 AWS SSM Parameter Store Secrets Backend 将 Airflow docker 连接到 RDS

问题描述

我在机器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但它不起作用。如果我使用 Bash 和 echo 变量进入 docker,我没有任何变量,例如AIRFLOW__XXXXXX.

我正在尝试关注airflow docs它,但它根本没有解释你应该如何使用它。

标签: amazon-web-servicesdockerairflowamazon-rdsamazon-systems-manager

解决方案


推荐阅读