问题
在试图访问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键在笔记本或集群火花配置。