MCPcopy Create free account
hub / github.com/apache/datafusion / get_s3_object_store_builder_inner

Function get_s3_object_store_builder_inner

datafusion-cli/src/object_storage.rs:78–165  ·  view source on GitHub ↗
(
    url: &Url,
    aws_options: &AwsOptions,
    resolve_region: bool,
)

Source from the content-addressed store, hash-verified

76}
77
78async fn get_s3_object_store_builder_inner(
79 url: &Url,
80 aws_options: &AwsOptions,
81 resolve_region: bool,
82) -> Result<AmazonS3Builder> {
83 let AwsOptions {
84 access_key_id,
85 secret_access_key,
86 session_token,
87 region,
88 endpoint,
89 allow_http,
90 skip_signature,
91 } = aws_options;
92
93 let bucket_name = get_bucket_name(url)?;
94 let mut builder = AmazonS3Builder::from_env().with_bucket_name(bucket_name);
95
96 if let (Some(access_key_id), Some(secret_access_key)) =
97 (access_key_id, secret_access_key)
98 {
99 debug!("Using explicitly provided S3 access_key_id and secret_access_key");
100 builder = builder
101 .with_access_key_id(access_key_id)
102 .with_secret_access_key(secret_access_key);
103
104 if let Some(session_token) = session_token {
105 builder = builder.with_token(session_token);
106 }
107 } else {
108 debug!("Using AWS S3 SDK to determine credentials");
109 let CredentialsFromConfig {
110 region,
111 credentials,
112 } = CredentialsFromConfig::try_new().await?;
113 if let Some(region) = region {
114 builder = builder.with_region(region);
115 }
116 if let Some(credentials) = credentials {
117 let credentials = Arc::new(S3CredentialProvider { credentials });
118 builder = builder.with_credentials(credentials);
119 } else {
120 debug!("No credentials found, defaulting to skip signature ");
121 builder = builder.with_skip_signature(true);
122 }
123 }
124
125 if let Some(region) = region {
126 builder = builder.with_region(region);
127 }
128
129 // If the region is not set or auto_detect_region is true, resolve the region.
130 if builder
131 .get_config_value(&AmazonS3ConfigKey::Region)
132 .is_none()
133 || resolve_region
134 {
135 let region = resolve_bucket_region(bucket_name, &ClientOptions::new()).await?;

Callers 1

Calls 7

get_bucket_nameFunction · 0.85
from_envFunction · 0.85
newFunction · 0.85
resolve_bucket_regionFunction · 0.85
is_noneMethod · 0.80
schemeMethod · 0.80
as_strMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…