Как отфильтровать данные словаря в Python для AWS Boto3 EC2 выделенного хоста - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь написать лямбда-функцию для освобождения выделенных хостов

Мне нужна помощь в фильтрации данных dict

Вот код

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

Вышеприведенные данные возвращают данные dict (2 выделенных хоста). Пока что все примеры, которые я видел в Интернете о питоне

Что это за ХОСТЫ >>> Это очень похоже на БРОНИРОВАНИЕ для 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, получать хосты и предоставлять хосты для release_host, используя python

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

Я пытался найти пример кода для description_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

1 Ответ

0 голосов
/ 24 января 2019

Ваш код возвращает список всех хостов, которые удовлетворяют пройденным вами фильтрам, вместе с информацией метаданных о каждом из этих хостов.Если вам нужна только информация об идентификаторе хоста для каждого из этих хостов, вы можете использовать что-то вроде ниже

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

HostIds_string = ','.join(HostIds)
...