in customFramework.py [0:0]
def deploy_to_all_regions(regions: str = None):
regions_list = regions.split(",")
logging.info("-------- Beginning deployment --------")
deployment_status = True
# Iterating through the list of regions
for region_name in regions_list:
# Checking if Audit Manager has been registered in that region
# and registering if not
register_region = register_account(region_name=region_name)
argument = (vars(create_arg_parser()))
input_job_name = argument.get('job_name')
deployment_region_status = False
if input_job_name == 'Custom-Standard-Framework':
if argument.get('custom_report_name') and argument.get('filepath') and argument.get('description') and argument.get('complianceType'):
input = open_input(argument.get('filepath'))
# Creating custom controls and passing to a custom framework
# 👇 The function call to create_custom_controls👇
control_sets = create_custom_controls(
input,
region_name=region_name
)
#The function call to create_custom_framework👇
create_custom_framework(
argument.get('custom_report_name'),
argument.get('description'),
argument.get('complianceType'),
control_sets,
region_name=region_name
)
deployment_region_status = True
else:
logging.error("--customFrameworkName, --description, --compliance-type and --template-path are required parameters.")
print("python customFramework.py --jobName Custom-Standard-Framework --customFrameworkName \"S3 Controls Framework\" --description \"Automated AWS Config Controls for Amazon S3\" --compliance-type \"AWS Service\" --template-path \"frameworks/s3_config_framework.yaml\" --regions \"us-east-1\"")
elif input_job_name == 'Automated-Custom-Framework':
if argument.get('custom_report_name') and argument.get('report_name'):
create_automated_custom_framework(
argument.get('report_name'),
argument.get('custom_report_name')
)
deployment_region_status = True
else:
logging.error("--customFrameworkName and --existingFrameworkName are required parameters.")
print("Example: python customFramework.py --jobName Automated-Custom-Framework --existingFrameworkName \"PCI DSS V3.2.1\" --customFrameworkName \"PCI DSS V3.2.1 - Automated Controls Only\" --regions \"us-east-1\"")
elif input_job_name == 'Merge-Multiple-Framework':
if argument.get('custom_report_name') and argument.get('filepath'):
merge_multiple_framework(
argument.get('custom_report_name'),
argument.get('filepath'),
argument.get('region_name')
)
deployment_region_status = True
else:
logging.error("--customFrameworkName and --filepath are required parameters.")
print("Example: python customFramework.py --jobName Merge-Multiple-Framework --customFrameworkName \"Custom Enterprise Controls\" --template-path \"frameworks/multi_framework.yaml\" --regions \"us-east-1\"")
elif input_job_name == 'Generate-YAML-Framework':
if argument.get('filepath') and argument.get('report_name'):
create_yaml_controls(
argument.get('report_name'),
argument.get('filepath')
)
deployment_region_status = True
else:
logging.error("--existingFrameworkName, --template-path and --filepath are required parameters.")
print("Example: python customFramework.py --jobName Generate-YAML-Framework --existingFrameworkName \"AWS License Manager\" --template-path \"frameworks/license_manager_controls.yaml\" --regions \"us-east-1\"")
else:
logging.error(f"The job name {input_job_name} does not exist.")
logging.error("Expected JobNames : Custom-Standard-Framework|Automated-Custom-Framework|Merge-Multiple-Framework|Generate-YAML-Framework")
if deployment_region_status:
logging.info(f"Deployment to the {region_name} region has been completed.")
else:
logging.error(f"Deployment to the {region_name} region has been failed.")
deployment_status = False
if deployment_status:
logging.info("-------- All deployments have been completed --------")
else:
logging.error("-------- Issues reported while deploying custom frameworks --------")
return register_region