55
66import requests
77import boto3
8- from botocore .auth import S3SigV4Auth
8+ from botocore .auth import SigV4Auth
99from botocore .awsrequest import AWSRequest
1010from botocore .credentials import Credentials
1111from prometheus_api_client import PrometheusApiClientException
@@ -44,31 +44,25 @@ def __init__(
4444
4545 role_to_assume = assume_role_arn or AWS_ASSUME_ROLE
4646 if role_to_assume :
47- self ._assume_role_with_web_identity (role_to_assume )
47+ self ._assume_role (role_to_assume )
4848
49- def _assume_role_with_web_identity (self , role_arn : str ) -> None :
50- """Assume the given role using the pod's service-account web identity token."""
49+ def _assume_role (self , role_arn : str ) -> None :
5150 try :
52- with open (SA_TOKEN_PATH , "r" , encoding = "utf-8" ) as f :
53- web_identity_token = f .read ().strip ()
54- except FileNotFoundError :
55- raise RuntimeError (f"Service Account token not found at { SA_TOKEN_PATH } " )
56-
57- try :
58- sts = boto3 .client ("sts" , region_name = self .region )
59- resp = sts .assume_role_with_web_identity (
60- RoleArn = role_arn ,
61- RoleSessionName = "amp-auto" ,
62- WebIdentityToken = web_identity_token ,
51+ frozen = self ._credentials .get_frozen_credentials ()
52+ sts = boto3 .client (
53+ "sts" ,
54+ region_name = self .region ,
55+ aws_access_key_id = frozen .access_key ,
56+ aws_secret_access_key = frozen .secret_key ,
57+ aws_session_token = frozen .token ,
6358 )
64-
59+ resp = sts . assume_role ( RoleArn = role_arn , RoleSessionName = "amp-auto" )
6560 credentials = resp .get ("Credentials" )
6661 if not credentials :
67- logging .error ("Invalid assume role response {resp}" )
62+ logging .error ("Invalid assume role response %s" , resp )
6863 return
69-
70- required_fields = ["AccessKeyId" , "SecretAccessKey" , "SessionToken" ]
71- missing = [f for f in required_fields if not credentials .get (f )]
64+ required = ["AccessKeyId" , "SecretAccessKey" , "SessionToken" ]
65+ missing = [f for f in required if not credentials .get (f )]
7266 if missing :
7367 logging .error ("Missing required credential fields: {missing}. Raw response: {resp}" )
7468 raise Exception (f"Failed to assume role: missing fields { missing } " )
@@ -77,14 +71,12 @@ def _assume_role_with_web_identity(self, role_arn: str) -> None:
7771 credentials ["AccessKeyId" ],credentials ["SecretAccessKey" ], credentials ["SessionToken" ]
7872 )
7973 except (ClientError , BotoCoreError , Exception ) as e :
80- raise Exception (
81- f"Failed to assume role { role_arn } with web identity: { str (e )} "
82- )
74+ raise Exception (f"Failed to assume role { role_arn } : { str (e )} " )
8375
84- def _build_auth (self ) -> S3SigV4Auth :
76+ def _build_auth (self ) -> SigV4Auth :
8577 """Builds fresh SigV4 auth with current credentials (handles rotation)."""
8678 frozen = self ._credentials .get_frozen_credentials ()
87- return S3SigV4Auth (frozen , self .service_name , self .region )
79+ return SigV4Auth (frozen , self .service_name , self .region )
8880
8981 def signed_request (
9082 self , method , url , data = None , params = None , verify = False , headers = None
0 commit comments