[英]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.