AWS Secret Manager仅从RDS群集返回了主主机。从主机不返回

时间:2019-07-18 06:03:41

标签: python amazon-web-services aws-lambda aws-secrets-manager

我正在用python语言创建一个AWS lambda以从RDS(Aurora)中获取数据。 RDS凭证存储在AWS Secret Manager中。在创建机密时,要求我选择RDS群集。选定的RDS群集具有主主机和从属主机。 但是,当我通过访问使用密钥管理器创建的密钥在lambda中获取凭据时,它仅返回该群集中的主主机,而不返回从属主机。 有什么方法可以访问从属主机?

代码:

def get_secret():
    secret_name = "abc"
    region_name = "xyz"

    session = boto3.session.Session()
    client = session.client(
        service_name='secretsmanager',
        region_name=region_name
    )
    try:
        get_secret_value_response = client.get_secret_value(
            SecretId=secret_name
        )
    except ClientError as e:
        print(e)
    else:
        if 'SecretString' in get_secret_value_response:
            secret = get_secret_value_response['SecretString']
            #Print Credentials
            print(secret)

输出:

{"username":"xxxxx","password":"yyyyyyy","engine":"mysql","host":"**returned only master host here**","port":1234,"dbClusterIdentifier":"aaaaaaaaa"}

1 个答案:

答案 0 :(得分:1)

主服务器和从服务器上的密码(实际密码)相同。由于Secrets Manager只需要知道母带即可完成轮换,因此它存储在秘密中的全部内容。

通常,应用程序仅连接到主服务器,以便它们可以写入数据。如果要连接到只读从属服务器(例如,卸载主服务器),则可能必须调用describe db clusters才能获取从属端点。但是,这并不总是一个好主意。如果从属设备承受重负载,则与主设备同步可能会失败,从而使其处于损坏状态。我以前在MySQL上已经看到过这一点,它需要手动操作来恢复从服务器。