如何在python中为awsboto3ec2专用主机过滤字典数据



我正试图编写一个lambda函数来解除分配专用主机

我需要帮助过滤dict数据

这是代码

import boto3 
client = boto3.client('ec2')
response = client.describe_hosts(Filters=[{'Name': 'state', 'Values': 
['available']}])
print(response)

以上返回dict数据(2个专用主机)。。到目前为止,我在网上看到的所有关于python 的例子

这个主机是什么>>它与EC2实例的预订非常相似

{
u'Hosts': [
{
u'HostId': 'h-0e9--some-ID',
u'Tags': [
],
u'HostProperties': {
u'Cores': 36,
u'TotalVCpus': 72,
u'InstanceType': 'c5.large',
u'Sockets': 2
},
u'Instances': [
],
u'State': 'available',
u'AvailabilityZone': 'us-east-1a',
u'AvailableCapacity': {
u'AvailableInstanceCapacity': [
{
u'AvailableCapacity': 36,
u'InstanceType': 'c5.large',
u'TotalCapacity': 36
}
],
u'AvailableVCpus': 72
},
u'AllocationTime': datetime.datetime(2019,
1,
24,
4,
30,
48,
tzinfo=tzlocal()),
u'AutoPlacement': 'off'
},
{
u'HostId': 'h-0e9--some-ID',
u'Tags': [
],
u'HostProperties': {
u'Cores': 36,
u'TotalVCpus': 72,
u'InstanceType': 'c5.large',
u'Sockets': 2
},
u'Instances': [
],
u'State': 'available',
u'AvailabilityZone': 'us-east-1a',
u'AvailableCapacity': {
u'AvailableInstanceCapacity': [
{
u'AvailableCapacity': 36,
u'InstanceType': 'c5.large',
u'TotalCapacity': 36
}
],
u'AvailableVCpus': 72
},
u'AllocationTime': datetime.datetime(2019,
1,
24,
4,
30,
48,
tzinfo=tzlocal()),
u'AutoPlacement': 'off'
}
],

我想使用输出来过滤HostId和状态"可用",并使用下面的api 发布它们

response = client.release_hosts(
HostIds=[
'string',
]
)

简而言之,我想描述_host,获取hostid,并使用python向release_host提供hostid

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html#EC2.Client.release_hosts

我试图找到describe_instance和start_instance或stop_instance或terminate_instance的示例代码,但无法使其成为

例如,对于EC2,有一些保留,对于专用主机,我注意到了主机。。我真的不明白。。请告诉我

典型的字典my_dict={‘name’:‘Jack’,‘age’:26}

对于s3>它与上面的字典示例非常相似。。。对于ec2来说,它令人困惑。

s3client = boto3.client('s3')
list_buckets_resp = s3client.list_buckets()
for bucket in list_buckets_resp['Buckets']:
print bucket

您的代码返回满足您传递的过滤器的所有主机的列表,以及关于每个主机的元数据信息。如果你只需要这些主机的主机ID信息,你可以使用下面的

HostIds=[]
for host in response['Hosts']:
HostIds.append(host['hostID'])
HostIds_string = ','.join(HostIds)

最新更新