Рекомендации по управлению учетными данными AWS в сервисе FastAPI, развернутом в Kubernetes, для лямбда-вызовов между учPython

Программы на Python
Гость
Рекомендации по управлению учетными данными AWS в сервисе FastAPI, развернутом в Kubernetes, для лямбда-вызовов между уч

Сообщение Гость »


Мы запускаем службу API с использованием FastAPI (с uvicorn) в среде Kubernetes.
В этой настройке мы используем boto3 для получения учетных данных AWS через AWS, принимающую роль для нескольких учетных записей. Лямбда-вызовы.
Эти учетные данные управляются как глобальные переменные, которые могут использоваться всеми входящим запросами.
Однако существует опасность дублирования выполнения кода. получение учетных данных может произойти по истечении срока их действия.
Должны ли мы написать код для получения учетных данных только из одного потока с использованием threading.Lock()?
Я мне очень интересно узнать какие-нибудь хорошие шаблоны для решения этой ситуации.
#Current Code

Код: Выделить всё

def _get_aws_credentials(role, sesson):

global aws_creds

if aws_creds and aws_creds["Expiration"] > datetime.now(timezone.utc):

return aws_creds

if cached_creds := get_cached_creds():

return cached_creds

client_sts = boto3.client(

"sts", region_name=REGION_NAME, endpoint_url=f"https://sts.{REGION_NAME}.amazonaws.com"

)

aws_creds = client_sts.assume_role(

RoleArn=role,

RoleSessionName=sesson,

).get("Credentials")

set_cache_ext_creds(credentials=aws_creds)

return aws_creds

Looking for a best practice.....?


Источник: https://stackoverflow.com/questions/781 ... yed-on-kub

Вернуться в «Python»