ich mit dem folgende Skript versucht, Snapshots für Instanzen zu erstellen, den Tag Namen [Backup oder Backup] nach https://serverlesscode.com/post/lambda-schedule-ebs-snapshot-backups/ & & https://serverlesscode.com/post/lambda-schedule-ebs-snapshot-backups-2/Erstellung von Snapshots AWS Lambda mit
import boto3
import collections
import datetime
ec = boto3.client('ec2')
def lambda_handler(event, context):
reservations = ec.describe_instances(
Filters=[
{'Name': 'tag-key', 'Values': ['backup', 'Backup']},
]
).get(
'Reservations', []
)
instances = sum(
[
[i for i in r['Instances']]
for r in reservations
], [])
print "Found %d instances that need backing up" % len(instances)
to_tag = collections.defaultdict(list)
for instance in instances:
try:
retention_days = [
int(t.get('Value')) for t in instance['Tags']
if t['Key'] == 'Retention'][0]
except IndexError:
retention_days = 7
for dev in instance['BlockDeviceMappings']:
if dev.get('Ebs', None) is None:
continue
vol_id = dev['Ebs']['VolumeId']
print "Found EBS volume %s on instance %s" % (
vol_id, instance['InstanceId'])
snap = ec.create_snapshot(
VolumeId=vol_id,
)
to_tag[retention_days].append(snap['SnapshotId'])
print "Retaining snapshot %s of volume %s from instance %s for %d days" % (
snap['SnapshotId'],
vol_id,
instance['InstanceId'],
retention_days,
)
for retention_days in to_tag.keys():
delete_date = datetime.date.today() + datetime.timedelta(days=retention_days)
delete_fmt = delete_date.strftime('%Y-%m-%d')
print "Will delete %d snapshots on %s" % (len(to_tag[retention_days]), delete_fmt)
ec.create_tags(
Resources=to_tag[retention_days],
Tags=[
{'Key': 'DeleteOn', 'Value': delete_fmt},
]
)
mit Der Code funktionierte gut, gab aber eine Nullantwort zurück mit den Worten:
Found 0 instances that need backing up
Ich habe zwei Instanzen in meiner Konsole mit dem Namen Backup. Was könnte dann der Grund für die Nullantwort sein?
Können Sie mir sagen, wie Sie das getan haben? :-) Ich habe das gleiche Problem .. – Mathias
Jede Instanz hat Tags. Gemäß dem Code werden Snapshots für alle Instanzen erstellt, die ein Tag Backup oder Backup haben. Gehen Sie also zum Abschnitt "Tags" und fügen Sie das Tag allen Instanzen hinzu, für die Sie eine Sicherung benötigen. Dies wird gelöst. – prudhvi
danke, das hat geklappt .. ich habe in zwei verschiedenen Regionen gearbeitet, deshalb funktioniert es nicht .. – Mathias