Skip to content

Commit 42922d8

Browse files
authored
Merge branch 'master' into requests-cve
2 parents 4f7cb24 + 2965703 commit 42922d8

File tree

1 file changed

+17
-25
lines changed

1 file changed

+17
-25
lines changed

prometrix/connect/aws_connect.py

Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import requests
77
import boto3
8-
from botocore.auth import S3SigV4Auth
8+
from botocore.auth import SigV4Auth
99
from botocore.awsrequest import AWSRequest
1010
from botocore.credentials import Credentials
1111
from 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

Comments
 (0)