关键字: [Amazon Web Services re:Invent 2023, Amazon EventBridge, Serverless Solutions, Asynchronous Event Sources, Eventbridge, Sns, Ci/Cd Pipelines]
本文字数: 1700, 阅读完需: 8 分钟
视频
如视频不能正常播放,请前往bilibili观看本视频。>> https://www.bilibili.com/video/BV1Ku4y157Pz
导读
该会话将 Serverless 提升到下一个级别。了解 Amazon SNS 和 Amazon EventBridge 在异步事件驱动应用程序中的差异。然后,学习如何使用 Amazon SQS、Amazon Kinesis 和 Amazon Lambda 构建队列和流。最后,请参阅完整的 CI/CD 管道,以了解如何简化和自动化 Serverless 操作。
演讲精华
以下是小编为您整理的本次演讲的精华,共1400字,阅读时间大约是7分钟。如果您想进一步了解演讲内容或者观看演讲全文,请观看演讲完整视频或者下面的演讲原文。
它提供了一个无服务器的事件总线,支持跨应用程序、亚马逊云科技服务和第三方SaaS应用程序的发布-订阅消息传递。客户可以将此用于应用集成和服务间通信。
-
用户可以创建规则,即JSON模式,以匹配传入事件的属性。客户可以用这个来实现路由逻辑并驱动自动化操作。
-
当一个规则被匹配时,事件可以被路由到目标,如Lambda函数,以驱动自动化操作。客户可以通过这种方式构建反应式的无服务器工作流。
-
EventBridge支持调度事件,可以按常规计划触发Lambda等目标。客户可以将其用于cron作业或定期维护自动化。
三种类型的事件总线分别是:
- 默认事件总线,负责接收来自亚马逊云科技服务的活动。客户可以借助这个总线来响应基础设施事件。
- 自定义事件总线,专为应用程序自身的事件设计。客户可以在独立的总线上对应用程序事件进行分类。
- 专用事件总线,用于连接每个集成的第三方 SaaS 应用。客户可以通过专用总线隔离外部事件。
客户还可以利用事件存档功能保留并重播过去的事件,以便进行调试或分析。
模式发现功能会自动将未知模式保存到注册表中,供开发人员使用。客户可以发现和标准化事件模式。
瓦利德展示了一个客户用例,即在从 API 网关收到特定事件时,如何使用 EventBridge 调用 Lambda 函数。他通过关键步骤进行了阐述,包括创建一个自定义的“无服务器总线”事件总线,定义一个“π规则”以匹配具有“面包店商店”源和“零食”细节类型的 API 网关事件,配置 API 集成,并使用示例 API 请求进行端到端测试。
在亚马逊 SNS 上,瓦利德概述了核心组件,如主题、发布者、订阅者和 SNS 如何支持应用程序到应用程序和应用程序到个人的通信流。他指出,SNS 支持多种订阅协议,包括 Lambda、电子邮件、短信、HTTP/S 等。一个关键好处是选择性地基于消息属性将消息发送给不同的订阅者。瓦利德解释了如何单个 SNS 主题可以将消息扩散到多个并行订阅者端点和服务器。客户可以利用 SNS 实现发布/订阅工作流。
他提供了一个客户设置 P-Topic SNS 主题的简短演示,该主题订阅了一个 Lambda 函数,并根据属性过滤消息以孤立特定的事件流。
在总结异步基于事件的解决方案模块时,瓦利德概括了一些关于 EventBridge 和 SNS 在客户用例中的一些关键区别:
- EventBridge 具有与第三方 SaaS 应用的本机集成,更先进的 JSON 模式路由功能,以及一个模式注册表。客户可以利用这些功能进行外部集成和处理非结构化数据。
社交网络服务(SNS)支持多种协议,包括短消息服务和电子邮件,采用先进先出(FIFO)原则确保消息顺序,可面向多达一千万的订阅者发送消息,并可用作Lambda死信队列。在使用这些特定协议或需要严格消息顺序的客户中,可以选择使用SNS。
在转向基于轮询的事件源模块的过程中,Walid介绍了诸如Amazon SQS队列、Kinesis数据流和DynamoDB流等服务。他强调了主动从这些数据源轮询新记录与异步推送记录的消费者之间的关键区别。通过Lambda,轮询逻辑可以实现自动化处理。
Walid对比了队列和流之间的差异:
-
队列:每个消息都与一个交易相关。消息速率可能不同。旨在供单个消费者使用的消息在消费后会立即删除。失败的消息在重新出现时会重新加入队列。客户可以使用SQS借助Lambda缓冲工作负载并实现弹性处理。
-
流:聚合记录以提供可操作的数据。持续记录流。多个消费者处理相同的记录。记录在保留期过后过期。失败的批处理会一直重试,直到过期,以避免“毒药瓶”情况。客户可以利用实时数据流进行分析和管道处理。
关于Amazon SQS,Walid概述了Lambda消费队列消息的关键配置,如最多10条消息的批量大小、函数超时、最长12小时的可见性超时、死信队列以及实现幂等性和部分失败处理逻辑的方法。客户可以使用SQS借助Lambda可靠地处理工作负载。
他演示了一个客户如何设置SQS队列,触发Lambda功能,并通过检查Lambda日志来验证处理过程。
在讨论Kinesis和DynamoDB流时,Walid提到Lambda维护一个指向最近处理的记录的指针。失败的批处理会一直重试,直到过期,以避免“毒药瓶”场景。
对于Kinesis数据流,用户可以直接控制分区的数量以调整并行度和Lambda的扩展。客户可以根据流体积优化性能。对于DynamoDB流,分区根据表的配置读取容量单位(RCU)和写入容量单位(WCU)进行调整。
关键流配置的主要特点包括批处理大小最高可达10,000条记录,并发批处理数量最高可达10个,批处理窗口范围为0至300秒,并实施“错误时批处理”或检查点处理故障。客户可根据实际使用情况优化这些配置。
Walid详细阐述了Kinesis和DynamoDB Streams之间的客户使用场景差异:
-
Kinesis每秒只轮询一次shard,而DynamoDB Streams每秒轮询四次。对于需要高吞吐量的客户,Kinesis是一个理想选择。
-
Kinesis提供了直接的shard控制,包括自动扩展策略。客户可以紧密调整扩展和并行性。
-
DynamoDB Streams的shard会根据配置的表吞吐量和自动扩展进行调整。客户可以利用其核心工作负载与流量之间的内在联系。
在过渡到CI/CD模块的过程中,Walid强调了持续集成、交付和部署无服务器应用程序的重要性。
他解释了如何通过自动化源代码、构建、测试和生产部分的部署管道来自动化CI/CD。例如,CI会自动构建并在每次提交代码时执行单元测试,而CD会生成通过自动化集成和其他测试的可部署产品。
Walid指出了一些好处,如一致的、可重复的部署,每个微服务独立的管线,以及访问最新版本的应用程序。客户利用CI/CD来支持快速、安全的迭代。
关于亚马逊云科技服务,他概述了客户如何使用CodeCommit、CodeBuild和CodePipeline进行源代码、构建和发布工作流程编排。CloudFormation、SAM和CDK使基础设施具备代码能力,以自动化部署和管理。
Walid强调了SAM的简单性,用于客户使用Lambda和API Gateway部署无服务器架构。他还解释了如何CDK允许开发人员使用熟悉的编程语言进行命令式基础设施自动化。SAM和CDK都与CloudFormation集成。
最后,Walid总结了客户在进行CI/CD自动化时应考虑的一些最佳实践:
-
广泛自动化测试,包括预/后流量钩子。这提供了安全保障和验证。
-
使用一个跨环境的参数化SAM模板。这确保了一致性。
-
将秘密存储在Systems Manager Parameter Store中。这是安全地管理配置的方法。
在生产、临时和测试环境中将亚马逊云科技账户分离,以提高安全性。这包括利用SAM(Serverless Application Model)的功能,如自动别名发布、线性10%流量转移、CloudWatch警报和Lambda钩子等内置安全措施。总的来说,Walid的演讲全面概述了在亚马逊云科技上开发和部署无服务器应用程序的关键客户使用案例。他从作为核心计算引擎的Lambda的角度出发,介绍了异步基于事件的解决方案、轮询式事件处理以及持续集成与部署的最佳实践。这些内容通过概念性的解释和客户实际实施的演示得到了进一步阐述。
下面是一些演讲现场的精彩瞬间:
本讲座主要探讨了如何构建基于异步事件的解决方案。
演讲者将通过展示Lambda函数的CloudWatch日志来分析函数调用状态。
一张图表详细解析了如何使用SNS主题的消息过滤功能将信息发送给多个订阅者,包括Lambda函数和基于属性值的SQS队列。
亚马逊云科技支持利用SNS主题订阅实现灵活且可扩展的事件处理,例如支持来自S3备份和DynamoDB搜索索引等来源的目标。
相较于SNS,EventBridge提供了更为先进集成和路由功能,例如支持第三方软件即服务应用、更多源/目标选项、JSON模式匹配规则、模式注册以及24小时事件保留。
CD为开发者提供了一种可重复且一致的升级过程,以便采用微服务架构。
领导者们鼓励与会者扫描二维码以获取更多亚马逊云科技学习资源以及对亚马逊云科技技能构建器的免费试用机会。
总结
这段视频探讨了在亚马逊云科技平台上开发无服务器解决方案的方法。内容涉及基于事件的异步解决方案,如使用EventBridge和SNS;以及轮询式事件驱动解决方案,如使用SQS和Kinesis数据流。此外,还讨论了持续集成、持续交付和持续部署的最佳实践。
演讲者首先解释了Lambda的无服务器函数如何利用异步事件源,例如EventBridge和SNS。这种异步处理方式能够非阻塞地执行任务,使得客户端可以在不等待响应的情况下发送额外请求。通过Lambda,事件源会将事件放入一个队列中,然后Lambda会轮流读取和处理这些事件。了解请求状态的策略包括客户端自行轮询、使用webhooks或者webockets等方式。
EventBridge构建了一个事件总线,实现了发布者-订阅者的通信。通过规则匹配事件并将它们路由到目标,如Lambda函数。EventBridge可以与第三方应用程序集成,并提供事件调度、存档和模式发现等功能。SNS则类似于EventBridge,但它主要用于电子邮件、文本、webhooks等场景,并且可以同时向多个订阅者扩散事件。
接下来,演讲者展示了一个由API Gateway触发的EventBridge规则的创建过程,该规则可以调用Lambda函数。从函数的日志中可以看出,它是被匹配的事件调用的。通过创建主题、添加具有过滤策略的Lambda订阅,并发布匹配和不匹配的消息,演示了如何使用SNS。从Lambda函数的日志中可以确认,只有匹配的消息才会调用Lambda。
最后,演讲者介绍了用于轮询式Lambda调用的SQS和Kinesis数据流。在这种轮询式处理方式中,生产者将事件发送到队列或流中,然后消费者主动轮询以处理事件批次。演讲者还对比了队列和流之间的主要区别,并强调了使用SQS时,Lambda会轮询队列并处理消息批次,同时还会对失败的消息批次进行重试。对于Kinesis和DynamoDB流,其记录聚合功能也提供了一定的价值。
持续集成与部署(CI/CD)在实现应用程序的一致性和自动化升级方面发挥着至关重要的作用。其核心原则包括通过自动化构建和测试来实现持续集成,用于生成就绪释放版本的持续交付,以及完全自动化的发布过程。亚马逊云科技服务,如CodeCommit、CodeBuild和CodePipeline,协同工作以搭建管道。而SAM和CDK则将基础设施作为代码进行定义。SAM具有诸如部署钩子和流量切换等功能,支持稳健的部署。遵循的最佳实践包括广泛测试自动化的实施、跨环境的单一SAM模板使用,以及利用参数存储库保护敏感信息。
演讲原文
https://blog.csdn.net/just2gooo/article/details/134812480
想了解更多精彩完整内容吗?立即访问re:Invent 官网中文网站!
2023亚马逊云科技re:Invent全球大会 - 官方网站
点击此处,一键获取亚马逊云科技全球最新产品/服务资讯!
点击此处,一键获取亚马逊云科技中国区最新产品/服务资讯!
即刻注册亚马逊云科技账户,开启云端之旅!
【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用”
亚马逊云科技是谁?
亚马逊云科技(Amazon Web Services)是全球云计算的开创者和引领者,自 2006 年以来一直以不断创新、技术领先、服务丰富、应用广泛而享誉业界。亚马逊云科技可以支持几乎云上任意工作负载。亚马逊云科技目前提供超过 200 项全功能的服务,涵盖计算、存储、网络、数据库、数据分析、机器人、机器学习与人工智能、物联网、移动、安全、混合云、虚拟现实与增强现实、媒体,以及应用开发、部署与管理等方面;基础设施遍及 31 个地理区域的 99 个可用区,并计划新建 4 个区域和 12 个可用区。全球数百万客户,从初创公司、中小企业,到大型企业和政府机构都信赖亚马逊云科技,通过亚马逊云科技的服务强化其基础设施,提高敏捷性,降低成本,加快创新,提升竞争力,实现业务成长和成功。