【问题标题】:Write to S3 bucket with limited permissions using Apache Spark使用 Apache Spark 写入具有有限权限的 S3 存储桶
【发布时间】:2020-07-11 00:37:01
【问题描述】:

我正在使用 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")

【问题讨论】:

    标签: apache-spark amazon-s3 aws-glue


    【解决方案1】:

    Spark 需要 S3:DeleteObject 权限。有没有办法绕过这个?

    没有

    需要

    • 修剪目录标记对象
    • 将 rename() 实现为复制 + 删除
    • 清理作业尝试目录
    • 在写入目录树之前删除它们

    Hadoop 3.1+ S3A 连接器应该能够在没有删除访问权限的情况下应对整个树。与管理员团队协商,让您的 IAM 账户拥有对所有输出所在存储桶路径的删除权限

    【讨论】:

      猜你喜欢
      • 2019-04-11
      • 1970-01-01
      • 2014-12-06
      • 2020-04-09
      • 2021-09-06
      • 2018-04-29
      • 2018-09-03
      • 2022-01-03
      • 2019-01-23
      相关资源
      最近更新 更多