This repository was archived by the owner on Aug 19, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathec2_backup.py
56 lines (49 loc) · 1.78 KB
/
ec2_backup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import boto3
from botocore.exceptions import ClientError
import pandas as pd
from datetime import datetime
def build_client():
ec2 = boto3.client(
'ec2',
region_name = 'us-east-2',
aws_access_key_id=v.2-key_id,
aws_secret_access_key=v.3-secret_key_id
)
return ec2
#print(build_client())
def ec2_info( ):
ec2 = build_client()
response = ec2.describe_instances()
instances_info = []
for reservation in response['Reservations']:
for instance_description in reservation['Instances']:
image_id = instance_description['ImageId']
instance_id = instance_description['InstanceId']
volume_id = instance_description['BlockDeviceMappings'][0]['Ebs']['VolumeId']
status = instance_description['State'].get('Name')
a = [ image_id, instance_id, volume_id, status ]
instances_info.append( a )
return instances_info
#print(ec2_info())
# create snapshots
def ec2_running_instances_backup():
response = ec2_info()
unique_volumes = []
for instance in response:
if instance[3] == 'running' and instance[2] not in unique_volumes :
ec2 = build_client()
instance = str(instance[2])
ec2.create_snapshot(VolumeId=instance)
unique_volumes.append(instance[2])
print('Snapshot created for volume: ' + str(instance[2]))
return unique_volumes
def reboot_running_ec2():
instances = ec2_info()
ec2 = build_client()
for instance in instances:
if instance[3] == 'running':
response = ec2.reboot_instances(
InstanceIds=[instance[1]],
)
print(ec2_running_instances_backup())
print(reboot_running_ec2())