如何传递密码以激发 EMR

use*_*397 5 amazon-s3 amazon-emr emr apache-spark pyspark

假设在 Amazon EMR 上运行的 Spark 集群需要访问 postgresql 数据库。给它的登录名和密码的最佳方法是什么?这些是我们尝试过的一些方法:

  • 在 S3 上有包含信息的配置文件(不理想,因为密码在 S3 上是纯文本)
  • 在 EMR 设置中将其作为环境变量作为 spark-env 的一部分传递(不起作用,因为执行程序无权访问环境变量。它可以在 spark 配置中使用 spark.executorEnv.[EnvironmentVariableName] 进行设置,但这将再次需要密码在 spark 配置文件中以纯文本形式显示,该文件也必须在 S3 中)。

有没有更好的方法我失踪了?

Ste*_*ran 1

您可以使用 EC2 实例元数据将密钥推送到每个 ec2 实例,使用 GET 调用来检索它。理想情况下,创建一个仅在 EMR 集群生命周期内有效的登录名/密码,并在拆除后将其删除(或至少重置密码)。

AFAIK Spark 中对此没有明确支持,但如果您在类路径上获取 AWS SDK,则可以使用 EC2MetadataUtils 来使用它