#!/usr/bin/env python3 import boto3 import sys def is_encrypted(client, instance): devices = [device.get('Ebs') for device in instance.get('BlockDeviceMappings')] is_enc = False for device in devices: volumes = client.describe_volumes(VolumeIds=[device.get('VolumeId')]).get('Volumes') for volume in volumes: is_enc = volume.get('Encrypted', False) return is_enc def main(): client = boto3.client('ec2') paginator = client.get_paginator('describe_instances') page_iterator = paginator.paginate(Filters=[ { 'Name': 'instance-state-name', 'Values': [ 'running', ] }, ],) instances = [instances for sublist in page_iterator for reservations in sublist.get('Reservations', []) for instances in reservations.get('Instances', [])] for instance in instances: is_enc = is_encrypted(client, instance) instance_name = next(iter([tag['Value'] for tag in instance['Tags'] if tag['Key'] == 'Name']), 'EMPTY') print(f"Instance {instance['InstanceId']} with name {instance_name} is encrypted: {is_enc}") if __name__ == '__main__': sys.exit(main())