强大的AWS lambda

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服务进行集成,我会在后续的博客中继续聊。

相关推荐
A小辣椒15 天前
AWS Clould Support Engineer就职面试题
aws
亚林瓜子17 天前
AWS WAF中如何放行某个触发了托管规则的接口
aws·waf
悠悠1213819 天前
AWS DevOps Agent 体验一周后,我决定把 oncall 手机调成静音了
云计算·aws·devops
yyuuuzz19 天前
独立站运营的几个技术层面常见问题
大数据·运维·服务器·网络·数据库·aws
yyuuuzz19 天前
游戏云服务器推荐的技术选择思路
大数据·运维·服务器·游戏·云计算·aws
kernelcraft21 天前
Boto3:Python 操作 AWS 的官方 SDK
开发语言·python·其他·aws
小bo波23 天前
用匿名内部类优雅地计算方法执行时间
java·设计模式·性能测试·模板方法模式·lambda·代码优化·匿名内部类
devilnumber23 天前
Lambda|行为参数化 完整精讲
java·lambda·行为参数化
递归尽头是星辰25 天前
大数据架构体系通识:存储、架构与数仓分层全解析
lambda·湖仓一体·大数据架构·kappa·数据仓库分层
普通网友1 个月前
Serverless 框架:多云函数部署(AWS + 阿里云 + 腾讯云)
阿里云·serverless·aws