【问题标题】:GlueContext write_dynamic_frame fails after adding BucketOwnerFullControl configuration添加 BucketOwnerFullControl 配置后 GlueContext write_dynamic_frame 失败
【发布时间】:2021-12-04 02:53:48
【问题描述】:

我正在尝试将数据帧作为 json 输出写入不同的帐户 s3 存储桶。 以下代码因 GLUE Spark Streaming 作业中的 S3 Access denied 错误而失败。但是如果我在下面的代码中运行没有第一行的代码,它就会工作并将其输出写入 S3 存储桶

glueContext._jsc.hadoopConfiguration().set("fs.s3.canned.acl", "BucketOwnerFullControl")
glueContext.write_dynamic_frame.from_options(frame=dynamic_df, connection_type="s3",
                                                     connection_options={"path": output_path},
                                                     format=file_format, transformation_ctx="datasink")

这是错误日志:

com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.services.s3.model.AmazonS3Exception: 拒绝访问(服务:Amazon S3;状态代码:403;错误代码: 拒绝访问;请求编号:W52125NY7G3EF7WH; S3 扩展请求 ID: 4t9JOJedv2qNRy6W8ySxdQQ7r+TMN1MWpZCFOK1IKO6W4gx4a2oKuK5vwXUPnh4HkkPAG+LnEIc=; 代理:空),S3 扩展请求 ID:4t9JOJedv2qUPnh4HkkPAG+LnEIc= at com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1819) 在 com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleServiceErrorResponse(AmazonHttpClient.java:1403) 在

这对我来说看起来很奇怪,因为 Bucket 拥有完全权限,并且当单独执行第二行但存储桶所有者仍然是胶水帐户时它可以完美运行,我正在尝试使用 fs.s3.canned.acl 更改它。

目标存储桶也设置了Bucket owner preferred 选项 请建议我做错了什么。

谢谢

【问题讨论】:

    标签: hadoop amazon-s3 amazon-emr aws-glue


    【解决方案1】:

    仅在存储桶策略中拥有权限是不够的。

    IAM 中缺少胶水角色s3:PutObjectAcl 权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-06
      • 2021-04-04
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多