Как правильно фильтровать или запрашивать инстансы базы данных AWS RDS на основе состояния: доступно с помощью Python? - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь получить количество экземпляров RDS DB из Консоли AWS с помощью Python.

Я могу получить значения из AWS RDS, но не могу получить количество на основе их Status: Available.

Вот мой код:

client3 = boto3.client('rds', aws_access_key_id=access_key, 
aws_secret_access_key=secret_key,region_name=region)
rds = client3.describe_db_instances().filter(query=[{'Name': 'status', 
'Values': ['available']}])  # Throws Error as filter and query are no 
 attributes
for rdsdb in rds['DBInstances']:#['DBInstanceStatus'=='available']:
  rds_count.append(rdsdb)
f.writerow(('p_rds_count', len(rds_count)))
print("rds->" + str(len(rds_count)))

Вывод:

 rds = client3.describe_db_instances().filter(query=[{'Name': 'status', 
 'Values': ['available']}]) AttributeError: 'dict' object has no attribute 
 'filter'

Как это сделать?

Консоль AWS должна выглядеть следующим образом:

Status
available

1 Ответ

0 голосов
/ 13 сентября 2018

Вы можете просто проверить состояние всех возвращенных экземпляров:

import boto3

rds_client = boto3.client('rds')

instances = rds_client.describe_db_instances()

available = [i['DBInstanceIdentifier'] for i in instances['DBInstances'] if i['DBInstanceStatus'] == 'available']

print len(available)
...