【问题标题】:How to copy and modify a secret in AWS CDK如何在 AWS CDK 中复制和修改密钥
【发布时间】: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})

【问题讨论】:

    标签: python aws-cdk


    【解决方案1】:

    一种方法是先自行定义秘密,然后将其传递给您的其他资源。您还可以根据您的秘密值指定其他资源的凭据,例如secret_value_from_json("username").to_string()secret_value_from_json("password")

    见: https://docs.aws.amazon.com/cdk/api/latest/python/aws_cdk.aws_secretsmanager/README.html

    【讨论】:

      猜你喜欢
      • 2020-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-23
      • 2020-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多