我正在尝试编写一个lambda函数来取消分配专用主机
我需要过滤字典数据的帮助
这是代码
import boto3
client = boto3.client('ec2')
response = client.describe_hosts(Filters=[{'Name': 'state', 'Values':
['available']}])
print(response)
以上返回dict数据(2个专用主机)..到目前为止,我在网上看到的有关python的所有示例
这是什么主机>>>它与EC2实例的RESERVATION非常相似
{
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',
]
)
我试图找到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
答案 0 :(得分:0)
您的代码返回满足您已通过的过滤器的所有主机的列表,以及有关每个主机的元数据信息。如果您需要的只是这些主机中每个主机的hostID信息,则可以使用以下内容
HostIds=[]
for host in response['Hosts']:
HostIds.append(host['hostID'])
HostIds_string = ','.join(HostIds)