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中是否有任何提取标签的方法?
答案 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