有没有办法使用 boto3 获取 RDS 实例的标签?

Is there anyway to fetch tags of a RDS instance using boto3?

rds_client = boto3.client('rds', 'us-east-1')
instance_info = rds_client.describe_db_instances( DBInstanceIdentifier='**myinstancename**')

但是 instance_info 不包含我在 RDS 实例中设置的任何标签。我想获取其中包含 env='production' 的实例,并想排除 env='test'。 boto3 中是否有任何方法也可以获取标签?

只能通过boto3.client("rds").list_tags_for_resource

Lists all tags on an Amazon RDS resource. ResourceName (string) -- The Amazon RDS resource with tags to be listed. This value is an Amazon Resource Name (ARN). For information about creating an ARN, see Constructing an RDS Amazon Resource Name (ARN) .

import boto3
rds_client = boto3.client('rds', 'us-east-1')
db_instance_info = rds_client.describe_db_instances(
    DBInstanceIdentifier='**myinstancename**')

for each_db in db_instance_info['DBInstances']: 
    response = rds_client.list_tags_for_resource(
    ResourceName=each_db['DBInstanceArn'],
    Filters=[{
            'Name': 'env',
            'Values': [
                'production',
            ]
        }])

要么在简单的过滤器上使用简单的排除,要么您可以深入了解文档以使用以下方法构建复杂的 JMESPath 过滤器 paginators.

注意:AWS 资源标签不是通用实施。因此,您必须始终参考 boto3 文档。

Python 程序将向您展示如何列出所有 rds 实例,包括类型和状态。 list_rds_instances.py

import boto3

#connect ot rds instance
client = boto3.client('rds')

#rds_instance will have all rds information in dictionary.
rds_instance = client.describe_db_instances()

all_list = rds_instance['DBInstances']

print('RDS Instance Name \t| Instance Type \t| Status')

for i in rds_instance['DBInstances']:
    dbInstanceName = i['DBInstanceIdentifier']
    dbInstanceEngine = i['DBInstanceClass']
    dbInstanceStatus = i['DBInstanceStatus']
    print('%s \t| %s \t| %s' %(dbInstanceName, dbInstanceEngine, dbInstanceStatus))

重要说明:使用 boto3 时,您需要在两个文件中设置您的凭据 ~/.aws/credentials~/.aws/config

~/.aws/credentials
[default]
aws_access_key_id=<ACCESS_KEY>
aws_secret_access_key=<SECRET_KEY>

~/.aws/config
[default]
region=ap-south-1