64
64
raise ValueError ("Unexpected error executing Lambda function. Review CloudWatch logs for details." ) from None
65
65
66
66
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 :
68
68
"""Assumes the provided role in the given account and returns a session.
69
69
70
70
Args:
@@ -78,7 +78,7 @@ def assume_role(role: str, role_session_name: str, account: str = None, session:
78
78
"""
79
79
if not session :
80
80
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 )
82
82
sts_arn = sts_client .get_caller_identity ()["Arn" ]
83
83
LOGGER .info (f"USER: { sts_arn } " )
84
84
if not account :
@@ -200,7 +200,7 @@ def get_organization_resource_tags(resource_id: str) -> List[TagTypeDef]:
200
200
return tags
201
201
202
202
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 :
204
204
"""Process enable ec2 default EBS encryption.
205
205
206
206
Args:
@@ -209,6 +209,7 @@ def process_enable_ebs_encryption_by_default(account_session: boto3.Session, acc
209
209
regions: regions to process
210
210
"""
211
211
for region in regions :
212
+ account_session = assume_role (configuration_role_name , session_role_name , region , account_id )
212
213
ec2_client : EC2Client = account_session .client ("ec2" , region , config = BOTO3_CONFIG )
213
214
214
215
response : GetEbsEncryptionByDefaultResultTypeDef = ec2_client .get_ebs_encryption_by_default ()
@@ -289,9 +290,10 @@ def local_testing(aws_account: AccountTypeDef, params: dict) -> None:
289
290
aws_account: AWS account to update
290
291
params: solution parameters
291
292
"""
292
- account_session = assume_role ( params [ "CONFIGURATION_ROLE_NAME" ], params [ "ROLE_SESSION_NAME" ], aws_account [ "Id" ])
293
+
293
294
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 )
295
297
296
298
297
299
def process_accounts (event : Union [CloudFormationCustomResourceEvent , dict ], params : dict ) -> None :
@@ -364,10 +366,10 @@ def process_event_sns(event: dict) -> None:
364
366
LOGGER .info ({"SNS Record" : record })
365
367
message = record ["Sns" ]["Message" ]
366
368
params ["action" ] = message ["Action" ]
367
-
369
+
368
370
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 )
371
373
372
374
373
375
def process_event_organizations (event : dict ) -> None :
0 commit comments