通过Airflow任务提交的AWS EMR Apache Spark应用程序的凭证存储在哪里

时间:2019-02-06 13:16:03

标签: amazon-web-services apache-spark airflow

我正在使用Apache Spark应用程序,该应用程序是通过Airflow任务提交给AWS EMR集群的。

在Spark应用程序逻辑中,我需要从AWS S3中读取文件并从AWS RDS中读取信息。例如,为了从Spark应用程序连接到PostgreSQL上的AWS RDS,我需要提供数据库的用户名/密码。

现在,我正在寻找最佳和安全的方法,以将这些凭据保存在安全的地方,并将其作为参数提供给我的Spark应用程序。请建议在哪里存储这些凭据,以确保系统安全-作为env vars,在Airflow中的某个地方还是在什么地方?

2 个答案:

答案 0 :(得分:1)

在Airflow中,您可以创建变量来存储此信息。可以从UI中列出,创建,更新和删除变量(管理->变量)。然后,您可以从您的代码中访问它们,如下所示:

from airflow.models import Variable
foo = Variable.get("foo")

答案 1 :(得分:1)

Airflow通过提供可以Connection SQLAlchemy model(其中密码仍保持隐藏状态<)的accessed from WebUI,使我们在凭据管理方面得到了精美的报道。 / em>)

请注意,Airflow将所有Connection都视为相等,而与their type无关(类型只是对最终用户的提示)。 Airflow仅在basis of conn_id上区分它们