[AWS] 04 - Serverless & Lambda
因为 Lambda 所以 Serverless
一、是什么
-
进化过程
课程章节:https://edu.51cto.com//center/course/lesson/index?id=199646
-
作用和优势
event --> 胶水 --> server
- 无需维护
- 天然高可用
- 自动扩展
- 按调用付费
- 安全可靠
二、需求场景
-
触发的事件
这是一个IOT的例子,用来学习实践。
-
“一键呼叫” 项目
(1) 客户按下IoT button触发lamdba函数,
(2) Send SMS 给员工。
三、Lambda函数配置实操
如下,一个 node.js 编写的 Lambda 函数。
-
代码
[Python的demo写法],主要是对两个参数的理解。
def lambda_handler(event, context): print("Fargate Lambda Triggered!") print(str(event)) try: for record in event["Records"]: reqBody = record['body'] dictBody = ast.literal_eval(reqBody)
... ...
-
配置
分配内存大小等。
-
触发器
四、DynamoDB 管理数据
相较于“关系型数据库”的优势:
(a) 不需要多表查询
(b) 适合高频词高并发访问
(c) 可以无限提高表的读写能力
-
增加两张表
[创建第一个表]
记录"顾客请求"的表。
[创建第二个表]
记录Button对应的区域信息、员工信息。
给表添加一个“项目”,也就是具体内容。
-
表的策略设置(设权)
[进入策略生成器]
拷贝“表的资源名称”:ARN。
粘贴于此。
-
策略 添加到 角色上(放权)
找到Lambda函数对应的“角色”,接下来增强这个角色的权限,使之有操作"表”的权限。
在其上,“附加策略”。
-
调用这两张表
[代码添加]
第(1)步,先定义参数 request_params,再通过 docClient.put 函数写入表中。
第(2)步,测试程序,模拟button摁下后的触发事件。
第(3)步,查看DynamoDB结果,发现多了一条。
手机端随后得到消息通知 by SNS.
客户案例
一、Finra 交易合规性检查
每小时峰值可达750亿次。
S3自动触发lambda函数
通过SQS作为缓冲区。
二、Coca-Cola自助贩卖机
支付请求 --> API Gateway --> Lambda --> 发送支付通知给客户
每月8000万次调用 与 EC2实例基本持平。(每秒35个requests)
三、HomeAdvisor家装服务
AWS IoT 服务 --> Lambda --> HomeAdvisor API --> customer
End.