## 视频
<video src="https://dev-media.amazoncloud.cn/30-LibaiGenerate/31-LiBaiRebrandingVideo/SVS205-Getting_started_building_serverless_event_driven_applications-LBrebrandingWCaptionCN.mp4" class="bytemdVideo" controls="controls"></video>
## 导读
了解如何开始构建可以解决常见问题的 Serverless Web 应用程序。在本论坛中,了解将解决方案从概念原型化为使用 Amazon API 网关、Amazon Lambda、[Amazon EventBridge](https://aws.amazon.com/cn/eventbridge/?trk=cndc-detail)、Amazon Step Functions、[Amazon DynamoDB](https://aws.amazon.com/cn/dynamodb/?trk=cndc-detail)、Amazon Application Composer 等的全功能应用程序的过程。了解为何 Serverless 是一个伟大的工具集,用于尝试新想法,以及 Serverless 应用程序的可扩展性和模块性如何允许您从小处着手,并快速将想法变成现实。
## 演讲精华
<font color = "grey">以下是小编为您整理的本次演讲的精华,共1300字,阅读时间大约是6分钟。如果您想进一步了解演讲内容或者观看演讲全文,请观看演讲完整视频或者下面的演讲原文。</font>
艾米丽·希亚(Emily Shea)担任亚马逊云科技(Amazon Web Services)的应用集成上市团队负责人。在2022年re:Invent上,她向广大观众分享了如何开始构建事件驱动的[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)应用的经验。她的目标是帮助观众避免她曾面临的一些常见陷阱,并加速他们在[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)领域的征程。
艾米丽表示,[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)应用的吸引力在于它消除了管理服务器和基础设施的繁琐工作。通过使用[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)技术,可以根据应用程序流量自动扩展,采用按使用量付费的计费方式,从而只需为实际使用的部分付费。此外,无需关注基础设施管理,开发人员可以更快地构建和部署应用程序。
为了展示如何开始使用[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail),艾米丽提供了一个练习汉语词汇的应用程序示例。该应用程序需要定期调度以发送每日提醒,从数据库中随机选择一个字词,并发送包含该字的文本消息。这个简单的使用案例展示了如何将亚马逊云科技的服务(如EventBridge用于调度,Lambda函数用于代码执行,S3用于存储,以及SNS用于消息传递)结合在一起创建一个完整的[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)应用程序。
艾米丽还提出了其他启动想法,如检查天气预报并推荐服装的应用程序,或使用Rekognition或Comprehend等[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)服务处理图像或文档。她还提到了亚马逊云科技开发者倡导者构建的一个更复杂的示例——开源[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)视频应用程序。
艾米丽强调,尽管[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)主要用于简单的个人应用程序,但亚马逊云科技的主要客户(如荷兰邮政、全美国家儿童医院和墨西哥鸡肉贝尔)也使用这些相同的服务来运行大规模的关键任务工作负载。例如,荷兰邮政利用Lambda函数和DynamoDB处理其物流网络中每天超过100万个包裹,这使其能够在节假日等高峰期实现无缝扩展。
全国儿童医院(Nationwide Children's Hospital)利用Amazon Step Functions和Athena构建了一个分析应用程序,以自动化工作流程并从数PB的儿童癌症数据中提取见解。这一举措加速了研究进程并优化了治疗方案。
Taco Bell通过EventBridge开发了一个应用程序,能够从第三方送货服务接收订单事件,并在司机抵达餐厅时实时将这些事件路由至适当的销售点系统。
这些案例展示了[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)模型在支持简单个人应用和应对高度复杂、处理每日数百万交易的任务关键应用方面的多功能性。
艾米丽提供了一套核心服务,作为构建[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)应用程序的工具箱,包括:
- 数据层:用于存储的S3和用于数据库的DynamoDB
- 逻辑层:Lambda函数
- 集成:用于工作流的Step Functions、用于消息队列的SQS、用于事件路由的EventBridge以及用于通知的SNS
- 表示层:API Gateway用于API、Cognito用于身份验证以及Amplify用于网页托管
- AI/ML:Rekognition、Comprehend、Forecast等
基于她的基本词汇提醒应用程序理念,艾米丽将其映射到了亚马逊云科技服务:
- EventBridge:用于触发应用程序的日常事件
- Lambda:从数据库获取单词并将消息发送给用户的函数
- S3:存储完整单词数据库的CSV文件
- SNS:用户收到每日词汇文本消息
她强调了使用基础设施即代码的重要性,如Serverless Application Model(SAM)框架,以定义和部署一致且可重复的环境。SAM提供了将亚马逊云科技资源配置为代码的简化语法。
艾米丽还强烈推荐尽早实施持续集成与持续部署(CI/CD)管道以实现自动化部署。例如,将应用程序代码存储在GitHub中,以便任何提交都会触发自动构建和部署管道,从而将更改同步到亚马逊云科技。
对于测试[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)应用程序,艾米丽提供了一些建议,如在Lambda函数中对复杂逻辑进行单元测试,但在云中直接进行集成测试以验证服务的互操作性。她强调了使用SAM Accelerate工具快速将单个函数的代码更改同步到亚马逊云科技的能力,以进行更快的测试迭代。
接着,艾米丽通过增加词汇应用程序的复杂性来展示了多个迭代,展示了如何整合额外的服务:
通过API网关添加订阅网站后,我们使用了DynamoDB表来存储用户和偏好设置。Amplify负责管理UI和前端。我们采用了DynamoDB作为高效的[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)数据库,具备自动扩展功能。同时,我们也探讨了访问模式的最佳实践。用户可以在我们的平台上保存测验结果和示例句子,Cognito负责用户身份验证。为了协调批量作业,我们使用了Step Functions来将单词转换为语音。此外,我们还尝试使用了CodeWhisperer的自然语言API来自动生成示例句子。在整个开发过程中,Emily一直致力于从小处开始并逐步发展,合理规划DynamoDB的高效查询访问模式,并采用事件驱动的架构。例如,当用户上传文档时,会触发Lambda函数异步处理,并使用亚马逊Comprehend进行摘要。用户可以立即获取生成的摘要,通过调用API网关和Lambda函数。Emily还分享了一些开发者的技巧,如使用视觉工作流程设计器(如新的Application Composer服务)来加速开发。她建议在云中直接测试应用程序集成,而不是在本地模拟服务。通过CI/CD自动化部署,我们可以实现快速且频繁的发布。Emily还展示了如何使用开源Local Stack框架在本地模拟亚马逊云科技服务,以简化开发者体验。为了展示[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)开发的实际应用,Narin Gaa与Emily一起进行了现场演示,使用亚马逊云科技Application Composer构建了一个文档摘要应用程序。Narin使用拖放界面可视化地构建了应用程序架构:S3存储桶用于存储文档;由上传触发的Lambda函数,使用亚马逊CodeWhisperer进行摘要;DynamoDB表用于存储生成的摘要;API网关REST API,带有用于检索摘要的Lambda函数。Narin展示了如何使用Application Composer强制执行最佳实践,如默认加密和访问控制。它会生成亚马逊云科技CloudFormation基础设施代码模板,随时准备进行部署。
他向观众展示如何在Visual Studio Code中使用Application Composer扩展进行本地开发,该扩展具有新的本地同步功能。在使用SAM CLI部署栈之后,Narin展示了整个流程的运行情况——将文档上传到S3会自动生成存储在DynamoDB中的摘要版本。然后,可以通过调用API网关REST API按需求获取这些摘要。
Narin强调了轻松添加额外资源的方法,如用于Web托管的亚马逊云科技Amplify、用于工作流的Step Functions以及示例架构,以便随着时间的推移扩展应用程序功能。他建议观众学习一些学习资源,如亚马逊云科技Skill Builder,以继续他们的[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)教育之旅并获得验证技术专长的亚马逊云科技Certified Cloud Practitioner和Developer Associate徽章。
总之,Emily和Narin成功地展示了如何使用亚马逊云科技服务从零开始构建[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)应用程序。跟随Emily的真实世界经验和建议,观众应该有信心开始开发自己的[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)应用。 Narin的现场演示提供了实际操作示例,以强调使用Application Composer加速开发的优点。总的来说,演讲者提供了多个引人入胜的客户故事以及任何人都可以利用[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)优势的资源。他们强调了如何将Lambda、DynamoDB、API Gateway和S3等核心服务结合起来,以创建高度可扩展且成本高效的应用程序,而无需管理服务器。通过消除非差异化工作和基础设施管理,[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)允许开发人员专注于业务逻辑并将创新更快地推向市场。
**下面是一些演讲现场的精彩瞬间:**
艾米丽·希恩在亚马逊云科技的Application Integration Go-To-Market团队中扮演着领导角色。
![](https://d1trpeugzwbig5.cloudfront.net/SVS205-Getting_started_building_serverless_event_driven_applications/images/rebranded/SVS205-Getting_started_building_serverless_event_driven_applications_0.png)
她最近进行了一场关于如何构建事件驱动型应用的演讲。
![](https://d1trpeugzwbig5.cloudfront.net/SVS205-Getting_started_building_serverless_event_driven_applications/images/rebranded/SVS205-Getting_started_building_serverless_event_driven_applications_1.png)
亚马逊云科技将繁琐的CloudFormation模板简化至一行简洁的代码,用于创建IAM策略、Lambda函数以及其他相关资源。
![](https://d1trpeugzwbig5.cloudfront.net/SVS205-Getting_started_building_serverless_event_driven_applications/images/rebranded/SVS205-Getting_started_building_serverless_event_driven_applications_2.png)
值得注意的是,亚马逊云科技的Application Composer是一个可视化设计工具,能轻松生成SAM模板,用于构建[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)应用。
![](https://d1trpeugzwbig5.cloudfront.net/SVS205-Getting_started_building_serverless_event_driven_applications/images/rebranded/SVS205-Getting_started_building_serverless_event_driven_applications_3.png)
借助自动化的CI/CD管道部署[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)应用,可以显著缩短开发周期。
![](https://d1trpeugzwbig5.cloudfront.net/SVS205-Getting_started_building_serverless_event_driven_applications/images/rebranded/SVS205-Getting_started_building_serverless_event_driven_applications_4.png)
此外,还提供了用于模拟对亚马逊云科技服务(如S3和SNS)调用的单元测试示例,以便测试复杂Lambda函数代码的逻辑。
![](https://d1trpeugzwbig5.cloudfront.net/SVS205-Getting_started_building_serverless_event_driven_applications/images/rebranded/SVS205-Getting_started_building_serverless_event_driven_applications_5.png)
## 总结
在本次演讲中,我们将探讨[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)和基于事件的架构,以及如何利用亚马逊云科技服务实现这些概念。演讲者将通过分享在亚马逊云上构建[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)应用程序的经验和最佳实践,为我们展示如何在实际项目中应用这些技术。
第一个关键点是演讲者如何通过构建一个简单的[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)应用程序来学习汉语词汇。这个应用使用了EventBridge进行调度,Lambda处理逻辑,S3用于存储,SNS用于消息传递。这些核心亚马逊服务展示了如何构建基于事件的亚马逊[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)应用程序。
第二个关键点在于应用程序的扩展过程,包括添加用户订阅、DynamoDB数据库、API Gateway和Cognito用于身份验证。这展示了如何随着需求的增长,逐步拓展[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)应用程序的功能和服务范围。在这个过程中,演讲者还强调了合适的DynamoDB表设计的重要性。
第三个关键点涉及开发者工具的使用技巧,如使用SAM模板进行基础设施即代码操作,建立CI/CD管道以实现部署自动化,以及采用有效的测试方法。此外,演讲者还将讨论应用程序设计的最佳实践,如从小规模开始并逐步扩展功能。
总之,在亚马逊云上使用[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)和基于事件的架构让开发者能够更高效地构建应用程序,同时减少了基础设施管理的负担。借助Lambda和EventBridge等核心服务,开发者可以轻松上手。遵循逐步发展的最佳实践,结合开发者工具和应用设计,将有助于创建可维护和可扩展的亚马逊[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)应用程序。
## 演讲原文
## 想了解更多精彩完整内容吗?立即访问re:Invent 官网中文网站!
[2023亚马逊云科技re:Invent全球大会 - 官方网站](https://webinar.amazoncloud.cn/reInvent2023/?s=8739&smid=19458 "2023亚马逊云科技re:Invent全球大会 - 官方网站")
[点击此处](https://aws.amazon.com/cn/new/?trk=6dd7cc20-6afa-4abf-9359-2d6976ff9600&trk=cndc-detail "点击此处"),一键获取亚马逊云科技全球最新产品/服务资讯!
[点击此处](https://www.amazonaws.cn/new/?trk=2ab098aa-0793-48b1-85e6-a9d261bd8cd4&trk=cndc-detail "点击此处"),一键获取亚马逊云科技中国区最新产品/服务资讯!
## 即刻注册亚马逊云科技账户,开启云端之旅!
[【免费】亚马逊云科技“100 余种核心云服务产品免费试用”](https://aws.amazon.com/cn/campaigns/freecenter/?trk=f079813d-3a13-4a50-b67b-e31d930f36a4&sc_channel=el&trk=cndc-detail "【免费】亚马逊云科技“100 余种核心云服务产品免费试用“")
[【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用”](https://www.amazonaws.cn/campaign/CloudService/?trk=2cdb6245-f491-42bc-b931-c1693fe92be1&sc_channel=el&trk=cndc-detail "【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用“")