如何配置EMR以通过用户访问ID和密钥从S3存储桶中读取

问题描述 投票:0回答:1

是否有一种方法可以读取不在您的AWS账户中的S3存储桶,并且您不能担当角色来获得对其的访问权限,尤其是在EMR中。

在普通Hadoop或Spark中,您可以指定:

fs.s3.access.key=<accessKey>
fs.s3.secret.ket=<secretKey>

在使用SimpleAWSCredentialsProvider的Hadoop配置中。这在本地工作,但是当尝试在使用EMRS的EMR上运行时,我无法使它正常工作,我总是得到403:

com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403

我仅具有要从存储桶读取的IAM用户访问ID和密钥,我创建EMR EC2实例的实例配置文件没有读取存储桶的权限。

为了提供更多背景信息,我从提供EMR的帐户中的多个s3存储桶中进行读取和写入,但是有一个存储桶位于我尝试访问的外部。

编辑

这是针对Scala Spark应用程序的,我试图在其中将S3存储桶的内容直接加载到数据帧中。

amazon-web-services amazon-s3 amazon-iam amazon-emr
1个回答
0
投票

您可以尝试在pyspark中使用“ boto3”库来查看是否可以读取该文件。

类似的东西:

s3 = boto3.client('s3',aws_access_key_id = ACCESS_KEY,aws_secret_access_key_id = SECRET_KEY))

对于s3.buckets.all()中的存储桶:...打印(bucket.name)

链接到示例:https://www.datastackpros.com/2020/05/upload-file-to-s3-bucket-using-python.html

更多boto3功能:https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/collections.html

© www.soinside.com 2019 - 2024. All rights reserved.