使用 Apache Spark 写入具有有限权限的 S3 存储桶
Write to S3 bucket with limited permissions using Apache Spark
我正在使用 S3a 协议写入属于其他人的存储桶。我只能使用一组有限的 S3 操作(我不知道具体是哪一组)。
尝试使用 AWS Glue 通过 spark 写入数据时,出现错误 403: AccessDenied.
在 EMR 中使用 s3distcp 是可行的,但我必须更改基础架构的设置方式。使用允许所有 S3 操作的存储桶也可以,但我猜存储桶所有者不想更改权限。
有没有办法告诉spark写数据而不需要那么多权限?
编辑: Spark 需要 S3:DeleteObject 权限。有没有办法规避这个?
代码如下:
sparkSession.sparkContext.hadoopConfiguration.set("fs.s3a.bucket.some-bucket.access.key", "accesskey")
sparkSession.sparkContext.hadoopConfiguration.set("fs.s3a.bucket.some-bucket.secret.key", "secretkey")
data.write.csv(s"s3a://some-bucket/test")
Spark needs the S3:DeleteObject permission. Is there a way to circumvent this?
没有
需要
- 修剪目录标记对象
- 将 rename() 实现为复制 + 删除
- 清理作业尝试目录
- 在写入之前删除目录树
Hadoop 3.1+ S3A 连接器应该能够在没有删除访问的情况下一直向上处理树。与管理团队协商,让您的 IAM 帐户对所有输出所在的存储桶路径具有删除权限
我正在使用 S3a 协议写入属于其他人的存储桶。我只能使用一组有限的 S3 操作(我不知道具体是哪一组)。
尝试使用 AWS Glue 通过 spark 写入数据时,出现错误 403: AccessDenied.
在 EMR 中使用 s3distcp 是可行的,但我必须更改基础架构的设置方式。使用允许所有 S3 操作的存储桶也可以,但我猜存储桶所有者不想更改权限。
有没有办法告诉spark写数据而不需要那么多权限?
编辑: Spark 需要 S3:DeleteObject 权限。有没有办法规避这个?
代码如下:
sparkSession.sparkContext.hadoopConfiguration.set("fs.s3a.bucket.some-bucket.access.key", "accesskey")
sparkSession.sparkContext.hadoopConfiguration.set("fs.s3a.bucket.some-bucket.secret.key", "secretkey")
data.write.csv(s"s3a://some-bucket/test")
Spark needs the S3:DeleteObject permission. Is there a way to circumvent this?
没有
需要
- 修剪目录标记对象
- 将 rename() 实现为复制 + 删除
- 清理作业尝试目录
- 在写入之前删除目录树
Hadoop 3.1+ S3A 连接器应该能够在没有删除访问的情况下一直向上处理树。与管理团队协商,让您的 IAM 帐户对所有输出所在的存储桶路径具有删除权限