代码之家  ›  专栏  ›  技术社区  ›  Jack

使用一组过滤器的给定区域中的最新AMI ID

  •  1
  • Jack  · 技术社区  · 6 年前

    我正在尝试运行下面的代码,但是我在执行时有错误,请您提供有关更改的建议。

    latest-ami

        [ec2-user@ip-XXXXXXXX ~]$ python latest-ami.py us-west-2
    {u'Images': [], 'ResponseMetadata': {'RetryAttempts': 0, 'HTTPStatusCode': 200, 'RequestId': '01ef1583-e7bc-4279-9081-28cbf9345f7c', 'HTTPHeaders': {'date': 'Wed, 01 Aug 2018 12:00:01 GMT', 'content-length': '219', 'content-type': 'text/xml;charset=UTF-8', 'server': 'AmazonEC2'}}}
    [ec2-user@ip-172-31-19-75 ~]$ python latest-ami.py us-west-1
    {u'Images': [], 'ResponseMetadata': {'RetryAttempts': 0, 'HTTPStatusCode': 200, 'RequestId': 'e61cdeb3-e44b-4e4e-bf4e-ed4681529757', 'HTTPHeaders': {'date': 'Wed, 01 Aug 2018 12:06:00 GMT', 'content-length': '219', 'content-type': 'text/xml;charset=UTF-8', 'server': 'AmazonEC2'}}}
    [ec2-user@ip-XXXXXXXXXXX ~]$
    

    我希望输出如下:

    $ latest-ami.py us-west-2
    ami-b04e92d0
    

    我的代码现在看起来像是在原始代码的最后三行下面 最新ami

    source_image = newest_image(response['Images'])
    #print(source_image['ImageId'])
    print(response)
    

    过滤器如下:

    filters = [ {
            'Name': 'name',
            'Values': ['amzn-ami-hvm-*']
        },{
            'Name': 'description',
            'Values': ['Amazon Linux AMI*']
        },{
            'Name': 'architecture',
            'Values': ['x86_64']
        },{
            'Name': 'owner-alias',
            'Values': ['amazon']
        },{
            'Name': 'owner-id',
            'Values': ['000000000000']
        },{
            'Name': 'state',
            'Values': ['available']
        },{
            'Name': 'root-device-type',
            'Values': ['ebs']
        },{
            'Name': 'virtualization-type',
            'Values': ['hvm']
        },{
            'Name': 'hypervisor',
            'Values': ['xen']
        },{
            'Name': 'image-type',
            'Values': ['machine']
        } ]
    
    response = client.describe_images(Owners=['amazon'], Filters=filters)
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Rhythem Aggarwal    6 年前

    执行脚本时,脚本正在从命令行中查找参数值。

    第8行: region = sys.argv[1]

    sys.argv 存储脚本运行期间提供的命令行值和脚本名。

    sys.argv[0] :脚本名称

    sys.argv[1] :第一个命令行值

    试着像这样运行代码: python latest-ami.py us-east-1

    取决于您想在哪个区域运行代码来更改我为region提供的值。

    要获取图像id: print(source_image['ImageId']) 将此命令添加到代码中

    推荐文章