如何用Python AWS CDK创建带数据表的Aurora 3 MySQL数据库
用Python AWS CDK创建含Aurora 3 MySQL及关联数据表的堆栈
核心实现步骤
1. 安装依赖
确保本地已安装所需的CDK库:
pip install aws-cdk-lib aws-cdk.aws-rds aws-cdk.aws-ec2
2. 完整CDK代码示例
创建堆栈类,包含Aurora集群搭建、表结构初始化逻辑:
from aws_cdk import ( Stack, aws_rds as rds, aws_ec2 as ec2, CfnOutput, ) from constructs import Construct class AuroraMysqlStack(Stack): def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: super().__init__(scope, construct_id, **kwargs) # 创建VPC(若已有可用VPC,可替换为导入现有资源) vpc = ec2.Vpc(self, "AuroraVpc", max_azs=2, subnet_configuration=[ ec2.SubnetConfiguration( name="Public", subnet_type=ec2.SubnetType.PUBLIC ), ec2.SubnetConfiguration( name="Private", subnet_type=ec2.SubnetType.PRIVATE_ISOLATED ) ] ) # 搭建Aurora 3 MySQL集群 aurora_cluster = rds.DatabaseCluster(self, "AuroraMysqlCluster", engine=rds.DatabaseClusterEngine.aurora_mysql( version=rds.AuroraMysqlEngineVersion.VER_3_03_0 ), credentials=rds.Credentials.from_generated_secret("admin"), instance_props=rds.InstanceProps( vpc=vpc, vpc_subnets=ec2.SubnetSelection(subnet_type=ec2.SubnetType.PRIVATE_ISOLATED), instance_type=ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE3, ec2.InstanceSize.SMALL) ), instances=1, default_database_name="mydb" ) # 定义表结构SQL脚本 init_sql = """ CREATE TABLE IF NOT EXISTS table1 ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL ); CREATE TABLE IF NOT EXISTS table2 ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, table1_id INT NOT NULL, data TEXT NOT NULL, FOREIGN KEY (table1_id) REFERENCES table1(id) ON DELETE CASCADE ); """ # 绑定初始化脚本,集群启动后自动执行 rds.DatabaseInstance.from_database_instance_attributes( self, "ClusterInstanceRef", instance_identifier=aurora_cluster.instance_identifiers[0], port=aurora_cluster.cluster_endpoint.port, security_groups=aurora_cluster.connections.security_groups, instance_endpoint_address=aurora_cluster.cluster_endpoint.hostname ).add_init_command(rds.InitCommand.sql(init_sql)) # 输出关键资源信息 CfnOutput(self, "ClusterEndpoint", value=aurora_cluster.cluster_endpoint.hostname) CfnOutput(self, "AdminSecretArn", value=aurora_cluster.secret.secret_arn)
3. 部署操作
- 若为新项目,先初始化CDK环境:
cdk init app --language python
- 将上述代码替换项目中
app.py的堆栈定义 - 执行部署:
cdk deploy
关键细节说明
- VPC配置:示例新建了VPC,如需用现有VPC,可通过
ec2.Vpc.from_lookup方法导入 - 表初始化:通过
add_init_command绑定SQL脚本,确保集群就绪后自动创建表和外键约束 - 访问控制:CDK会自动配置基础安全组规则,若需外部客户端访问,需手动添加入站规则开放MySQL端口(3306)
内容的提问来源于stack exchange,提问作者TheMemeMachine
相关产品推荐
相关产品推荐

