Skip to content

Commit 69fda43

Browse files
alex766alexandrali-db
authored andcommitted
feat: add gcp token-based auth support (lancedb#3511)
1 parent ae70478 commit 69fda43

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

rust/lance-io/src/object_store.rs

+13-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use lance_core::utils::tokio::get_num_compute_intensive_cpus;
2121
use object_store::aws::{
2222
AmazonS3ConfigKey, AwsCredential as ObjectStoreAwsCredential, AwsCredentialProvider,
2323
};
24-
use object_store::gcp::GoogleCloudStorageBuilder;
24+
use object_store::gcp::{GcpCredential, GoogleCloudStorageBuilder};
2525
use object_store::{
2626
aws::AmazonS3Builder, azure::AzureConfigKey, gcp::GoogleConfigKey, local::LocalFileSystem,
2727
memory::InMemory, CredentialProvider, Error as ObjectStoreError, Result as ObjectStoreResult,
@@ -839,6 +839,10 @@ impl StorageOptions {
839839
})
840840
.collect()
841841
}
842+
843+
pub fn get(&self, key: &str) -> Option<&String> {
844+
self.0.get(key)
845+
}
842846
}
843847

844848
impl From<HashMap<String, String>> for StorageOptions {
@@ -929,6 +933,14 @@ async fn configure_store(
929933
for (key, value) in storage_options.as_gcs_options() {
930934
builder = builder.with_config(key, value);
931935
}
936+
let token_key = "google_storage_token";
937+
if let Some(storage_token) = storage_options.get(token_key) {
938+
let credential = GcpCredential {
939+
bearer: storage_token.to_string(),
940+
};
941+
let credential_provider = Arc::new(StaticCredentialProvider::new(credential)) as _;
942+
builder = builder.with_credentials(credential_provider);
943+
}
932944
let store = builder.build()?;
933945
let store = Arc::new(store).traced();
934946

0 commit comments

Comments
 (0)