Skip to content

Commit c6a1ad2

Browse files
committed
Update config (it's so small so I don't bother to make it a separate PR)
1 parent 7340c71 commit c6a1ad2

2 files changed

Lines changed: 27 additions & 5 deletions

File tree

components/clp-py-utils/clp_py_utils/clp_config.py

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import pathlib
22
from enum import auto
3-
from typing import Literal, Optional, Union
3+
from typing import Literal, Optional, Union, Tuple
44

55
from dotenv import dotenv_values
66
from pydantic import BaseModel, PrivateAttr, validator
@@ -310,13 +310,29 @@ class Queue(BaseModel):
310310
password: Optional[str]
311311

312312

313+
class S3Credentials(BaseModel):
314+
access_key_id: str
315+
secret_access_key: str
316+
317+
@validator("access_key_id")
318+
def validate_access_key_id(cls, field):
319+
if field == "":
320+
raise ValueError("access_key_id cannot be empty")
321+
return field
322+
323+
@validator("secret_access_key")
324+
def validate_secret_access_key(cls, field):
325+
if field == "":
326+
raise ValueError("secret_access_key cannot be empty")
327+
return field
328+
329+
313330
class S3Config(BaseModel):
314331
region_code: str
315332
bucket: str
316333
key_prefix: str
317334

318-
access_key_id: Optional[str] = None
319-
secret_access_key: Optional[str] = None
335+
credentials: Optional[S3Credentials]
320336

321337
@validator("region_code")
322338
def validate_region_code(cls, field):
@@ -338,6 +354,11 @@ def validate_key_prefix(cls, field):
338354
raise ValueError('key_prefix must end with "/"')
339355
return field
340356

357+
def get_credentials(self) -> Tuple[Optional[str], Optional[str]]:
358+
if self.credentials is None:
359+
return None, None
360+
return self.credentials.access_key_id, self.credentials.secret_access_key
361+
341362

342363
class FsStorage(BaseModel):
343364
type: Literal[StorageType.FS.value] = StorageType.FS.value

components/clp-py-utils/clp_py_utils/s3_utils.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,12 +161,13 @@ def s3_put(
161161
)
162162

163163
config = Config(retries=dict(total_max_attempts=total_max_attempts, mode="adaptive"))
164+
aws_access_key_id, aws_secret_access_key = s3_config.get_credentials()
164165

165166
my_s3_client = boto3.client(
166167
"s3",
167168
region_name=s3_config.region_code,
168-
aws_access_key_id=s3_config.access_key_id,
169-
aws_secret_access_key=s3_config.secret_access_key,
169+
aws_access_key_id=aws_access_key_id,
170+
aws_secret_access_key=aws_secret_access_key,
170171
config=config,
171172
)
172173

0 commit comments

Comments
 (0)