dlt-hub/dlt

dlt tries OAuth in GCP Instead of Service Account Credentials when given Service Account Credentials via credential file

开放

#3,328 创建于 2025年11月17日

 (2 条评论) (1 个反应) (0 位负责人)Python (589 个派生)github user discovery
good first issue

仓库指标

星标
 (5,765 个星标)
PR 合并指标
 (平均合并 7天 7小时) (30 天内合并 54 个 PR)

描述

dlt version

dlt 1.17.1

Describe the problem

When using GCP service account credentials, referenced either in environment variables or in secrets.toml I get this following error.

`GcpOAuthCredentials` cannot parse the configuration value provided. The value is of type `str` and comes from the sections `('credentials',)` Value may be a secret and is not shown. Details:  The expected representation for `GcpOAuthCredentials` is a string with serialized oauth2 user info and may be wrapped in 'install'/'web' node - depending of oauth2 app type.

Expected behavior

dlt should be using GcpServiceAccountCredentials, which currently can be used when explicitly provided within the pipeline as in

    with open("creds.json", "r") as f:
        creds =  json.load(f)

    service_dict = json.loads(json.dumps(creds))

    gcp_credentials = GcpServiceAccountCredentials()
    gcp_credentials.parse_native_representation(json.dumps(creds))

Steps to reproduce

set up GCP service account credentials and attempt to use them either in secrets.toml as in

[destination.filesystem]
bucket_url = "gs://yourbucket...

[destination.filesystem]
credentials="path/to/your/json"

when running a dlt pipeline for filesystem destination

Operating system

macOS

Runtime environment

Local

Python version

3.10

dlt data source

API

dlt destination

Filesystem & buckets

Other deployment details

No response

Additional information

No response

贡献者指南