def process_request(self, session, account_id, region, kwargs):
     client = session.client("cloudtrail", region_name=region)
     cnt = 0
     for event in self.paginate(client, "lookup_events", kwargs):
         print(
             "--------------------------------------------------------------------------------"
         )
         print(dump_json(event))
         cnt += 1
         if self._max_results is not None and cnt >= int(self._max_results):
             return
Ejemplo n.º 2
0
    def process_request(self, session, account_id, region, kwargs):
        client = session.client("ecs", region_name=region)
        results = []

        cluster_arns = [
            item for item in self.paginate(client, "list_clusters")
        ]
        for cluster_arn in cluster_arns:
            task_arns = [
                item for item in self.paginate(client, "list_tasks",
                                               {"cluster": cluster_arn})
            ]

            while len(task_arns) > 0:
                # Note that `tasks` supports a list of up to 100 task IDs or full ARN entries.
                check_tasks = task_arns[0:min(100, len(task_arns))]

                for task in client.describe_tasks(cluster=cluster_arn,
                                                  tasks=check_tasks)["tasks"]:
                    # Retrieve Image in running containers, or container definitions (if it's
                    # Fargate or the running containers (task["containers"]) has "Image"==None)

                    containers = task["containers"]
                    none_image_found = any(
                        c.get("image") is None for c in containers)
                    if task["launchType"] == "FARGATE" or none_image_found:
                        resp = client.describe_task_definition(
                            taskDefinition=task["taskDefinitionArn"])
                        containers = resp["taskDefinition"][
                            "containerDefinitions"]

                    for container in containers:
                        data = {
                            "Image":
                            container.get("image"),  # can have None image
                            "ClusterArn": task["clusterArn"],
                            "LaunchType": task["launchType"],
                            "TaskArn": task["taskArn"],
                            "LastStatus": task["lastStatus"],
                            "AccountId": account_id,
                            "Region": region,
                        }
                        results.append(data)
                task_arns = task_arns[100:]

        for result in self.lookup_image_details(results, region, account_id,
                                                session):
            print(dump_json(result))
Ejemplo n.º 3
0
 def process_request(self, session, account_id, region, kwargs):
     client = session.client("acm", region_name=region)
     data_list = []
     for page in client.get_paginator("list_certificates").paginate():
         data_list.extend(page["CertificateSummaryList"])
 
     for data in data_list:
         item = client.describe_certificate(CertificateArn=data["CertificateArn"])["Certificate"]
         data = item if self._detailed else {
             "AccountId": account_id,
             "Region": region,
             "CertificateArn": item["CertificateArn"],
             "DomainName": item["DomainName"],
             "NotAfter": item["NotAfter"].strftime("%Y-%m-%d %H:%M:%S"),
             "InUseByCnt": len(item["InUseBy"]),
             "Issuer": item["Issuer"],
             "Status": item["Status"],
             "Type": item["Type"],
         }
         print(dump_json(data))