Я написал функцию лямбда для создания снимка и прикладной хрон в Облако смотреть События таким образом, что они получают созданные ежедневно в 12 часов вечера.Запланированное создание и удаление снимков в AWS
import boto3
import datetime
ec2 = boto3.resource('ec2')
def lambda_handler(event,handler):
print("\n\nAWS Snapshots starting at %s" % datetime.datetime.now())
instances = ec2.instances.filter(Filters=[
{'Name': 'instance-state-name', 'Values': ['running']}
])
for instance in instances:
instance_name = filter(lambda tag: tag['Key'] == 'Name', instance.tags)[0]['Value']
print("name: %s -id: %s" % (instance_name , instance.id))
for volume in ec2.volumes.filter(Filters=[
{'Name': 'attachment.instance-id', 'Values': [instance.id]}
]):
description = 'scheduled-%s.%s-%s' % (instance_name, volume.volume_id, datetime.datetime.now().strftime("%Y%m%d-%H%M%S"))
print 'description: %s' % (description)
if volume.create_snapshot(VolumeId=volume.volume_id, Description=description):
print("Snapshot created with description [%s]" % description)
print("\n\nAWS Snapshots completed at %s" % datetime.datetime.now())
return True
Теперь все, что я хочу сделать, это удалить моментальных снимков, после 7 дней создания через лямбда function.And я написал следующее для этого.
import sys
import boto3
from datetime import datetime, timedelta
try:
days = int(sys.argv[1])
except IndexError:
days = 7
delete_time = datetime.utcnow() - timedelta(days=days)
print 'Deleting any snapshots older than {days} days'.format(days=days)
ec2 = boto3.resource('ec2')
snapshots = ec2.get_all_snapshots(filters=filters)
deletion_counter = 0
size_counter = 0
for snapshot in snapshots:
start_time = datetime.strptime(
snapshot.start_time,'%Y-%m-%dT%H:%M:%S.000Z'
)
if start_time < delete_time:
print 'Deleting {id}'.format(id=snapshot.id)
deletion_counter = deletion_counter + 1
size_counter = size_counter + snapshot.volume_size
snapshot.delete(dry_run=False)
print 'Deleted {number} snapshots totalling {size} GB'.format(number=deletion_counter,size=size_counter)
Делая это, я получаю следующее сообщение об ошибке:
module initialization error: 'ec2.ServiceResource' object has no attribute 'get_all_snapshots'
Что мне делать?
Не могли бы вы рассказать мне, как добавлять теги к этим моментальным снимкам ..? Какое изменение я должен внести в свой сценарий выше? – prudhvi
Я отредактировал мой вопрос. Пожалуйста, посмотрите его. Спасибо. – prudhvi