Databricks连接S3 Bucket认证失败,请求技术协助
解决Databricks集群访问S3的AccessDenied问题及IAM角色配置步骤
一、给Databricks集群附加IAM角色的具体操作步骤
1. 配置AWS IAM角色权限与信任关系
- 登录AWS IAM控制台,找到目标角色(若为CloudFormation部署,可查找栈创建的角色;也可新建角色)。
- 为角色添加S3访问权限:创建自定义策略,包含目标桶的
s3:ListBucket(列出桶内容)和s3:GetObject(读取对象)权限,策略示例:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject" ], "Resource": [ "arn:aws:s3:::hidden-bucket-name", "arn:aws:s3:::hidden-bucket-name/*" ] } ] } - 检查角色信任关系,确保允许Databricks服务假设该角色,信任策略示例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "databricks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
2. 在Databricks工作区关联IAM角色到集群
- 登录Databricks工作区,进入计算页面,停止目标集群(若处于运行状态)。
- 点击集群的编辑按钮,进入配置界面:
- 若使用新版集群配置:在实例配置区域找到IAM角色下拉框,选择已配置的IAM角色。
- 若角色未出现在下拉列表:进入Databricks账户控制台→云资源→IAM角色,添加该角色的ARN完成关联。
- 保存配置后重新启动集群。
二、针对当前AccessDenied错误的额外排查点
从错误日志可见集群使用AnonymousAWSCredentials,说明未获取有效AWS凭证,除了角色配置问题,还需检查:
- S3桶策略:确认未拒绝该IAM角色的访问请求,若桶启用SSE-KMS加密,需给角色添加对应KMS密钥的
kms:Decrypt权限。 - VPC网络配置:集群所在VPC需具备访问S3的权限,可通过配置S3 VPC端点,或确保安全组/网络ACL允许出站到S3服务。
- Spark配置冲突:检查集群的Spark配置,确保未手动设置
spark.hadoop.fs.s3a.access.key等硬编码密钥参数,避免覆盖IAM角色凭证。
内容的提问来源于stack exchange,提问作者user1832119
相关产品推荐
相关产品推荐

