AWS上Databricks CLI无法访问特定外部位置的授权问题咨询
Databricks CLI访问特定外部位置报权限错误的排查方案
问题场景
在AWS环境的Databricks中,执行以下CLI命令访问特定外部位置时失败:
databricks unity-catalog external-locations get --name <name>
返回错误:
Error: Authorization failed. Your token may be expired or lack the valid scope
已知条件:
- 该外部位置对应S3存储桶,用户已拥有关联存储凭据的
ALL PRIVILEGES权限(可通过SHOW GRANTSusernameON STORAGE CREDENTIALsc-name;验证) - 能通过Databricks Notebook查询该外部位置关联目录中的表
- CLI可正常访问工作区内其他配置类似(仅S3资源名称不同)的外部位置
排查方向
1. 检查外部位置的直接权限
存储凭据的权限不等于外部位置的权限,需要确认用户是否拥有该外部位置本身的权限:
- 执行SQL命令验证权限:
SHOW GRANTS `username` ON EXTERNAL LOCATION `ext-loc-name`; - 如果无权限,执行授权命令:
GRANT ALL PRIVILEGES ON EXTERNAL LOCATION `ext-loc-name` TO `username`;
2. 验证CLI使用的Token权限范围
- 检查生成CLI Token时是否包含
unityCatalog权限范围,缺少该范围会导致无法调用Unity Catalog相关API - 重新生成带有
unityCatalogscope的Token,执行databricks configure --token重新配置CLI后重试命令
3. 核对外部位置的配置细节
对比能正常访问的外部位置,检查以下配置:
- 该外部位置的S3路径是否正确,是否存在拼写错误
- 存储凭据关联的IAM角色信任策略是否包含Databricks服务主体
- S3桶的访问策略是否允许该IAM角色执行
GetBucketLocation等元数据操作(CLI获取外部位置信息需要读取这些元数据)
4. 确认CLI的工作区上下文
- 执行
databricks workspace list /确认CLI当前指向的工作区是否与Notebook所在工作区一致 - 多工作区环境下,若CLI配置了错误的工作区URL,会导致权限验证失败
内容的提问来源于stack exchange,提问作者gary69
相关产品推荐
相关产品推荐

