напишите лямбда-функцию для отмены регистрации ami и соответствующий снимок должен быть удален

#python #amazon-web-services #aws-lambda #boto3

#python #amazon-веб-сервисы #aws-lambda #boto3

Вопрос:

Я создал следующую лямбда-функцию на своем локальном компьютере, чтобы я мог развернуть ее и ежедневно запускать через выражение cron события cloudwatch для очистки нужного AMI и его снимков. Он также заботится об отказе от снимков EBS.

Критерии удаления AMI — сначала найдите AMI, у которого есть тег ASGfrontendWP_AMI_, и если ему более 1 дня, отметьте его для отмены регистрации. Функция освобождает AMI, который в настоящее время используется конфигурацией запуска AWS.

Я уверен, что есть несколько способов оптимизировать эту лямбда-функцию и код, и я хотел бы знать, как я могу удалить соответствующий снимок на основе ami-id. Вот мой код

 import boto3
from dateutil.parser import parse

import datetime
client = boto3.client('ec2')
current_date = datetime.datetime.now().date()

age = 1
def handler(event, context):

    def days_old(date):
        get_date_obj = parse(date)
        date_obj = get_date_obj.replace(tzinfo=None)
        diff = datetime.datetime.now() - date_obj
        return diff.days
    
    ec2 = boto3.client('ec2')
    amis = ec2.describe_images(Filters=[
            {
                'Name': 'name',
                'Values': ['ASGfrontendWP_AMI_' '*']
            }
    ])
    #filter ami-id and snapshot-id  
    for ami in amis['Images']:
        create_date = ami['CreationDate']
        ami_id = ami['ImageId']
        # print ami['ImageId'], ami['CreationDate']
        day_old = days_old(create_date)
        if day_old >= age:
            print ("deleting -> "   ami_id   " - create_date = "   create_date)
            # deregister the AMI
            ec2.deregister_image(ImageId=ami_id)
        for snap in ami['BlockDeviceMappings']:
            #store snapshots
            s_id = snap['Ebs']['SnapshotId']
    
    return amis    
    return {
        'statusCode': 200,
    }

#handler("test", "test")
 

Комментарии:

1. Просто не хватает этой части? boto3.amazonaws.com/v1/documentation/api/latest/reference /…

2. да, пожалуйста, добавьте в него некоторый код.