Esempio n. 1
0
def get_info():
    client = boto3.client('lightsail')

    data = client.get_instances()
    while data:
        next_page_token = data.get('nextPageToken')

        for instance in data.get('instances', []):
            yield {
                'id': instance.get('name'),
                'service_name': 'Lightsail',
                'public_ip_v4': [instance.get('publicIpAddress')],
            }

        data = client.get_instances(pageToken=next_page_token) if next_page_token else None

    data = client.get_load_balancers()
    while data:
        next_page_token = data.get('nextPageToken')

        for balancer in data.get('loadBalancers', []):
            yield {
                'id': balancer.get('name'),
                'service_name': 'Lightsail',
                'public_ip_v4': [resolve_host(balancer.get('dnsName'))],
                'public_dns': [balancer.get('dnsName')],
            }

        data = client.get_load_balancers(pageToken=next_page_token) if next_page_token else None
Esempio n. 2
0
def get_info():
    client = boto3.client('es')

    domains = []
    data = client.list_domain_names()

    for domain in data.get('DomainNames', []):
        domains.append(domain.get('DomainName'))

    if domains:
        data = client.describe_elasticsearch_domains(DomainNames=domains)
        for domain in data.get('DomainStatusList'):
            yield {
                'id': domain.get('DomainId'),
                'service_name': 'Elasticsearch',
                'public_ip_v4': [resolve_host(domain.get('Endpoint'))],
                'public_dns': [domain.get('Endpoint')],
            }
Esempio n. 3
0
def get_info():
    client = boto3.client('apigateway')
    data = client.get_rest_apis()

    while data:
        position = data.get('position')

        for api in data.get('items', []):
            hostname = '{}.execute-api.{}.amazonaws.com'.format(
                api.get('id'), client.meta.region_name)
            yield {
                'id': api.get('id'),
                'service_name': 'API Gateway',
                'public_ip_v4': [resolve_host(hostname)],
                'public_dns': [hostname],
            }

        data = client.get_rest_apis(position=position) if position else None
Esempio n. 4
0
def get_info():
    client = boto3.client('elb')

    data = client.describe_load_balancers()

    while data:
        next_marker = data.get('NextMarker')

        for description in data.get('LoadBalancerDescriptions', []):
            if description.get('Scheme') == 'internet-facing':
                yield {
                    'id': description.get('CanonicalHostedZoneNameID'),
                    'service_name': 'ELB',
                    'public_ip_v4': [resolve_host(description.get('DNSName'))],
                    'public_dns': [description.get('DNSName')],
                }

        data = client.describe_load_balancers(
            Marker=next_marker) if next_marker else None
Esempio n. 5
0
def get_info():
    client = boto3.client('cloudfront')

    data = client.list_distributions()
    data = data.get('DistributionList')

    while data:
        next_marker = data.get('NextMarker')
        for distribution in data.get('Items', []):
            if distribution.get('Enabled'):
                yield {
                    'id': distribution['Id'],
                    'service_name': 'CloudFront',
                    'public_ip_v4': [resolve_host(distribution['DomainName'])],
                    'public_dns': [distribution['DomainName']],
                }

        data = client.list_distributions(Marker=next_marker).get(
            'DistributionList') if next_marker else None
Esempio n. 6
0
def get_info():
    client = boto3.client('rds')

    data = client.describe_db_instances()

    while data:
        marker = data.get('Marker')

        for instance in data.get('DBInstances', []):
            if instance.get('PubliclyAccessible'):
                hostname = instance.get('Endpoint', {}).get('Address')
                yield {
                    'id': instance.get('DbiResourceId'),
                    'service_name': 'RDS',
                    'public_ip_v4': [resolve_host(hostname)],
                    'public_dns': [hostname],
                }

        data = client.describe_db_instances(Marker=marker) if marker else None