首页
/ SST项目中使用AWS Aurora MySQL数据库的实践指南

SST项目中使用AWS Aurora MySQL数据库的实践指南

2025-07-05 06:10:39作者:卓艾滢Kingsley

概述

在现代云原生应用开发中,数据库是核心组件之一。本文将详细介绍如何在SST框架中配置和使用AWS Aurora MySQL数据库服务。Aurora是AWS提供的高性能关系型数据库服务,与MySQL完全兼容但性能更优。

环境配置

首先,我们需要在sst.config.ts文件中定义应用的基本配置:

export default $config({
  app(input) {
    return {
      name: "aws-aurora-mysql",
      removal: input?.stage === "production" ? "retain" : "remove",
      home: "aws",
    };
  },
  // ...
});

这段代码定义了应用名称为"aws-aurora-mysql",并设置了资源删除策略:生产环境保留资源,非生产环境则移除资源。

VPC网络配置

为了安全地部署Aurora数据库,我们需要先配置VPC(虚拟私有云):

const vpc = new sst.aws.Vpc("MyVpc", {
  nat: "ec2",
  bastion: true,
});

这里我们创建了一个VPC,并启用了两个重要特性:

  1. nat: "ec2" - 使用EC2实例作为NAT网关
  2. bastion: true - 启用堡垒主机功能,便于本地开发调试

创建Aurora MySQL数据库

接下来是核心部分 - 创建Aurora MySQL数据库实例:

const mysql = new sst.aws.Aurora("MyDatabase", {
  engine: "mysql",
  vpc,
});

这个配置创建了一个MySQL兼容的Aurora数据库集群,并将其部署在我们刚刚创建的VPC中。SST框架会自动处理许多底层细节,如安全组配置、子网分配等。

函数应用集成

为了展示数据库的实际使用,我们创建一个Lambda函数并将其连接到数据库:

new sst.aws.Function("MyApp", {
  handler: "index.handler",
  link: [mysql],
  url: true,
  vpc,
});

关键点说明:

  • link: [mysql] - 将函数与数据库实例链接,自动注入连接信息
  • url: true - 为函数生成可访问的URL
  • vpc - 确保函数运行在与数据库相同的VPC中

数据库连接实践

在函数代码中,我们可以这样连接数据库:

const connection = await mysql.createConnection({
  database: Resource.MyDatabase.database,
  host: Resource.MyDatabase.host,
  port: Resource.MyDatabase.port,
  user: Resource.MyDatabase.username,
  password: Resource.MyDatabase.password,
});

SST会自动将数据库连接信息注入到Resource对象中,避免了硬编码敏感信息。

本地开发支持

为了方便本地开发,SST提供了隧道功能:

  1. 首先安装隧道工具(只需执行一次):
sudo npx sst tunnel install
  1. 然后启动开发环境:
npx sst dev

隧道功能通过堡垒主机建立安全连接,使开发者可以直接从本地机器访问VPC内的数据库资源。

输出数据库信息

最后,我们返回数据库连接信息供其他资源使用:

return {
  host: mysql.host,
  port: mysql.port,
  username: mysql.username,
  password: mysql.password,
  database: mysql.database,
};

最佳实践建议

  1. 生产环境安全:在实际生产环境中,应考虑使用AWS Secrets Manager管理数据库凭证,而非直接暴露在输出中。

  2. 性能调优:根据应用负载调整Aurora实例规格,SST支持通过配置参数指定实例类型。

  3. 备份策略:生产环境应配置适当的备份保留策略和快照计划。

  4. 监控告警:集成CloudWatch监控数据库性能指标,设置合理的告警阈值。

通过SST框架,开发者可以轻松地在AWS上部署和管理Aurora MySQL数据库,同时保持开发和生产环境的一致性。框架提供的抽象层简化了基础设施配置,让开发者可以更专注于业务逻辑的实现。