尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

详细介绍:Python + Flask + API Gateway + Lambda + EKS 实战

详细介绍:Python + Flask + API Gateway + Lambda + EKS 实战
📅 发布时间:2026/6/20 5:36:02

详细介绍:Python + Flask + API Gateway + Lambda + EKS 实战

Python 应用开发、数据库操作、Docker 容器、ECR 镜像仓库、EKS 部署、API Gateway + Lambda 架构。


一、Python + Flask 实战:CRUD & 数据库操作

支持数据的存储、查询、更新、删除(CRUD)。

示例代码:Flask + DynamoDB + RDS (Aurora)

from flask import Flask, request, jsonify
import boto3
import pymysql
app = Flask(__name__)
# DynamoDB
dynamodb = boto3.resource('dynamodb')
dynamo_table = dynamodb.Table('test')
# RDS 连接
def get_rds_connection():
return pymysql.connect(
host="xxx.cjqiw5vukltd.us-west-2.rds.amazonaws.com",
user="admin",
password="password",
db="demo",
cursorclass=pymysql.cursors.DictCursor
)
@app.route("/")
def home():
return "Hello World!"
# 1. 插入数据到 DynamoDB
@app.route("/order", methods=['POST'])
def create_order():
data = request.json
order = data['order']   # 分区键
value = data['value']
dynamo_table.put_item(Item={"order": order, "value": value})
return jsonify({"msg": "插入 DynamoDB 成功"})
# 2. 插入数据到 RDS
@app.route("/user", methods=['POST'])
def create_user():
data = request.json
with get_rds_connection() as conn:
with conn.cursor() as cursor:
sql = "INSERT INTO users (name, age) VALUES (%s, %s)"
cursor.execute(sql, (data['name'], data['age']))
conn.commit()
return jsonify({"msg": "插入 RDS 成功"})
# 3. 查询数据
@app.route("/order/", methods=['GET'])
def get_order(order_id):
response = dynamo_table.get_item(Key={"order": order_id})
return jsonify(response.get("Item", {}))
# 4. 更新数据
@app.route("/order/", methods=['PUT'])
def update_order(order_id):
data = request.json
dynamo_table.update_item(
Key={"order": order_id},
UpdateExpression="set value=:v",
ExpressionAttributeValues={":v": data['value']}
)
return jsonify({"msg": "更新成功"})
# 5. 删除数据
@app.route("/order/", methods=['DELETE'])
def delete_order(order_id):
dynamo_table.delete_item(Key={"order": order_id})
return jsonify({"msg": "删除成功"})
if __name__ == '__main__':
app.run(host="0.0.0.0", port=80, debug=True)

小结:

  • DynamoDB → 存储 NoSQL 数据(order 作为分区键)。

  • RDS → 存储结构化数据(users 表)。


二、Docker 构建 & 推送到 ECR

常见考点:将 Flask 应用容器化,推送到 AWS ECR。

Dockerfile 示例

FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]

快速命令

# 登录 ECR
aws ecr get-login-password --region us-east-1 | \
docker login --username AWS --password-stdin .dkr.ecr.us-east-1.amazonaws.com
# 构建 & 推送
docker build -t flask-demo .
docker tag flask-demo:latest .dkr.ecr.us-east-1.amazonaws.com/flask-demo:latest
docker push .dkr.ecr.us-east-1.amazonaws.com/flask-demo:latest

三、EKS 部署微服务

将 ECR 的镜像部署到 EKS 集群。

Deployment YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: flask-demo
spec:
replicas: 2
selector:
matchLabels:
app: flask-demo
template:
metadata:
labels:
app: flask-demo
spec:
containers:
- name: flask-demo
image: .dkr.ecr.us-east-1.amazonaws.com/flask-demo:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: flask-service
spec:
type: LoadBalancer
selector:
app: flask-demo
ports:
- port: 80
targetPort: 80

快速命令

# 创建集群
eksctl create cluster --name demo-cluster --region us-east-1 --nodes 2
# 更新 kubeconfig
aws eks update-kubeconfig --region us-east-1 --name demo-cluster
# 部署
kubectl apply -f deployment.yml
# 查看访问地址
kubectl get svc

四、API Gateway + Lambda 实现无服务器架构

写 Lambda 函数 → 绑定 API Gateway → 提供外部访问。

Lambda 示例 (lambda_function.py)

def lambda_handler(event, context):
name = event.get("queryStringParameters", {}).get("name", "World")
return {
"statusCode": 200,
"body": f"Hello, {name} from Lambda!"
}

快速命令

# 打包 & 上传
zip function.zip lambda_function.py
aws lambda create-function \
--function-name hello-lambda \
--runtime python3.9 \
--role arn:aws:iam:::role/lambda-role \
--handler lambda_function.lambda_handler \
--zip-file fileb://function.zip
# API Gateway 创建 & 绑定 Lambda
aws apigateway create-rest-api --name HelloAPI
# ... 省略 (提供 Console 操作更快)

五、速查表

模块服务快速命令
EC2aws ec2 run-instances快速启动
S3aws s3 mb / cp / ls上传下载
DynamoDBaws dynamodb put-item / get-itemNoSQL 操作
RDSmysql -h host -u user -p连接 SQL
Docker/ECRdocker build / push镜像推送
EKSeksctl create cluster + kubectl部署微服务
Lambdaaws lambda create-function无服务器
API GWConsole 快速绑定 Lambda提供 HTTP API

总结:

  • Python + Flask 负责 CRUD 逻辑

  • Docker + ECR + EKS 负责应用容器化和部署

  • Lambda + API Gateway 提供 Serverless API

  • DynamoDB + RDS 覆盖数据库题目

相关新闻

  • 实用指南:【设计模式】适配器模式 在java中的应用
  • 达梦数据库查询字段类型为Date 修改为DateTime
  • 详细介绍:PyTorch 神经网络工具箱

最新新闻

  • XXPermissions:Android权限管理的终极解决方案与实战指南
  • MongoDB 连接的幕后故事
  • 为什么Binding是Go Web开发者的必备工具:无反射数据绑定详解
  • 贝叶斯优化在低能电子衍射表面结构分析中的应用
  • Mobaxterm中文版终极指南:如何用一款工具解决所有远程管理难题?
  • 低代码表单在企业流程管理中的应用场景

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号