首页 > 解决方案 > Boto3 API RDS:获取函数接受的参数列表

问题描述

我正在使用 boto3 API,尤其是 RDS 客户端,根据参数列表及其关联值修改 RDS 实例。在调用该modify_db_instance()函数之前,我想验证用户提供的参数以确保它们可以传递给 modify 函数(这些参数也将在其他地方使用;因此,它们可能会被某些 boto 函数接受,但不能被其他函数接受)。

如果我要执行修改函数并提供一个无效参数,我会收到一个ParamValidationError来自 boto 的信息,以及所有可接受参数的列表。我想以编程方式检索此列表。Boto3 文档建议我使用该describe_valid_db_instance_modifications()函数 - 我得到的响应确实类似于此处文档中描述的内容,但我明确地寻找一个参数列表,我没有从该函数中获得。我想不出一种以编程方式执行此操作的方法。

谢谢!

标签: amazon-web-servicesboto3amazon-rds

解决方案


这些 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())

推荐阅读