Boto3 API RDS: получить список параметров, принятых функцией - PullRequest
1 голос
/ 27 февраля 2020

Я использую API boto3, в частности клиент RDS, для изменения экземпляра RDS на основе списка параметров и связанных с ними значений. Перед вызовом функции modify_db_instance() я хочу проверить предоставленные пользователем параметры, чтобы убедиться, что они могут быть переданы в функцию модификации (параметры также будут использоваться в другом месте; таким образом, они могут быть приняты некоторыми функциями boto, но не другие).

Если бы я выполнил функцию модификации и предоставил недопустимый параметр, я бы получил ParamValidationError от boto, а также список всех допустимых параметров. Я хотел бы получить этот список программно. Документы Boto3 предполагают, что я использую функцию describe_valid_db_instance_modifications() - ответ, который я получаю, действительно похож на то, что описано в документах здесь , но я явно ищу список параметров, которые я не делаю получить от этой функции. Я не могу найти способ программно сделать это.

Спасибо!

1 Ответ

0 голосов
/ 27 февраля 2020

Допустимые аргументы для этих функций boto3 не жестко закодированы в самой сигнатуре функции, поэтому это немного сложнее, чем использовать что-то вроде inspect.getargspec. Это, конечно, немного запутанно, но работает:

import urllib3
import json

url = 'https://raw.githubusercontent.com/boto/botocore/develop/botocore/data/rds/2014-10-31/service-2.json'

http = urllib3.PoolManager()
r = http.request('GET', url)
data = json.loads(r.data)
print(data['shapes']['ModifyDBInstanceMessage']['members'].keys())
...