gpt4 book ai didi

Python boto3 过滤RDS标签

转载 作者:太空宇宙 更新时间:2023-11-03 14:43:30 25 4
gpt4 key购买 nike

我创建了一个 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 的 RDS 端点(名称 = APP1)。

谢谢。

最佳答案

就像 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。有关列出数据库实例标签的更多信息,请参阅 this .

关于Python boto3 过滤RDS标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46426396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com