Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS EMR PySpark作业中的机密管理_Amazon Web Services_Amazon Emr - Fatal编程技术网

Amazon web services AWS EMR PySpark作业中的机密管理

Amazon web services AWS EMR PySpark作业中的机密管理,amazon-web-services,amazon-emr,Amazon Web Services,Amazon Emr,我有一份EMR PySpark工作,需要访问第三方拥有的s3存储桶 PySpark作业存储在s3://mybucket/job.py上,并作为一个步骤提交 { "Name": "Process promo_regs", "ActionOnFailure": "TERMINATE_CLUSTER", "HadoopJarStep": { "Jar": "command-runne

我有一份EMR PySpark工作,需要访问第三方拥有的s3存储桶

PySpark作业存储在
s3://mybucket/job.py
上,并作为一个步骤提交

        {
            "Name": "Process promo_regs",
            "ActionOnFailure": "TERMINATE_CLUSTER",
            "HadoopJarStep": {
                "Jar": "command-runner.jar",
                "Args": ["spark-submit", "--master", "yarn", "--deploy-mode cluster", "s3://mybucket.job.py"],
            }
        }
job.py
中,我配置了一个boto3 s3客户端

from pyspark.sql import SparkSession
import boto3

# How to inject this?
env = {
    'AWS_ACCESS_KEY_ID': '',
    '#AWS_SECRET_ACCESS_KEY': '',
    'AWS_REGION_NAME': ''

}
s3 = boto3.client(
    's3',
    aws_access_key_id=env['AWS_ACCESS_KEY_ID'],
    aws_secret_access_key=env['#AWS_SECRET_ACCESS_KEY'],
    region_name=env['AWS_REGION_NAME'],

spark = (SparkSession
         .builder
         .appName("Test processing dummy data")
         .getOrCreate())


我安全地将访问密钥注入脚本的选项是什么


我正在启动集群并使用boto3.client('emr')提交作业。如果有问题,请运行作业流()我可以想到两种方法:

  • 要求第三方向其S3存储桶中添加一个策略
  • 说明:您的EMR群集(位于帐户A中)将有一个IAM用户。要求他们授予从帐户B访问您帐户A的EMR_EC2_角色的权限。 你可以找到更多的细节

  • 如果不可能,您可以使用AWS机密管理器。向EMR_EC2_角色授予权限。使用boto3在运行时获取详细信息
  • {
    “版本”:“2012-10-17”,
    “声明”:[
    {
    “行动”:[
    “secretsmanager:GetSecretValue”
    ],
    “资源”:“arn:aws:secretsmanager:us-east-1::secret:*”,
    “效果”:“允许”,
    “Sid”:“VisualEditor0”
    }
    ]
    }
    
    谢谢,两者都有道理!我们将看到第三方可以接受哪一种。以下是链接到
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Action": [
                    "secretsmanager:GetSecretValue"
                ],
                "Resource": "arn:aws:secretsmanager:us-east-1:<account-no>:secret:<Secret prefix if you have any>*",
                "Effect": "Allow",
                "Sid": "VisualEditor0"
            }
        ]
    }