def run( self, diagram: bool, verbose: bool, services: List[str], filters: List[Filterable], ): command_runner = AwsCommandRunner(filters) for region_name in self.region_names: self.init_region_cache(region_name) # if thing_name is none, get all things and check if self.thing_name is None: client = self.session.client("iot", region_name=region_name) things = client.list_things() thing_options = IotOptions( verbose=verbose, filters=filters, session=self.session, region_name=region_name, thing_name=things, ) diagram_builder: BaseDiagram if diagram: diagram_builder = IoTDiagram(thing_name="") else: diagram_builder = NoDiagram() command_runner.run( provider="iot", options=thing_options, diagram_builder=diagram_builder, title="AWS IoT Resources - Region {}".format(region_name), filename=thing_options.resulting_file_name("iot"), ) else: things = dict() things["things"] = [{"thingName": self.thing_name}] thing_options = IotOptions( verbose=verbose, filters=filters, session=self.session, region_name=region_name, thing_name=things, ) if diagram: diagram_builder = IoTDiagram(thing_name=self.thing_name) else: diagram_builder = NoDiagram() command_runner.run( provider="iot", options=thing_options, diagram_builder=diagram_builder, title="AWS IoT {} Resources - Region {}".format( self.thing_name, region_name), filename=thing_options.resulting_file_name( self.thing_name + "_iot"), )
def run( self, diagram: bool, verbose: bool, services: List[str], filters: List[Filterable], ): for region in self.region_names: security_options = SecurityOptions( verbose=verbose, filters=filters, session=self.session, region_name=region, commands=self.commands, ) command_runner = AwsCommandRunner() command_runner.run( provider="security", options=security_options, diagram_builder=NoDiagram(), title="AWS Security - Region {}".format(region), # pylint: disable=no-member filename=security_options.resulting_file_name("security"), )
def run( self, diagram: bool, verbose: bool, services: List[str], filters: List[Filterable], ): for region in self.region_names: self.init_region_cache(region) options = AllOptions( verbose=verbose, filters=filters, session=self.session, region_name=region, services=services, ) command_runner = AwsCommandRunner(filters=filters) command_runner.run( provider="all", options=options, diagram_builder=NoDiagram(), title="AWS Resources - Region {}".format(region), # pylint: disable=no-member filename=options.resulting_file_name("all"), )
def run( self, diagram: bool, verbose: bool, services: List[str], filters: List[Filterable], ): for region in self.region_names: self.init_region_cache(region) options = PolicyOptions( verbose=verbose, filters=filters, session=self.session, region_name=region, ) command_runner = AwsCommandRunner(filters) if diagram: diagram = PolicyDiagram() else: diagram = NoDiagram() command_runner.run( provider="policy", options=options, diagram_builder=diagram, title="AWS IAM Policies - Region {}".format(region), filename=options.resulting_file_name("policy"), )
def run( self, diagram: bool, verbose: bool, services: List[str], filters: List[Filterable], ): if not services: services = [] for service in ALLOWED_SERVICES_CODES: services.append(service) for service in SPECIAL_RESOURCES: services.append(service) for region in self.region_names: limit_options = LimitOptions( verbose=verbose, filters=filters, session=self.session, region_name=region, services=services, threshold=self.threshold, ) self.init_globalaws_limits_cache(region=region, services=services, options=limit_options) command_runner = AwsCommandRunner() command_runner.run( provider="limit", options=limit_options, diagram_builder=NoDiagram(), title="AWS Limits - Region {}".format(region), # pylint: disable=no-member filename=limit_options.resulting_file_name("limit"), )
def run( self, diagram: bool, verbose: bool, services: List[str], filters: List[Filterable], ): # pylint: disable=too-many-branches command_runner = AwsCommandRunner(filters) for region in self.region_names: self.init_region_cache(region) # if vpc is none, get all vpcs and check if self.vpc_id is None: client = self.session.client("ec2", region_name=region) vpcs = client.describe_vpcs() for data in vpcs["Vpcs"]: vpc_id = data["VpcId"] vpc_options = VpcOptions( verbose=verbose, filters=filters, session=self.session, region_name=region, vpc_id=vpc_id, ) self.check_vpc(vpc_options) diagram_builder: BaseDiagram if diagram: diagram_builder = VpcDiagram(vpc_id=vpc_id) else: diagram_builder = NoDiagram() command_runner.run( provider="vpc", options=vpc_options, diagram_builder=diagram_builder, title="AWS VPC {} Resources - Region {}".format(vpc_id, region), filename=vpc_options.resulting_file_name(vpc_id + "_vpc"), ) else: vpc_options = VpcOptions( verbose=verbose, filters=filters, session=self.session, region_name=region, vpc_id=self.vpc_id, ) self.check_vpc(vpc_options) if diagram: diagram_builder = VpcDiagram(vpc_id=self.vpc_id) else: diagram_builder = NoDiagram() command_runner.run( provider="vpc", options=vpc_options, diagram_builder=diagram_builder, title="AWS VPC {} Resources - Region {}".format( self.vpc_id, region ), filename=vpc_options.resulting_file_name(self.vpc_id + "_vpc"), )