从静态存储到托管数据库:学习 Amazon RDS、DynamoDB 与 AWS Lambda(第5天)
Source: Dev.to
抱歉,我目前无法访问外部链接获取文章内容。请您直接粘贴需要翻译的文本,我将为您提供简体中文翻译。
🚀 目标
今天的目标是了解云应用程序如何管理和处理数据。
重点领域包括:
- 部署受管关系型数据库并将应用服务器连接到该数据库
- 学习 NoSQL 数据库架构
- 使用无服务器函数执行后端逻辑
这涉及三个关键的 AWS 服务:
- Amazon RDS
- Amazon DynamoDB
- AWS Lambda
🗄️ 第一步:了解 Amazon RDS
Amazon RDS(关系型数据库服务)是一项托管的数据库服务,抽象了常见的运维任务:
- 操作系统补丁
- 备份
- 高可用性配置
- 扩展
支持的引擎包括 MySQL、PostgreSQL、MariaDB、Oracle Database 和 Microsoft SQL Server。
为了练习,我创建了一个 MySQL RDS 实例。
⚙️ 第2步:启动 RDS 数据库
使用 AWS 控制台,我创建了一个符合免费套餐条件的实例,配置如下:
| 参数 | 值 |
|---|---|
| Engine | MySQL |
| Instance type | db.t3.micro |
| Storage | 20 GB |
| Region | Mumbai (ap‑south‑1) |
| Public accessibility | Enabled (for testing) |
创建完成后,AWS 提供了一个数据库端点,例如:
mydb.xxxxxx.ap-south-1.rds.amazonaws.com
该端点即为应用程序连接数据库时使用的地址。
🔗 第3步:连接 EC2 与 RDS
要将 Amazon EC2 实例与 RDS 数据库关联,我执行了以下步骤:
- 安全组配置 – 允许来自 EC2 安全组的入站 MySQL 流量(端口 3306)。
- 使用 RDS 终端节点 – 在连接字符串中引用该终端节点。
- 通过 MySQL 客户端连接 – 在 EC2 服务器上执行
mysql -h <endpoint> -u <user> -p。
连接成功后,我可以:
- 创建数据库和表
- 插入和检索数据
这展示了一个典型模式,即应用服务器与托管的关系型数据库进行交互。
🧩 第4步:了解 DynamoDB(NoSQL)
Amazon DynamoDB 是一种完全托管的 NoSQL 服务,旨在实现高可扩展性和低延迟。数据组织为:
- 表 – 项目的容器
- 项 – 类似于行
- 属性 – 类似于列
主要优势
- 自动扩展
- 毫秒级延迟
- 无服务器架构
- 完全托管的基础设施
典型使用场景包括移动应用、游戏后端、实时分析以及其他无服务器工作负载。
⚡ 第5步:使用 AWS Lambda 运行无服务器代码
AWS Lambda 让开发者无需预置或管理服务器即可运行代码。函数仅在被触发时执行,例如:
- 通过 API Gateway 的 API 请求
- S3 文件上传
- DynamoDB 流
- 定时的 CloudWatch 事件
为了练习,我创建了一个在 DynamoDB 表上执行 CRUD 操作的 Lambda 函数。其流程如下:
- 客户端请求 → 通过 API Gateway 触发 Lambda
- Lambda 执行 → 与 DynamoDB 交互
- 响应 → 返回给客户端
Lambda 抽象了基础设施、扩展和执行环境,使开发者能够专注于业务逻辑本身。
🧠 关键技术要点
- Amazon RDS 提供托管的关系型数据库,负责补丁、备份和扩展。
- EC2 应用 可以通过端点和适当的安全组安全地连接到 RDS。
- SQL 与 NoSQL:关系型数据库强制模式;DynamoDB 提供灵活的无模式存储,并具备自动扩展能力。
- DynamoDB 在高吞吐量、低延迟的工作负载中表现出色。
- AWS Lambda 实现无服务器后端逻辑,自动管理计算资源。
- 无服务器架构 简化基础设施管理,并实现快速扩展。
核心认识:云平台为开发者提供灵活性,可根据应用需求在传统服务器、对象存储或无服务器服务之间选择最合适的架构。
🎯 反思
在短短几天的云工程学习中,我已经探索了三种不同的部署模型:
| 天数 | 技术 | 主要使用场景 |
|---|---|---|
| 3 | Amazon EC2 + Nginx | 完全控制的服务器托管 |
| 4 | Amazon S3(静态网站) | 轻量、成本效益高的静态托管 |
| 5 | Amazon RDS、DynamoDB、Lambda | 可扩展的后端和无服务器架构 |
每种方法都解决不同的问题,了解何时使用它们是高效云工程的关键。旅程仍在继续——更多探索在前方! 🚀