def clean(parameter_store, deployment_map): """ Function used to remove stale entries in Parameter Store and Deployment Pipelines that are no longer in the Deployment Map """ current_pipeline_parameters = parameter_store.fetch_parameters_by_path( '/deployment/') parameter_store = ParameterStore(DEPLOYMENT_ACCOUNT_REGION, boto3) cloudformation = CloudFormation( region=DEPLOYMENT_ACCOUNT_REGION, deployment_account_region=DEPLOYMENT_ACCOUNT_REGION, role=boto3) stacks_to_remove = [] for parameter in current_pipeline_parameters: name = parameter.get('Name').split('/')[-2] if name not in [ p.get('name') for p in deployment_map.map_contents['pipelines'] ]: parameter_store.delete_parameter(name) stacks_to_remove.append(name) for stack in list(set(stacks_to_remove)): cloudformation.delete_stack("{0}-{1}".format(ADF_PIPELINE_PREFIX, stack))
def worker_thread(sts, region, account_id, role, event): partition = get_partition(REGION_DEFAULT) role = sts.assume_cross_account_role( f'arn:{partition}:iam::{account_id}:role/{role}', 'remove_base') parameter_store = ParameterStore(region, role) paginator = parameter_store.client.get_paginator('describe_parameters') page_iterator = paginator.paginate() for page in page_iterator: for parameter in page['Parameters']: if 'Used by The AWS Deployment Framework' in parameter.get( 'Description', ''): parameter_store.delete_parameter(parameter.get('Name')) cloudformation = CloudFormation( region=region, deployment_account_region=event.get('deployment_account_region'), role=role, wait=True, stack_name=None, s3=None, s3_key_path=None, account_id=account_id) return cloudformation.delete_all_base_stacks()
def worker_thread(sts, region, account_id, role, event): role = sts.assume_cross_account_role( 'arn:aws:iam::{0}:role/{1}'.format(account_id, role), 'remove_base') parameter_store = ParameterStore(region, role) parameters = [param['Name'] for param in parameter_store.client.describe_parameters()['Parameters'] if 'Used by The AWS Deployment Framework' in param['Description']] for parameter in parameters: parameter_store.delete_parameter(parameter) cloudformation = CloudFormation( region=region, deployment_account_region=event.get('deployment_account_region'), role=role, wait=True, stack_name=None, s3=None, s3_key_path=None, account_id=account_id ) return cloudformation.delete_all_base_stacks()