禁止当访问S3数据时发生错误

写的亚当Pavlacka

去年发表在:2022年5月17日

问题

在试图访问S3数据直接使用DBFS山或火花api,命令失败的异常类似如下:

com.amazonaws.services.s3.model。AmazonS3Exception:禁止;请求ID: XXXXXXXXXXXXX,扩展请求ID: XXXXXXXXXXXXXXXXXXX,云提供商:AWS实例ID: XXXXXXXXXX(服务:Amazon S3;状态码:403;错误代码:403禁止;请求ID: XXXXXXXXXXX;S3扩展请求ID:

导致

以下是常见的原因:

  • 使用AWS键除了我的角色。使用全球init脚本设置AWS键会导致这种行为。
  • 我角色所需的权限访问S3数据,但火花AWS键设置配置。例如,设置spark.hadoop.fs.s3a.secret.key可以用我的角色冲突。
  • AWS键设置在司机节点从一个交互式环境水平集群通过一个笔记本。
  • DBFS前面创建挂载点与AWS钥匙现在试图访问使用了我的角色。
  • 外面的文件写数据砖,桶所有者没有读权限(见第七步:更新cross-account acl S3对象)。
  • 我的角色没有连接到集群。
  • 我有读权限角色,但你想执行写操作。也就是说,我的角色没有足够的权限你要执行的操作。

解决方案

以下是建议和最佳实践来避免这个问题:

  • 使用我的角色而不是AWS钥匙。
  • 如果你试图从AWS钥匙开关配置我的角色,卸载DBFS挂载点为S3 bucket使用AWS创建键和重新安装使用我的角色。
  • 避免使用AWS键集全球init脚本。如果需要始终使用集群级init脚本。
  • 避免设置AWS键在笔记本或集群火花配置。
这篇文章有用吗?