Skip to content

Commit 73922cd

Browse files
authored
Merge pull request #164 from JanKaul/rest-url-encode
add session token to aws sig
2 parents 8cb7e01 + 5a5175c commit 73922cd

File tree

2 files changed

+11
-8
lines changed

2 files changed

+11
-8
lines changed

catalogs/iceberg-rest-catalog/src/apis/configuration.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ pub struct ApiKey {
4545
pub struct AWSv4Key {
4646
pub access_key: String,
4747
pub secret_key: SecretString,
48+
pub session_token: Option<SecretString>,
4849
pub region: String,
4950
pub service: String,
5051
}
@@ -62,15 +63,17 @@ impl AWSv4Key {
6263
.body(body)
6364
.unwrap();
6465
let signing_settings = SigningSettings::default();
65-
let signing_params = SigningParams::builder()
66+
let mut builder = SigningParams::builder()
6667
.access_key(self.access_key.as_str())
6768
.secret_key(self.secret_key.expose_secret().as_str())
6869
.region(self.region.as_str())
6970
.service_name(self.service.as_str())
7071
.time(SystemTime::now())
71-
.settings(signing_settings)
72-
.build()
73-
.unwrap();
72+
.settings(signing_settings);
73+
if let Some(session_token) = &self.session_token {
74+
builder.set_security_token(Some(session_token.expose_secret().as_str()));
75+
}
76+
let signing_params = builder.build().unwrap();
7477
let signable_request = SignableRequest::from(&request);
7578
let (mut signing_instructions, _signature) =
7679
sign(signable_request, &signing_params)?.into_parts();

catalogs/iceberg-rest-catalog/src/catalog.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ impl Catalog for RestCatalog {
9393
catalog_api_api::drop_namespace(
9494
&self.configuration,
9595
self.name.as_deref(),
96-
&namespace.url_encode(),
96+
&namespace.to_string(),
9797
)
9898
.await
9999
.map_err(Into::<Error>::into)?;
@@ -107,7 +107,7 @@ impl Catalog for RestCatalog {
107107
let response = catalog_api_api::load_namespace_metadata(
108108
&self.configuration,
109109
self.name.as_deref(),
110-
&namespace.url_encode(),
110+
&namespace.to_string(),
111111
)
112112
.await
113113
.map_err(Into::<Error>::into)?;
@@ -123,7 +123,7 @@ impl Catalog for RestCatalog {
123123
catalog_api_api::update_properties(
124124
&self.configuration,
125125
self.name.as_deref(),
126-
&namespace.url_encode(),
126+
&namespace.to_string(),
127127
models::UpdateNamespacePropertiesRequest { updates, removals },
128128
)
129129
.await
@@ -135,7 +135,7 @@ impl Catalog for RestCatalog {
135135
match catalog_api_api::namespace_exists(
136136
&self.configuration,
137137
self.name.as_deref(),
138-
&namespace.url_encode(),
138+
&namespace.to_string(),
139139
)
140140
.await
141141
{

0 commit comments

Comments
 (0)