Python boto3过滤RDS标记
问题描述:
我创建了一个python脚本来获取我的AWS RDS实例端点。Python boto3过滤RDS标记
#!/usr/bin/env python
import boto3`
rds = boto3.client('rds')
try:
# get all of the db instances
dbs = rds.describe_db_instances()
for db in dbs['DBInstances']:
print ("%[email protected]%s:%s %s") % (
db['MasterUsername'],
db['Endpoint']['Address'],
db['Endpoint']['Port'],
db['DBInstanceStatus'])
except Exception as error:
print error
它连接到RDS,我看到数据在dbs变量。
{u'DBInstances': [{u'PubliclyAccessible': False, u'MasterUsername': 'dbadmin', u'MonitoringInterval': 0, u'LicenseModel': 'general-public-license', ...
不幸的是,我有恩的错误:
File "rds2.py", line 7
for db in dbs['DBInstances']:
^
SyntaxError: invalid syntax`
你能告诉我什么是错?我的目标是通过TAG获得RDS端点(名称= APP1)。
谢谢。
答
这是您的Python缩进问题。
import boto3
rds = boto3.client('rds')
try:
# get all of the db instances
dbs = rds.describe_db_instances()
for db in dbs['DBInstances']:
print ("%[email protected]%s:%s %s") % (
db['MasterUsername'],
db['Endpoint']['Address'],
db['Endpoint']['Port'],
db['DBInstanceStatus'])
except Exception as error:
print error
答
就像helloV指出的那样,您的缩进是不正确的。如果你想找到标签查找数据库,你可能想用这个:
#!/usr/bin/env python
import boto3
rds = boto3.client('rds')
dbs = rds.describe_db_instances()
def get_tags_for_db(db):
instance_arn = db['DBInstanceArn']
instance_tags = rds.list_tags_for_resource(ResourceName=instance_arn)
return instance_tags['TagList']
target_db = None
for db in dbs['DBInstances']:
print ("%[email protected]%s:%s %s") % (
db['MasterUsername'],
db['Endpoint']['Address'],
db['Endpoint']['Port'],
db['DBInstanceStatus'])
db_tags = get_tags_for_db(db)
tag = next(iter(filter(lambda tag: tag['Key'] == 'Name' and tag['Value'] == 'APP1', db_tags)), None)
if tag:
target_db = db
break
print(target_db)
数据库实例你正在寻找将被存储为target_db
。 有关列出数据库实例标签的更多信息,请参阅this。
+0
谢谢,我会检查代码:) –
谢谢,我现在看! –