## 视频
<video src="https://dev-media.amazoncloud.cn/30-LibaiGenerate/31-LiBaiRebrandingVideo/SVS212-Using_AWS_Lambda_to_process_Amazon_SQS_and_Amazon_SNS_messages-LBrebrandingWCaptionCN.mp4" class="bytemdVideo" controls="controls"></video>
## 导读
在这个SVS305的后续演示中,学习如何使用Amazon SAM这个用于构建[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)应用程序的开源框架,通过Amazon Lambda函数高效地处理来自[Amazon SQS](https://aws.amazon.com/cn/sqs/?trk=cndc-detail)和[Amazon SNS](https://aws.amazon.com/cn/sns/?trk=cndc-detail)的消息。探索Amazon SAM如何简化开发人员的工作流程,以连接和授权Lambda函数的事件源。
## 演讲精华
<font color = "grey">以下是小编为您整理的本次演讲的精华,共600字,阅读时间大约是3分钟。如果您想进一步了解演讲内容或者观看演讲全文,请观看演讲完整视频或者下面的演讲原文。</font>
视频展示了一位名为Vinoth和另一位名为Zainab的亚马逊云科技的解决方案架构师的演讲。他们讨论了如何运用亚马逊云科技的[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)应用模型(SAM)来构建一个能够利用[Amazon Simple Queue Service](https://aws.amazon.com/cn/sqs/?trk=cndc-detail)(SQS)、[Amazon Simple Notification Service](https://aws.amazon.com/cn/sns/?trk=cndc-detail)(SNS)以及亚马逊云科技Lambda处理消息的应用程序。
Vinoth首先向观众介绍了自己,并阐述了会议的主题。其主要目的是展示如何通过使用SAM框架来实现处理SQS和SNS消息的[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)应用架构。他强调,SAM提供一个将[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)应用作为代码定义的模型,使得架构师可以通过基础设施即代码的方式来规划所需的架构和相应的资源。此外,SAM命令行界面(CLI)也简化了应用的部署过程。接着,Vinoth让Zainab进行现场演示,展示如何使用SAM来构建和部署[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)应用。
Zainab开始讲解她的操作。她首先执行了'sam init'命令,创建了一个新的SAM项目。这样生成了一个包含基本资源的启动器SAM模板,例如API Gateway及其相关的执行角色。她展示了已经定义的一个具有与SQS交互权限的API Gateway资源的模板。此外,该模板还包含了用于获取已部署堆栈属性和全局参数(如Lambda函数代码源和运行时)的输出。
在资源设置方面,Zainab创建了名为'orders_q'的SQS队列和名为'inventory_topic'的SNS主题。然后,她创建了一个名为'place_order_function'的Lambda函数,并通过关联一个SQS事件源映射来在'orders_q'队列中到达消息时调用它。
Zainab解释道,这个函数会从队列中接收一个订单消息数组,对每个订单消息将其详情插入到一个名为'orders'的DynamoDB表中,并在'inventory_topic'上发布订单信息。配置了两个环境变量——SNS主题ARN和DynamoDB表名,并通过SAM策略授予了对SNS主题的发布权和DynamoDB表的写入权。
同样地,她创建了一个名为'update_inventory_function'的Lambda函数,该函数通过SNS主题响应订单详情。这个功能负责根据订单中指定的数量更新DynamoDB表'inventory'中的库存项目数量。另一个函数则配备了DynamoDB表名的环境变量以及对表格进行写入的策略权限。Zainab检查了SAM模板,并使用SAM CLI命令生成了蓝图并部署了栈。在部署过程中,她详细解释了底层的Lambda函数代码。'place_order_function'会遍历SQS记录数组,将每个订单插入到DynamoDB表'orders'中,并向SNS主题'inventory_topic'发布订单信息。相对应地,'update_inventory_function'会从SNS获取订单详情,并根据'inventory' DynamoDB表中的订购项目数量更新库存数量。成功部署后,Zainab通过使用样本订单负载调用了API Gateway端点,展示了端到端流程。Lambda函数依次激活,使得订单在DynamoDB中持续存在,同时也根据订单数量调整了库存数量。总的来说,Zainab成功地展示了一个使用SAM框架构建的服务器应用程序,该程序利用Lambda函数处理SQS和SNS事件,同时与DynamoDB集成以保持数据持久性。她强调了通过SAM模板将事件驱动的架构作为代码来定义的简便性。这次演示为建筑师提供了一个实用的指南,以便他们能够快速构建利用亚马逊云科技服务的云原生[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)系统,并通过基础设施即代码获得灵活性。
**下面是一些演讲现场的精彩瞬间:**
来自巴林的解决方案架构师Zainab在re:Invent上向观众介绍了自己。
![](https://d1trpeugzwbig5.cloudfront.net/SVS212-Using_AWS_Lambda_to_process_Amazon_SQS_and_Amazon_SNS_messages/images/rebranded/SVS212-Using_AWS_Lambda_to_process_Amazon_SQS_and_Amazon_SNS_messages_0.png)
演讲者解释了如何使用GetAtt固有函数配置事件源映射,将SQS队列连接到Lambda函数。
![](https://d1trpeugzwbig5.cloudfront.net/SVS212-Using_AWS_Lambda_to_process_Amazon_SQS_and_Amazon_SNS_messages/images/rebranded/SVS212-Using_AWS_Lambda_to_process_Amazon_SQS_and_Amazon_SNS_messages_1.png)
领导者展示了当订单下达时,用于更新库存表的update_inventory Lambda函数的操作方法。
![](https://d1trpeugzwbig5.cloudfront.net/SVS212-Using_AWS_Lambda_to_process_Amazon_SQS_and_Amazon_SNS_messages/images/rebranded/SVS212-Using_AWS_Lambda_to_process_Amazon_SQS_and_Amazon_SNS_messages_2.png)
领导者展示了一个示例JSON结构,该结构将通过SQS队列发送到API Gateway端点。
![](https://d1trpeugzwbig5.cloudfront.net/SVS212-Using_AWS_Lambda_to_process_Amazon_SQS_and_Amazon_SNS_messages/images/rebranded/SVS212-Using_AWS_Lambda_to_process_Amazon_SQS_and_Amazon_SNS_messages_3.png)
Vinoth推荐了学习资源,如亚马逊技能构建器、QR码和服务器无.com网站,以继续[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)之旅。
![](https://d1trpeugzwbig5.cloudfront.net/SVS212-Using_AWS_Lambda_to_process_Amazon_SQS_and_Amazon_SNS_messages/images/rebranded/SVS212-Using_AWS_Lambda_to_process_Amazon_SQS_and_Amazon_SNS_messages_4.png)
## 总结
This video demonstrates how to build serverless applications using Amazon Web Services (亚马逊云科技) Lambda and [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail). It covers the use of [Amazon Simple Queue Service](https://aws.amazon.com/cn/sqs/?trk=cndc-detail) (SQS) and [Amazon Simple Notification Service](https://aws.amazon.com/cn/sns/?trk=cndc-detail) (SNS) messages along with 亚马逊云科技 Lambda. The presenter first explains that Amazon Web Services SageMaker SAM is an open-source framework for building elastic serverless architectures as infrastructure code. Then, they outline a simple order management system architecture, including API Gateway, SNS, SQS, and Lambda. Next, one presenter demonstrates how to deploy serverless applications using the SAM CLI through live demos. Key steps include defining SAM templates with resources like SQS queues, SNS topics, Lambda functions, permissions, and environment variables; validating the template; generating constructs; and deploying stacks. The other presenter then reviews the Lambda function code for handling orders from the SQS queue, adding them to DynamoDB, publishing order details to SNS, and updating inventory based on order items. Testing the end-to-end process is done by placing orders through the API endpoint. Finally, the presenter recommends learning resources, such as the Serverless Journey on the Amazon Web Services Skill Builder, to continue improving expertise in SAM and serverless technologies. The video provides a comprehensive introduction to deploying event-driven serverless applications using SAM on AWS.
## 演讲原文
## 想了解更多精彩完整内容吗?立即访问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 余种核心云服务产品免费试用“")