繁体   English   中英

Python boto3过滤RDS标签

[英]Python boto3 filtering RDS tag

我创建了一个 python 脚本来获取我的 AWS 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 ("%s@%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(名称 = APP1)获取 RDS 端点。

谢谢。

就像 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 ("%s@%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 有关列出数据库实例标签的更多信息,请参阅

你的 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 ("%s@%s:%s %s") % (
            db['MasterUsername'],
            db['Endpoint']['Address'],
            db['Endpoint']['Port'],
            db['DBInstanceStatus'])
except Exception as error:
    print error

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM