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
297299def 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
373375def process_event_organizations (event : dict ) -> None :
0 commit comments