Skip to content

Commit 724e5fb

Browse files
committed
Moving assume_role method to process_enable_ebs_encryption_by_default so that we can build a regional STS endpoint.
1 parent 6430297 commit 724e5fb

File tree

1 file changed

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

1 file changed

+10
-8
lines changed

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

Lines changed: 10 additions & 8 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, account: str = None, session: boto3.Session = None) -> boto3.Session:
67+
def assume_role(role: str, role_session_name: str, region: 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:
@@ -78,7 +78,7 @@ def assume_role(role: str, role_session_name: str, account: str = None, session:
7878
"""
7979
if not session:
8080
session = boto3.Session()
81-
sts_client: STSClient = session.client("sts", config=BOTO3_CONFIG)
81+
sts_client: STSClient = session.client("sts", endpoint_url=f"https://sts.{region}.amazonaws.com", region_name=region, config=BOTO3_CONFIG)
8282
sts_arn = sts_client.get_caller_identity()["Arn"]
8383
LOGGER.info(f"USER: {sts_arn}")
8484
if not account:
@@ -200,7 +200,7 @@ def get_organization_resource_tags(resource_id: str) -> List[TagTypeDef]:
200200
return tags
201201

202202

203-
def process_enable_ebs_encryption_by_default(account_session: boto3.Session, account_id: str, regions: list) -> None:
203+
def process_enable_ebs_encryption_by_default(configuration_role_name: str, session_role_name: str, account_id: str, regions: list) -> None:
204204
"""Process enable ec2 default EBS encryption.
205205
206206
Args:
@@ -209,6 +209,7 @@ def process_enable_ebs_encryption_by_default(account_session: boto3.Session, acc
209209
regions: regions to process
210210
"""
211211
for region in regions:
212+
account_session = assume_role(configuration_role_name, session_role_name, region, account_id)
212213
ec2_client: EC2Client = account_session.client("ec2", region, config=BOTO3_CONFIG)
213214

214215
response: GetEbsEncryptionByDefaultResultTypeDef = ec2_client.get_ebs_encryption_by_default()
@@ -289,9 +290,10 @@ def local_testing(aws_account: AccountTypeDef, params: dict) -> None:
289290
aws_account: AWS account to update
290291
params: solution parameters
291292
"""
292-
account_session = assume_role(params["CONFIGURATION_ROLE_NAME"], params["ROLE_SESSION_NAME"], aws_account["Id"])
293+
293294
regions = get_enabled_regions(params["ENABLED_REGIONS"], params["CONTROL_TOWER_REGIONS_ONLY"])
294-
process_enable_ebs_encryption_by_default(account_session, aws_account["Id"], regions)
295+
296+
process_enable_ebs_encryption_by_default(params["CONFIGURATION_ROLE_NAME"], params["ROLE_SESSION_NAME"], aws_account["Id"], regions)
295297

296298

297299
def process_accounts(event: Union[CloudFormationCustomResourceEvent, dict], params: dict) -> None:
@@ -364,10 +366,10 @@ def process_event_sns(event: dict) -> None:
364366
LOGGER.info({"SNS Record": record})
365367
message = record["Sns"]["Message"]
366368
params["action"] = message["Action"]
367-
369+
368370
aws_account = get_account_info(account_id=message["AccountId"])
369-
account_session = assume_role(params["CONFIGURATION_ROLE_NAME"], params["ROLE_SESSION_NAME"], aws_account["Id"])
370-
process_enable_ebs_encryption_by_default(account_session, aws_account["Id"], regions)
371+
372+
process_enable_ebs_encryption_by_default(params["CONFIGURATION_ROLE_NAME"], params["ROLE_SESSION_NAME"], aws_account["Id"], regions)
371373

372374

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

0 commit comments

Comments
 (0)