Query EC2 tags from within instance

前端 未结 14 1774
暗喜
暗喜 2020-12-02 05:57

Amazon recently added the wonderful feature of tagging EC2 instances with key-value pairs to make management of large numbers of VMs a bit easier.

Is there some way

14条回答
  •  谎友^
    谎友^ (楼主)
    2020-12-02 06:39

    For Python:

    from boto import utils, ec2
    from os import environ
    
    # import keys from os.env or use default (not secure)
    aws_access_key_id = environ.get('AWS_ACCESS_KEY_ID', failobj='XXXXXXXXXXX')
    aws_secret_access_key = environ.get('AWS_SECRET_ACCESS_KEY', failobj='XXXXXXXXXXXXXXXXXXXXX')
    
    #load metadata , if  = {} we are on localhost
    # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AESDG-chapter-instancedata.html
    instance_metadata = utils.get_instance_metadata(timeout=0.5, num_retries=1)
    region = instance_metadata['placement']['availability-zone'][:-1]
    instance_id = instance_metadata['instance-id']
    
    conn = ec2.connect_to_region(region, aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key)
    # get tag status for our  instance_id using filters
    # http://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/ApiReference-cmd-DescribeTags.html
    tags = conn.get_all_tags(filters={'resource-id': instance_id, 'key': 'status'})
    if tags:
        instance_status = tags[0].value
    else:
        instance_status = None
        logging.error('no status tag for '+region+' '+instance_id)
    

提交回复
热议问题