インフラ女子のぼやき

AWSを使ってごにょごにょする日々を送っています。技術的なこと、セミナーレポートなどいろいろ書いていきます。

Lambdaで最新AMIを取得する!(Python)

Lambda(python)で最新AMI IDを取得するプログラムを書きました。

Windowsは「Windows Servier 2012 R2 Base」、Linuxは「Amazon Linux」の最新AMI IDを取得してます。 Filters部分をカスタマイズしてもらえれば、その他にも使えると思います!    

Windows

import boto3

def lambda_handler(event, context):
    client = boto3.client('ec2')
    response = client.describe_images(
        Owners=['amazon'],
        Filters=[
            {
                'Name': 'root-device-type',
                'Values': ['ebs']
            },
            {
                'Name': 'architecture',
                'Values': ['x86_64']
            },
            {
                'Name': 'name',
                'Values': ['Windows_Server-2012-R2_RTM-Japanese-64Bit-Base*']
            }
        ]
    )
    
    list = []
    
    for x in response["Images"]:
        name = x["Name"]
        ami_id = x["ImageId"]
        list.append([name, ami_id])
    
    list.sort(key=lambda x:x[0], reverse=True)
    print list[0][1]

Linux

import boto3

def lambda_handler(event, context):
    client = boto3.client('ec2')
    response = client.describe_images(
        Owners=['amazon'],
        Filters=[
            {
               'Name': 'root-device-type',
                'Values': ['ebs']
            },
            {
                'Name': 'architecture',
                'Values': ['x86_64']
            },
            {
                'Name': 'block-device-mapping.volume-type',
                'Values': ['standard']
            },
            {
                 'Name': 'name',
                 'Values': ['amzn-ami-hvm*']
            }
        ]
    )
    
    list = []
    
    for x in response["Images"]:
        name = x["Name"]
        ami_id = x["ImageId"]
        list.append([name, ami_id])
    
    list.sort(key=lambda x:x[0], reverse=True)
    print list[0][1]