python-3.x - 如何在python中为aws boto3 ec2专用主机过滤字典数据
问题描述
我正在尝试编写一个 lambda 函数来解除分配专用主机
我需要帮助过滤 dict 数据
这是代码
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',
]
)
简而言之,我想使用 python 描述主机,获取主机 ID 并提供主机 ID 给 release_host
我试图找到 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
解决方案
您的代码会返回满足您传递的过滤器的所有主机的列表以及有关每个主机的元数据信息。如果您只需要来自每个主机的 hostID 信息,您可以使用如下所示的内容
HostIds=[]
for host in response['Hosts']:
HostIds.append(host['hostID'])
HostIds_string = ','.join(HostIds)
推荐阅读
- react-native - 如何以编程方式获取 Shopify API
- dataframe - 从 dict 的 Dask 系列创建一个 Dask DataFrame
- cocoapods - CocoaPods 后备箱没有规格
- c++ - 使用 WASAPI 捕获蓝牙音频数据
- java - Java 对象类动态绑定
- spring-boot - 在 Api Gateway 中拦截请求
- wordpress - 控制台日志错误(索引):1 指向哪里?
- python-3.x - 了解 Python Pandas 中的滚动窗口
- git - Git 仅添加/提交移动而不添加内容更改
- runtime-error - UnhandledPromiseRejectionWarning: DiscordAPIError: Unknown Message