【发布时间】:2021-04-08 20:25:57
【问题描述】:
我在 python 中有一个 CDK 应用程序,它创建一个 Postgres RDS 数据库。我让 DatabaseCluster 为数据库管理员用户生成一个秘密。我想获取该秘密并创建 2 个其他秘密,除了端点之外的所有内容都相同(一个用于 RDS 代理,一个用于使用只读副本)。我不确定我会如何做到这一点,并且不会在 Cloudformation 中暴露原始密码的情况下安全地做到这一点。
from aws_cdk import core as cdk
from aws_cdk.aws_ec2 import InstanceType, IVpc, Peer, Port, SecurityGroup, SubnetSelection, SubnetType
from aws_cdk.aws_rds import AuroraPostgresEngineVersion, Credentials, DatabaseCluster, DatabaseClusterEngine, InstanceProps
class AuroraPostgresRdsModule(cdk.Construct):
def __init__(self, scope: cdk.Construct, construct_id: str, vpc: IVpc, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)
self.rds = DatabaseCluster(
self,
"rds",
engine=DatabaseClusterEngine.aurora_postgres(version=AuroraPostgresEngineVersion.VER_11_9),
instance_props=InstanceProps(vpc=vpc),
instances=2,
default_database_name="test"
)
self.rds_proxy = self.rds.add_proxy(
"rds-proxy",
secrets=[self.rds.secret],
vpc=vpc
)
# How to do this???
# self.proxy_secret = self.rds.secret.copy(updates={"host": self.rds_proxy.endpoint})
# self.replica_secret = self.rds.secret.copy(updates={"host": self.rds.cluster_read_endpoint})
【问题讨论】: