AWS re:Post을(를) 사용하면 다음에 동의하게 됩니다. AWS re:Post 이용 약관

AWS 계정에서 Amazon Linux 1 EC2 인스턴스를 식별하려면 어떻게 해야 합니까?

2분 분량
0

AWS 계정에서 Amazon Linux 1(AL1)을 실행하는 모든 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 찾으려고 합니다.

간략한 설명

AL1에 대한 유지 관리 지원은 2023년 12월 31일에 종료됩니다. 이 날짜 이후에도 EC2 인스턴스에서 AL1을 계속 실행하고 AL1 AMI를 사용하여 새 EC2 인스턴스를 시작할 수 있습니다. 하지만 AWS에서 제공하는 AL1에 대한 중요 보안 업데이트는 중단됩니다.

해결 방법

다음 단계를 완료하여 AWS 계정에서 AL 1을 실행하는 EC2 인스턴스를 식별하십시오.

중요: 다음 스크립트는 Amazon 소유의 AMI를 사용하는 AL1 인스턴스만 나열합니다. 사용자 지정 AMI 또는 고객 소유 AMI는 포함되지 않습니다.

  1. Linux 또는 bash 터미널에서 다음 Python 스크립트 파일을 생성합니다(예: find_al1_instances.py).

    import argparse
    import boto3
    import json
    
    from collections import defaultdict
    
    def filter_regions(regions):
        enabled_regions_raw = boto3.client('account').list_regions(
                RegionOptStatusContains=['ENABLED', 'ENABLED_BY_DEFAULT'],
                MaxResults=50)
        enabled_regions = set([r['RegionName'] for r in enabled_regions_raw['Regions']])
        valid_regions = enabled_regions.intersection(set(regions)) if regions else enabled_regions
        print(f"Identified valid AWS regions: {valid_regions}")
        return valid_regions
    
    
    def instances_ordered_by_amis(ec2, region):
        result = defaultdict(list)
        for instance in ec2.instances.all():
            if instance.state['Name'] not in ['shutting-down', 'terminated']:
                result[instance.image_id].append(instance.id)
        return result
    
    
    def filter_al1_amis(ec2, amis):
        result = []
        for ami in amis:
            try:
                if ec2.Image(ami).image_owner_alias == 'amazon' and ec2.Image(ami).name.startswith('amzn-ami-'):
                    result.append(ami)
            except:
                # properties not set, cannot determine if this AMI is Amazon Linux 1 or not
                continue
        return result
    
    
    def find_al1_instances(regions):
        result = defaultdict(list)
        for region in regions:
            ec2 = boto3.resource('ec2', region_name=region)
            amis_instances_dict = instances_ordered_by_amis(ec2, region)
            al1_amis = filter_al1_amis(ec2, amis_instances_dict.keys())
            result[region].extend(
                    [instance_id for instance_ids in
                    [instances for ami, instances in amis_instances_dict.items() if ami in al1_amis]
                    for instance_id in instance_ids]
                    )
        return result
    
    
    def main():
        parser = argparse.ArgumentParser(
            prog='find_al1_instances',
            description='Find all EC2 instances running official Amazon Linux 1 AMIs',
            epilog='Note: This python script does not list EC2 instances running derived Amazon Linux 1 AMIs')
    
        parser.add_argument(
            '-r', '--regions', nargs='+',
            help='Space separated list of AWS regions names to search')
    
        args = parser.parse_args()
    
        account_id = boto3.client('sts').get_caller_identity()['Account']
        print(f"Using AWS account: {account_id}")
        regions = filter_regions(args.regions)
        output = find_al1_instances(regions)
        print("Found following EC2 instances in your AWS account running official Amazon Linux 1 AMIs:")
        print(json.dumps(output, indent=4, sort_keys=True))
    
    
    if __name__ == "__main__":
        main()
  2. 다음 명령을 실행하여 yum/apt-get/dnf에 종속 항목을 설치합니다.

    참고: 다음 명령은 yum 패키지 관리 유틸리티를 사용합니다. 이러한 명령은 apt-get 또는 dnf 도구에서도 작동합니다.

    sudo yum install python3-pip
    python3 -m pip install boto3

    참고: boto3 자격 증명이 없는 경우 Boto2 1.34.7 설명서 웹사이트의 자격 증명을 참조하십시오.

  3. 다음 명령을 실행하여 스크립트를 실행합니다.

    python3 find_al1_instances.py [-r REGIONS [REGIONS ...]]
AWS 공식
AWS 공식업데이트됨 일 년 전