使用 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 帐户对所有输出所在的存储桶路径具有删除权限