def get_all_managed_prefix_lists(self, full_information=True, region=None): if region is not None: return self.get_all_managed_prefix_lists_in_region(region, full_information=full_information) final_result = list() for region in AWSAccount.get_aws_account().regions.values(): final_result += self.get_all_managed_prefix_lists_in_region(region, full_information=full_information) return final_result
def get_all_nat_gateways(self, full_information=True, region=None): if region is not None: return self.get_region_nat_gateways(region, full_information=full_information) final_result = list() for region in AWSAccount.get_aws_account().regions.values(): final_result += self.get_region_nat_gateways(region, full_information=full_information) return final_result
def yield_cloud_watch_metrics(self): """ Yields metrics - made to handle large amounts of data, in order to prevent the OOM collapse. :return: """ for region in AWSAccount.get_aws_account().regions.values(): AWSAccount.set_aws_region(region) for response in self.execute(self.client.list_metrics, "Metrics"): yield response
def get_connection_id(): """ Each connection has a unique id- in order to reuse it. This function generates it. :return: """ aws_account = AWSAccount.get_aws_account() aws_region = AWSAccount.get_aws_region() region_mark = aws_region.region_mark if aws_region is not None else "" return f"{aws_account.id}/{region_mark}"
def get_all_namespaces(self, region=None, full_information=True): if region is not None: return self.get_region_namespaces(region, full_information=full_information) final_result = [] for region in AWSAccount.get_aws_account().regions.values(): final_result += self.get_region_namespaces(region) return final_result
def get_all_task_definitions(self, region=None): if region is not None: return self.get_region_task_definitions(region) final_result = list() for region in AWSAccount.get_aws_account().regions.values(): final_result += self.get_region_task_definitions(region) return final_result
def get_all_ec2_launch_templates(self, full_information=False, region=None): final_result = list() if region is not None: return self.get_region_launch_templates(region, full_information=full_information) for region in AWSAccount.get_aws_account().regions.values(): final_result += self.get_region_launch_templates(region, full_information=full_information) return final_result
def get_authorization_info(self): current_account = AWSAccount.get_aws_account() lst_ret = list(self.execute(self.client.get_authorization_token, "authorizationData", filters_req={"registryIds": [current_account.id]})) for dict_src in lst_ret: auth_user_token = b64decode(dict_src['authorizationToken']).decode() user_name, decoded_token = auth_user_token.split(":") dict_src["user_name"] = user_name dict_src["decoded_token"] = decoded_token dict_src["proxy_host"] = dict_src["proxyEndpoint"][len("https://"):] return lst_ret
def get_all_instances(self): """ Get all ec2 instances in current region. :return: """ final_result = list() for region in AWSAccount.get_aws_account().regions.values(): AWSAccount.set_aws_region(region) for instance in self.execute(self.client.describe_instances, "Reservations"): final_result.extend(instance['Instances']) return [EC2Instance(instance) for instance in final_result]
def get_all_spot_fleet_requests(self, full_information=False): final_result = list() for region in AWSAccount.get_aws_account().regions.values(): AWSAccount.set_aws_region(region) for ret in self.execute(self.client.describe_spot_fleet_requests, "SpotFleetRequestConfigs"): obj = EC2SpotFleetRequest(ret) if full_information is True: raise NotImplementedError() final_result.append(obj) return final_result
def get_all_cache_subnet_groups(self, region=None): """ Get all subnet_groups in all regions. :return: """ if region is not None: return self.get_region_cache_subnet_groups(region) final_result = list() for region in AWSAccount.get_aws_account().regions.values(): final_result += self.get_region_cache_subnet_groups(region) return final_result
def get_all_db_cluster_snapshots(self, region=None): """ Get all db_cluster_snapshot in all regions. :return: """ if region is not None: return self.get_region_db_cluster_snapshots(region) final_result = list() for region in AWSAccount.get_aws_account().regions.values(): final_result += self.get_region_db_cluster_snapshots(region) return final_result
def get_all_vpcs(self, region=None): """ Get all interfaces in all regions. :return: """ if region is not None: return self.get_region_vpcs(region) final_result = list() for region in AWSAccount.get_aws_account().regions.values(): final_result += self.get_region_vpcs(region) return final_result
def get_all_capacity_providers(self, region=None): """ Get all capacity_providers in all regions. :return: """ if region is not None: return self.get_region_capacity_providers(region) final_result = list() for region in AWSAccount.get_aws_account().regions.values(): final_result += self.get_region_capacity_providers(region) return final_result
def get_all_interfaces(self): """ Get all interfaces in all regions. :return: """ final_result = list() for region in AWSAccount.get_aws_account().regions.values(): AWSAccount.set_aws_region(region) for dict_src in self.execute(self.client.describe_network_interfaces, "NetworkInterfaces"): interface = NetworkInterface(dict_src) final_result.append(interface) return final_result
def get_all_volumes(self, region=None): """ Get all ec2 volumes in current region. :return: """ if region is not None: return self.get_region_volumes(region) final_result = list() for region in AWSAccount.get_aws_account().regions.values(): final_result += self.get_region_volumes(region) return final_result
def get_all_keys(self, region=None, full_information=True): """ Get all keys in all regions. :return: """ if region is not None: return self.get_region_keys(region, full_information=full_information) final_result = list() for region in AWSAccount.get_aws_account().regions.values(): final_result += self.get_region_keys( region, full_information=full_information) return final_result
def get_all_load_balancers(self, full_information=True, region=None): """ Get all loadnbalancers :param full_information: :param region: :return: """ if region is not None: return self.get_region_load_balancers( region, full_information=full_information) final_result = list() for region in AWSAccount.get_aws_account().regions.values(): final_result += self.get_region_load_balancers( region, full_information=full_information) return final_result
def get_all_availability_zones(self, region=None): """ Get all interfaces in all regions. :return: """ if region is not None: AWSAccount.set_aws_region(region) return self.get_all_availability_zones_in_current_region() final_result = list() for region in AWSAccount.get_aws_account().regions.values(): AWSAccount.set_aws_region(region) final_result += self.get_all_availability_zones_in_current_region() return final_result
def get_all_event_source_mappings(self, full_information=True, region=None): """ Get all event_source_mapping in all regions :param full_information: :return: """ if region is not None: return self.get_region_event_source_mappings(region) final_result = list() for region in AWSAccount.get_aws_account().regions.values(): final_result += self.get_region_event_source_mappings(region) return final_result
def get_all_lambdas(self, full_information=True): """ Get all lambda in all regions :param full_information: :return: """ final_result = list() for region in AWSAccount.get_aws_account().regions.values(): AWSAccount.set_aws_region(region) for response in self.execute(self.client.list_functions, "Functions"): obj = AWSLambda(response) final_result.append(obj) if full_information: pass return final_result
def get_all_security_groups(self, full_information=False): """ Get all security groups in the region. :param full_information: :return: """ final_result = list() for region in AWSAccount.get_aws_account().regions.values(): AWSAccount.set_aws_region(region) for ret in self.execute(self.client.describe_security_groups, "SecurityGroups"): obj = EC2SecurityGroup(ret) if full_information is True: raise NotImplementedError() final_result.append(obj) return final_result
def get_all_load_balancers(self, full_information=True): """ Get all loadbalancers. :param full_information: :return: """ final_result = list() for region in AWSAccount.get_aws_account().regions.values(): AWSAccount.set_aws_region(region) for response in self.execute(self.client.describe_load_balancers, "LoadBalancerDescriptions"): obj = ClassicLoadBalancer(response) final_result.append(obj) if full_information: pass return final_result
def get_cloud_watch_alarms(self): """ Get all alarms in all regions. :return: """ final_result = list() for region in AWSAccount.get_aws_account().regions.values(): AWSAccount.set_aws_region(region) for dict_src in self.execute(self.client.describe_alarms, None, raw_data=True): if len(dict_src["CompositeAlarms"]) != 0: raise NotImplementedError("CompositeAlarms") for dict_alarm in dict_src["MetricAlarms"]: alarm = CloudWatchAlarm(dict_alarm) alarm.region = AWSAccount.get_aws_region() final_result.append(alarm) return final_result
def get_all_secrets(self, full_information=True): """ Get all lambda in all regions :param full_information: :return: """ final_result = list() for region in AWSAccount.get_aws_account().regions.values(): AWSAccount.set_aws_region(region) for response in self.execute(self.client.list_secrets, "SecretList"): obj = SecretsManagerSecret(response) final_result.append(obj) if full_information: raw_value = self.get_secret_value(obj.name) obj.update_value_from_raw_response(raw_value) return final_result
def connect_session(): """ Each account can be managed after several steps of connection - run all steps in order to connect. :return: """ session = None aws_account = AWSAccount.get_aws_account() if aws_account is None or len(aws_account.connection_steps) == 0: session = boto3.session.Session() else: for connection_step in aws_account.connection_steps: session = SessionsManager.execute_connection_step( connection_step, session) if session is None: raise RuntimeError( f"Could not establish session for aws_account {aws_account.id}" ) return session
def get_all_domains(self, full_information=True): final_result = [] for region in AWSAccount.get_aws_account().regions.values(): AWSAccount.set_aws_region(region) domain_names = [] for response in self.execute(self.client.list_domain_names, "DomainNames"): domain_names.append(response["DomainName"]) if len(domain_names) == 0: continue filters_req = {"DomainNames": domain_names} for response in self.execute( self.client.describe_elasticsearch_domains, "DomainStatusList", filters_req=filters_req): obj = ElasticsearchDomain(response) final_result.append(obj) return final_result
def get_cloud_watch_log_group_metric_filters(self, full_information=False): """ Be sure you know what you do, when you set full_information=True. This can kill your memory, if you have a lot of data in cloudwatch. Better using yield_log_group_streams if you need. :param full_information: :return: """ final_result = list() for region in AWSAccount.get_aws_account().regions.values(): AWSAccount.set_aws_region(region) for result in self.execute(self.client.describe_metric_filters, "metricFilters"): obj = CloudWatchLogGroupMetricFilter(result) if full_information: self.update_log_group_full_information(obj) obj.region = AWSAccount.get_aws_region() final_result.append(obj) return final_result
def test_raw_create_managed_prefix_list(): request = { "PrefixListName": "pl_test_name", "Entries": [{ "Cidr": "2.2.2.2/32", "Description": "string" }], "MaxEntries": 1000, "AddressFamily": "IPv4", } for region in AWSAccount.get_aws_account().regions.values(): AWSAccount.set_aws_region(region) prefix_list_name = "test" request = { "PrefixListName": prefix_list_name, "MaxEntries": 60, "AddressFamily": "IPv4", "TagSpecifications": [ { 'ResourceType': 'prefix-list', 'Tags': [{ 'Key': 'Name', 'Value': prefix_list_name }] }, ], } client = EC2Client() ret = client.raw_create_managed_prefix_list(request, add_client_token=False) assert isinstance(ret, dict) print(ret)
def get_all_load_balancers(self, full_information=True): """ Get all loadnbalancers :param full_information: :return: """ final_result = list() for region in AWSAccount.get_aws_account().regions.values(): AWSAccount.set_aws_region(region) for response in self.execute(self.client.describe_load_balancers, "LoadBalancers"): obj = LoadBalancer(response) final_result.append(obj) for listener_response in self.execute( self.client.describe_listeners, "Listeners", filters_req={"LoadBalancerArn": obj.arn}): obj.add_raw_listener(listener_response) if full_information: pass return final_result