You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 11:41:06