You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Delta Live Table中配置访问Google Cloud Storage(GCS)

Delta Live Table 访问GCS存储桶的权限配置问题

问题描述

正在开展Delta Live Table(DLT)结合GCS存储的POC项目,遇到以下问题:

  • 普通Databricks集群可通过Advanced Options配置服务账号邮箱访问GCS,但DLT集群由系统自动创建,无法直接配置该账号,如何实现GCS存储桶的访问授权?
  • 尝试手动编辑DLT集群,在Google服务账号区块添加账号时保存失败,报错:
    Error : Dlt prefixed spark images cannot be used outside of Delta live tables service
    
  • 将GCS路径设为DLT的storage位置时,触发403权限错误,核心日志如下:
    DataPlaneException: Failed to start the DLT service on cluster <cluster_id>. Please check the stack trace below or driver logs for more details.
    
    com.databricks.pipelines.execution.service.EventLogInitializationException: Failed to initialize event log
    
    java.io.IOException: Error accessing gs://<path>
    
    shaded.databricks.com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
    
    GET https://storage.googleapis.com/storage/v1/b/<path>?fields=bucket,name,timeCreated,updated,generation,metageneration,size,contentType,contentEncoding,md5Hash,crc32c,metadata
    
    {
      "code" : 403,
      "errors" : [ {
        "domain" : "global",
        "message" : "Caller does not have storage.objects.get access to the Google Cloud Storage object. Permission 'storage.objects.get' denied on resource (or it may not exist).",
        "reason" : "forbidden"
      } ],
      "message" : "Caller does not have storage.objects.get access to the Google Cloud Storage object. Permission 'storage.objects.get' denied on resource (or it may not exist)."
    }
    

解决方案

1. 利用工作区级GCS集成配置

DLT集群默认继承Databricks工作区的云存储配置,无需单独设置集群级账号:

  • 确认工作区绑定的Google服务账号已获得GCS存储桶的必要权限:
    • 在Google Cloud控制台,给该服务账号添加Storage Object Admin(或更细粒度的权限集合,至少包含storage.objects.get、storage.objects.create、storage.objects.list)
    • 检查存储桶的IAM权限政策,确保服务账号的权限已生效
  • 工作区已完成GCS基础集成,DLT会自动使用该服务账号访问GCS

2. 为单个DLT管道指定独立服务账号

若需为特定管道使用独立服务账号,可通过管道的高级配置参数设置:

  • 打开DLT管道的配置页面,进入Advanced选项
  • 添加Spark配置参数:
    spark.databricks.delta.live.service.account.email=<你的服务账号邮箱>
    
  • 确保该独立服务账号已被授予目标GCS存储桶的对应权限

3. 手动编辑DLT集群报错的原因说明

DLT是托管式服务,集群由Databricks系统自动管理,不支持手动编辑集群配置(包括修改服务账号)。手动编辑会触发镜像兼容性错误,因此必须通过工作区配置或管道参数来设置权限,禁止直接修改DLT集群。

4. 403权限错误排查要点

若仍出现权限错误,可按以下步骤排查:

  • 确认使用的服务账号(工作区级或管道指定的)确实拥有目标GCS存储桶的storage.objects.get、storage.objects.list、storage.objects.create权限
  • 检查GCS路径是否正确,避免拼写错误
  • 验证服务账号的身份有效性(工作区绑定的账号无需手动管理密钥,若使用自定义密钥需确保密钥未过期)

内容的提问来源于stack exchange,提问作者shrutis23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 10:20:41