Skip to content

Commit 4c0947d

Browse files
committed
Using AWS_STS_REGIONAL_ENDPOINTS env variable instead of generating regional endpoint.
1 parent 47960b1 commit 4c0947d

File tree

1 file changed

+11
-10
lines changed
  • aws_sra_examples/solutions/ec2/ec2_default_ebs_encryption/lambda/src

1 file changed

+11
-10
lines changed

aws_sra_examples/solutions/ec2/ec2_default_ebs_encryption/lambda/src/app.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464
raise ValueError("Unexpected error executing Lambda function. Review CloudWatch logs for details.") from None
6565

6666

67-
def assume_role(role: str, role_session_name: str, region: str, account: str = None, session: boto3.Session = None) -> boto3.Session:
67+
def assume_role(role: str, role_session_name: str, account: str = None, session: boto3.Session = None) -> boto3.Session:
6868
"""Assumes the provided role in the given account and returns a session.
6969
7070
Args:
@@ -76,9 +76,12 @@ def assume_role(role: str, role_session_name: str, region: str, account: str = N
7676
Returns:
7777
Session object for the specified AWS account
7878
"""
79+
# set regional endpoint environment variable to account for potential opt-in regions
80+
os.environ["AWS_STS_REGIONAL_ENDPOINTS"] = "regional"
81+
7982
if not session:
8083
session = boto3.Session()
81-
sts_client: STSClient = session.client("sts", endpoint_url=f"https://sts.{region}.amazonaws.com", region_name=region, config=BOTO3_CONFIG)
84+
sts_client: STSClient = session.client("sts", config=BOTO3_CONFIG)
8285
sts_arn = sts_client.get_caller_identity()["Arn"]
8386
LOGGER.info(f"USER: {sts_arn}")
8487
if not account:
@@ -200,7 +203,7 @@ def get_organization_resource_tags(resource_id: str) -> List[TagTypeDef]:
200203
return tags
201204

202205

203-
def process_enable_ebs_encryption_by_default(configuration_role_name: str, session_role_name: str, account_id: str, regions: list) -> None:
206+
def process_enable_ebs_encryption_by_default(account_session: boto3.Session, account_id: str, regions: list) -> None:
204207
"""Process enable ec2 default EBS encryption.
205208
206209
Args:
@@ -209,7 +212,6 @@ def process_enable_ebs_encryption_by_default(configuration_role_name: str, sessi
209212
regions: regions to process
210213
"""
211214
for region in regions:
212-
account_session = assume_role(configuration_role_name, session_role_name, region, account_id)
213215
ec2_client: EC2Client = account_session.client("ec2", region, config=BOTO3_CONFIG)
214216

215217
response: GetEbsEncryptionByDefaultResultTypeDef = ec2_client.get_ebs_encryption_by_default()
@@ -290,10 +292,9 @@ def local_testing(aws_account: AccountTypeDef, params: dict) -> None:
290292
aws_account: AWS account to update
291293
params: solution parameters
292294
"""
293-
295+
account_session = assume_role(params["CONFIGURATION_ROLE_NAME"], params["ROLE_SESSION_NAME"], aws_account["Id"])
294296
regions = get_enabled_regions(params["ENABLED_REGIONS"], params["CONTROL_TOWER_REGIONS_ONLY"])
295-
296-
process_enable_ebs_encryption_by_default(params["CONFIGURATION_ROLE_NAME"], params["ROLE_SESSION_NAME"], aws_account["Id"], regions)
297+
process_enable_ebs_encryption_by_default(account_session, aws_account["Id"], regions)
297298

298299

299300
def process_accounts(event: Union[CloudFormationCustomResourceEvent, dict], params: dict) -> None:
@@ -366,10 +367,10 @@ def process_event_sns(event: dict) -> None:
366367
LOGGER.info({"SNS Record": record})
367368
message = record["Sns"]["Message"]
368369
params["action"] = message["Action"]
369-
370+
370371
aws_account = get_account_info(account_id=message["AccountId"])
371-
372-
process_enable_ebs_encryption_by_default(params["CONFIGURATION_ROLE_NAME"], params["ROLE_SESSION_NAME"], aws_account["Id"], regions)
372+
account_session = assume_role(params["CONFIGURATION_ROLE_NAME"], params["ROLE_SESSION_NAME"], aws_account["Id"])
373+
process_enable_ebs_encryption_by_default(account_session, aws_account["Id"], regions)
373374

374375

375376
def process_event_organizations(event: dict) -> None:

0 commit comments

Comments
 (0)