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
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')], }
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
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
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
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