我们正在使用将在AWS EMR上运行的Java开发一个hadoop应用程序。应用程序将使用Mongo Hadoop connector连接到MongoDB以检索输入数据集。处理完成后,结果将被写回MongoDB。
我们在尝试找到存储Mongo数据库凭据的最佳解决方案时遇到问题,以便Jar文件可以使用它们。
我们无法将数据库凭据直接存储在属性文件中 hadoop服务器因为我们正在使用AWS EMR并且将创建一个集群 按计划运行一个作业然后终止 - 我们的集群将不会全天候运行。此外,我们似乎无法创建hadoop AMI的自定义版本,然后让AWS EMR使用我们的自定义AMI来创建群集(请告诉我这是否可行?)
Jar文件将位于S3上,所以我们不喜欢存储它的想法 密码在jar中嵌入的属性文件中。访问 S3存储桶将受到IAM角色的限制,但它仍然没有真正像安全的方式来存储刚刚坐在S3上的jar的凭据?
我们尝试将属性传递给Java运行时或设置应用程序 bash脚本中的变量,当作为引导操作运行时 创建EMR集群但参数传递给引导程序 在EMR控制台中记录的操作因此可见 任何有权访问控制台的人
我们还没有考虑过另一种方法,或者我们只是必须接受将jar文件存储在具有受限访问权限的存储桶中的S3是唯一可行的解决方案吗?