Example #1
0
    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"),
                )
Example #2
0
    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"),
            )
Example #3
0
    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"),
            )
Example #4
0
    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"),
            )
Example #5
0
    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"),
            )
Example #6
0
    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"),
                )