diff --git a/src/connector/src/aws_utils.rs b/src/connector/src/aws_utils.rs index 1578c7b844422..5bf373baa647b 100644 --- a/src/connector/src/aws_utils.rs +++ b/src/connector/src/aws_utils.rs @@ -15,7 +15,7 @@ use std::collections::HashMap; use std::time::Duration; -use anyhow::Context; +use anyhow::{anyhow, Context}; use aws_config::timeout::TimeoutConfig; use aws_sdk_s3::{client as s3_client, config as s3_config}; use url::Url; @@ -111,13 +111,15 @@ pub async fn load_file_descriptor_from_s3( let bucket = location .domain() .with_context(|| format!("illegal file path {}", location))?; - let key = location.path().replace('/', ""); + let key = location.path().strip_prefix('/').ok_or(anyhow!( + "s3 url {location} should have a '/' at the start of path." + ))?; let sdk_config = config.build_config().await?; let s3_client = s3_client(&sdk_config, Some(default_conn_config())); let response = s3_client .get_object() .bucket(bucket.to_string()) - .key(&key) + .key(key) .send() .await .with_context(|| format!("failed to get file from s3 at `{}`", location))?;