使用一组过滤器的给定区域中的最新 AMI ID
Latest AMI ID in a given Region using a set of filters
我正在尝试运行下面的代码,但是我在执行时出现错误,能否请您提出更改建议。
[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 行:
region = sys.argv[1]
sys.argv
存储脚本期间提供的命令行值 运行 以及脚本名称。
sys.argv[0]
: 脚本名称
sys.argv[1]
: 第一个命令行值
尝试 运行 像这样修改您的代码:python latest-ami.py us-east-1
取决于你想在哪个地区运行你的代码改变我为地区提供的值。
要获取图像 ID:print(source_image['ImageId'])
将此命令添加到您的代码中
我正在尝试运行下面的代码,但是我在执行时出现错误,能否请您提出更改建议。
[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 行:
region = sys.argv[1]
sys.argv
存储脚本期间提供的命令行值 运行 以及脚本名称。
sys.argv[0]
: 脚本名称
sys.argv[1]
: 第一个命令行值
尝试 运行 像这样修改您的代码:python latest-ami.py us-east-1
取决于你想在哪个地区运行你的代码改变我为地区提供的值。
要获取图像 ID:print(source_image['ImageId'])
将此命令添加到您的代码中