簡體   English   中英

如何在 AWS CDK 中復制和修改密鑰

[英]How to copy and modify a secret in AWS CDK

我在 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})

一種方法是先自行定義秘密,然后將其傳遞給您的其他資源。 您還可以根據您的機密值指定其他資源的憑據,例如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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM