AWS MWAA本地运行器Docker内无法读取SecretManager的Connections配置
Airflow本地测试无法从AWS Secrets Manager获取连接的解决方法
你遇到的AirflowNotFoundException: The conn_id 'snowflake_conn_dev' isn't defined报错,核心原因是MWAA本地运行器的Secrets Manager配置没有在所有Airflow服务节点生效,按以下步骤排查修改即可解决:
- 统一给docker-compose.yml里的
webserver、scheduler、worker三个服务都添加如下环境变量,不要只给单个服务加:
environment: AIRFLOW__SECRETS__BACKEND: airflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackend AIRFLOW__SECRETS__BACKEND_KWARGS: '{"connections_prefix": "airflow/connections", "region_name": "替换为你的AWS区域,比如us-east-1"}'
- 配置AWS凭证访问权限,二选一即可:
- 将本地
~/.aws/credentials文件挂载到三个服务容器内的/home/airflow/.aws/credentials路径,设置容器内文件权限为600 - 在环境变量中添加
AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY(仅限本地测试使用,不要上传到公开代码仓库)
- 将本地
- 确认AWS Secrets Manager中的密钥配置符合规则:
你使用的连接ID为snowflake_conn_dev,对应的密钥名称需要和你配置的connections_prefix匹配,比如前缀为airflow/connections时,密钥全名应为airflow/connections/snowflake_conn_dev,密钥内容为标准Airflow连接JSON格式,必须包含conn_type、host等Snowflake连接必填字段。 - 配置完成后执行
docker-compose down && docker-compose up -d重启所有服务,可进入worker容器执行airflow connections get snowflake_conn_dev验证是否能正常读取连接,验证通过后再运行测试DAG即可。
常见踩坑点:如果修改后还是报错,先检查aws provider包是否已经安装,MWAA本地运行器默认镜像可能缺失对应依赖,可以在requirements.txt中添加
apache-airflow-providers-amazon同步安装。
内容的提问来源于stack exchange,提问作者Karthik
相关产品推荐
相关产品推荐

