llama-index
50 строк · 1.6 Кб
1from typing import TYPE_CHECKING, Optional2
3if TYPE_CHECKING:4import botocore5
6
7def get_aws_service_client(8service_name: Optional[str] = None,9region_name: Optional[str] = None,10aws_access_key_id: Optional[str] = None,11aws_secret_access_key: Optional[str] = None,12aws_session_token: Optional[str] = None,13profile_name: Optional[str] = None,14max_retries: Optional[int] = 3,15timeout: Optional[float] = 60.0,16) -> "botocore.client.BaseClient":17try:18import boto319import botocore20except ImportError:21raise ImportError(22"Please run `pip install boto3 botocore` to use AWS services."23)24
25config = botocore.config.Config(26retries={"max_attempts": max_retries, "mode": "standard"},27connect_timeout=timeout,28)29
30try:31if not profile_name and aws_access_key_id:32session = boto3.Session(33aws_access_key_id=aws_access_key_id,34aws_secret_access_key=aws_secret_access_key,35aws_session_token=aws_session_token,36region_name=region_name,37)38client = session.client(service_name, config=config)39else:40session = boto3.Session(profile_name=profile_name)41if region_name:42client = session.client(43service_name, region_name=region_name, config=config44)45else:46client = session.client(service_name, config=config)47except Exception as e:48raise ValueError("Please verify the provided credentials.") from (e)49
50return client51