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

标签 python amazon-web-services amazon-ec2 aws-cloudformation amazon-ami

我正在尝试运行下面的代码,但是在执行时出现错误,您能否建议我进行更改。

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

我的代码现在如下所示:原始 latest-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)

最佳答案

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

第 8 行: 区域 = sys.argv[1]

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

sys.argv[0]:脚本名称

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

尝试像这样运行您的代码:pythonlatest-ami.py us-east-1

根据您想要运行代码的区域,更改我为区域提供的值。

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

关于python - 使用一组过滤器在给定区域中最新的 AMI ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51630229/

相关文章:

python scrapy足球数据

php - Codeigniter:无法找到模型

ubuntu - 使用 AWS 用户数据运行 Capistrano 部署任务

python - 如何使用 python/boto 获取最新的 aws 卷快照 id#?

amazon-ec2 - Amazon Dynamo DB max客户端连接?

python - 如何使用 Pandas 将多索引系列连接到单个索引数据框?

python - 机器学习中损失率高的恒定验证准确性

amazon-web-services - 亚马逊 AWS ECS 任务延迟

python - 相对导入和目录结构(万亿次)

amazon-web-services - 使用 AWS::AutoScaling::LaunchConfiguration BlockDeviceMapping BlockDevice 中的 'Encrypted' 属性来加密 EBS 根卷