无论如何使用boto3获取RDS实例的标签?

时间:2017-03-21 19:03:31

标签: amazon-web-services amazon-rds 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中是否有任何提取标签的方法?

2 个答案:

答案 0 :(得分:2)

仅通过boto3.client(" rds")。list_tags_for_resource

  

列出Amazon RDS资源上的所有代码。   ResourceName(字符串) -   要列出标记的Amazon RDS资源。此值是Amazon资源名称(ARN)。有关创建ARN的信息,请参阅构建RDS Amazon资源名称(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文档。

答案 1 :(得分:0)

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