1+
2+ from typing import Optional
3+ from botocore .auth import SigV4Auth
4+ from botocore .credentials import Credentials
5+ from boto3 import Session
6+
7+
8+ class SigV4AuthFactory :
9+ """
10+ SigV4 authentication utility
11+
12+ Args:
13+ region (str): AWS region
14+ service (str): AWS service
15+ access_key (str, optional): AWS access key
16+ secret_key (str, optional): AWS secret key
17+ token (str, optional): AWS session token
18+
19+ Returns:
20+ SigV4Auth: SigV4Auth instance
21+
22+ Examples
23+ --------
24+ **Using default credentials**
25+ >>> from aws_lambda_powertools.utilities.iam import SigV4AuthFactory
26+ >>> auth = SigV4AuthFactory(region="us-east-2", service="vpc-lattice-svcs")
27+
28+
29+
30+ """
31+ def __init__ (
32+ self ,
33+ region : str ,
34+ service : str ,
35+ access_key : Optional [str ],
36+ secret_key : Optional [str ],
37+ token : Optional [str ],
38+ ):
39+ self ._region = region
40+ self ._service = service
41+
42+ if access_key and secret_key or token :
43+ self ._access_key = access_key
44+ self ._secret_key = secret_key
45+ self ._credentials = Credentials (access_key = self ._access_key , secret_key = self ._secret_key , token = token )
46+
47+ else :
48+ self ._credentials = Session ().get_credentials ()
49+
50+ def __call__ (self ):
51+ return SigV4Auth (credentials = self ._credentials , service = self ._service , region = self ._region )
0 commit comments