如何以编程方式检索 Amazon RDS 推荐?

问题描述 投票:0回答:1

我想知道我的 RDS 实例是否使用上一代类型,我发现亚马逊提供了一个 RDS 建议,其中包括 RDS 实例是否使用上一代类型,但是我似乎找不到合适的 API 来检查亚马逊程序化推荐

我查看了 botocore3、AWS CLI 和 AWS RDS API,但我似乎找不到适合此 rds 的命令或 API:DescribeRecommendationGroups

我尝试的是使用 AWS 管理控制台查看 Amazon RDS Recommendations。并发现如果通过控制台使用上一代 RDS 实例,AWS 可以提供建议, 我试图查看是否可以通过 AWS CLI 或 boto3 执行相同的操作,但我只发现这只是权限

amazon-web-services boto3 amazon-rds
1个回答
0
投票

自 2023 年 5 月 7 日起,您可以看到 Amazon RDS 为您的数据库实例提供的最佳实践建议,包括如果您的数据库实例通过管理控制台使用上一代类型,则不支持通过 AWS CLI 获取 Amazon RDS 的建议或 AWS SDK。

但是,我会创建一个 python 脚本,它可以检查数据库实例是否使用了较早的生成类型以及是否有较新的生成类型。 该脚本将检查您的所有 RDS 实例,如果有可用的基于数据库引擎的新一代类型

def get_rds_instances():
    """Get all RDS instances"""
    rds = boto3.client('rds')
    db_instances = rds.describe_db_instances()
    for db_instance in db_instances['DBInstances']:
        db_instance_identifier = db_instance['DBInstanceIdentifier']
        new_instance_class = db_instance['DBInstanceClass'][3] + \
            str(int(db_instance['DBInstanceClass'][4]) + 1)
        db_instance_engine = db_instance['Engine']
        check_rds_instance_type(db_instance_identifier,
                                new_instance_class, db_instance_engine)


def check_rds_instance_type(db_instance_identifier: str,
                            db_instance_class: str, db_instance_engine: str):
    """Check if a RDS's instance type is using previous generation instance type"""
    rds = boto3.client('rds')
    orderable_db_instances = rds.describe_orderable_db_instance_options(
        Engine=db_instance_engine, MaxRecords=10000)
    available_instance_classes_query = "{DBInstanceClasses:*[].DBInstanceClass}"
    available_instance_classes = jmespath.search(
        expression=available_instance_classes_query, data=orderable_db_instances)
    new_family_types_query = f"DBInstanceClasses[?contains(@, `{db_instance_class}`) == `true`]"
    new_family_types = jmespath.search(
        expression=new_family_types_query, data=available_instance_classes)
© www.soinside.com 2019 - 2024. All rights reserved.