AWS强大的lambda

自从几年前换工作后,我所参与的项目一直都是基于AWS云服务的架构,我慢慢对serverless的相关基础建设有了一定了解和实践经验。其中lambda是我心中最强大的serveless服务,是很好的高并发业务解决方案。

  1. 什么是lambda

    lambda是AWS提供的一种无服务器的计算服务,根据请求流量自动扩展应用服务,
  • 按需付费

    因为是无服务器,所以无需提前准备(租用)好物理服务器。按照计算次数(请求次数)来收取费用,非常节省运维成本。

  • 支持高并发

    目前默认对每个账号的每个region(区域)最大并发执行数是1000,也就是说如果同一秒来了1000个计算请求,那么它可以最多并发处理1000个请求。最大并发执行数可以根据实际需求进行调整和设置。

  • 事件驱动

    lambda可以被多种事件(event)触发执行,比如HTTP请求,数据库操作,文件上传等等。
  • 支持多种编程语言

lambda可以支持多种编程语言,比如Node.js, Python, Java, Go, Ruby以及.NET Core(C#),基本覆盖了主流编程技术,可以选择我们项目中对应实用的编程语言进行开发。特别是对NodeJS和Python的SDK最为全面,这也是很多公司选择AWS lambda的原因之一。

  1. lambda如何创建

有两种方式可以创建lambda,一种是通过AWS控制台进行创建,通过创建页面的引导进行相关设置,在线编写lambda的逻辑处理代码。另一种就是通过上传代码包,从而创建lambda。

对于代码包(通常是zip包)是有大小限制的,最大不能超过250M。所以如果你的zip包太大,可以选择将这些代码打包成镜像,然后再上传到AWS。

  1. lambda的常见实用场景

最常见的一个使用案例是文件处理后需要进一步处理的业务。例如视频网站在用户上传了原始视频后,需要对视频进行压缩,然后把压缩文件重新写入s3,并发送通知给用户,比如用邮件的方式。

那么对于这种并发量无法简单估算且处理逻辑比较清晰的场景,可以选择用lambda去完成。lambda的代码流程:

  1. s3 event去触发lambda,传递message给lambda function。

  2. lambda对message中的s3文件进行下载,然后压缩,生成新的文件。

3)lambda上传新生成的文件到s3,并写入记录到数据库。

4)lambda通过AWS简单邮件服务(SES)发送通知邮件给用户。

代码如下:

const AWS = require('aws-sdk');
const ses = new AWS.SES(); exports.handler = async (event) => {
const params = {
Destination: {
ToAddresses: ['recipient@example.com']
},
Message: {
Body: {
Text: {
Data: 'Hello, this is the email body.'
}
},
Subject: {
Data: 'Subject of the email'
}
},
Source: 'sender@example.com'
}; try {
const result = await ses.sendEmail(params).promise();
console.log('Email sent:', result);
return {
statusCode: 200,
body: JSON.stringify('Email sent successfully!')
};
} catch (error) {
console.error('Error sending email:', error);
return {
statusCode: 500,
body: JSON.stringify('Error sending email.')
};
}
};

Lambda还有更多实际的配置、测试和使用案例(和SQS,SNS服务进行集成),我会在后续的博客中继续聊。

强大的AWS lambda的更多相关文章

  1. AWS Lambda

    AWS Lambda 知识点总结 参考资料:Amazon 名词解释: 事件驱动型计算服务:通过事件来触发的计算服务 Amazon S3存储桶:一项面向Internet的存储服务,可以通过S3 随时在W ...

  2. [翻译] 比较 Node.js,Python,Java,C# 和 Go 的 AWS Lambda 性能

    [翻译] 比较 Node.js,Python,Java,C# 和 Go 的 AWS Lambda 性能 原文: Comparing AWS Lambda performance of Node.js, ...

  3. Automated EBS Snapshots using AWS Lambda & CloudWatch

    Overview In this post, we'll cover how to automate EBS snapshots for your AWS infrastructure using L ...

  4. How to return plain text from AWS Lambda & API Gateway

    With limited experience in AWS Lambda & API Gateway, it's struggling to find the correct way to ...

  5. 什么是AWS Lambda?——事件驱动的函数执行环境

    AWS CTO Werner Vogels在AWS re:Invent 2014大会的第二场主题演讲上公布了两个新服务和一系列新的实例,两个新服务都相当令人瞩目:第一个宣布的新服务是Amazon EC ...

  6. Qwiklab'实验-API Gateway, AWS Lambda'

    title: AWS之Qwiklab subtitle: 2. Qwiklab'实验-API Gateway, AWS Lambda' date: 2018-09-20 17:29:20 --- In ...

  7. [AWS] Lambda by Python

    当前统治数据分析的语言还是Python,还是暂时走:Python + GPU的常规路线好了. numba, pyculib (分装了cublas) Ref: 使用 Python 构建 Lambda 函 ...

  8. 使用AWS Lambda,API Gateway和S3 Storage快速调整图片大小

    https://www.obytes.com/blog/2019/image-resizing-on-the-fly-with-aws-lambda,-api-gateway,-and-s3-stor ...

  9. AWS Lambda 借助 Serverless Framework,迅速起飞

    前言 微服务架构有别于传统的单体式应用方案,我们可将单体应用拆分成多个核心功能.每个功能都被称为一项服务,可以单独构建和部署,这意味着各项服务在工作时不会互相影响 这种设计理念被进一步应用,就变成了无 ...

  10. 本地运行aws lambda credential 配置 (missing credential config error)

    参照这篇文章 http://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/loading-node-credentials-sha ...

随机推荐

  1. SpringBoot 2.x 正式停更了。Java 8 就看 Solon 的了!

    最近有好多个新闻说:SpringBoot 2.x 正式停更了,Java 8 怎么办?当然用 Solon 喽! Solon,同时支持 jdk8, jdk11, jdk17, jdk21.也支持 graa ...

  2. MySQL 添加用户,分配权限

    1. 添加用户 CREATE USER `vipsoft`@`%` IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER; 2. 权限配置 GRANT 权限1,权限 ...

  3. 如何在 Unity 游戏中集成 AI 语音识别?

    简介 语音识别是一项将语音转换为文本的技术,想象一下它如何在游戏中发挥作用?发出命令操纵控制面板或者游戏角色.直接与 NPC 对话.提升交互性等等,都有可能.本文将介绍如何使用 Hugging Fac ...

  4. 【原理篇】WebView 实现嵌套滑动,丝滑般实现吸顶效果,完美兼容 X5 webview

    本文首发我的微信公众号徐公,收录于 Github·AndroidGuide,这里有 Android 进阶成长知识体系, 希望我们能够一起学习进步,关注公众号徐公,5 年中大厂程序员,一起建立核心竞争力 ...

  5. 【JAVA基础】报错解决

    报错解决 Failed to configure a DataSource: 'url' attribute is not specified and no embedd https://change ...

  6. JSP | JSP 动作详解

    原作者为 RioTian@cnblogs, 本作品采用 CC 4.0 BY 进行许可,转载请注明出处. 本篇学习自:C语言中文网,部分内容转载仅供学习使用. \[QAQ \] JSP 动作利用 XML ...

  7. 关于 Windows10升级版本后,内存占用率居高不下的解决办法

    一个月前,打开系统更新,win 10 推送了 最新版本. 然后手贱点了更新. 的确一开始没觉得的有什么明显变化,但最近总觉得机子卡的卡的严重,查看了下内存,占用率居高不下. 经常才打开一两个软件内存就 ...

  8. 基于HTML,CSS & Javascript 实现图像的自动轮播和手动导航按钮

    不务正业的第n天(划掉 2020年年末在完成Web网页制作课程的大作战,在写代码的时候想到用HTML + CSS & Javascript制作一个图片轮播功能增强网页的功能 简单贴一下代码:注 ...

  9. C#设计模式01——单例模式的三种写法

    第一种 //在方法里new ,这里使用 双if-lock public class SingleFirst { private static SingleFirst _SingleFirst; pri ...

  10. Feign 实现微服务调用及进行服务熔断与降级

    本文为博主原创,未经允许不得转载: 1. Feign 日志级别配置 2. Feign client 封装调用 3. Feign 定义熔断降级方法 4. 通过 FallbackFactory 工厂 实现 ...