继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

AWS re:Invent 2024大会无服务器技术要点分享

呼啦一阵风
关注TA
已关注
手记 344
粉丝 73
获赞 319

随着 AWS re:Invent 2024 正式结束,让我们从无服务器开发者的角度来看,回顾一下这次发布的新服务和功能,这些对我们来说非常激动人心。

访问这个网站: https://www.ranthebuilder.cloud/

这篇博客文章最初发表在我的网站Ran The Builder上。

无服务器开发的最佳实践

这是赤裸裸的自我推销,哈哈😊

如果你错过了我和朱利安·伍德的分会场,录像已经上传,你可以观看了。

我们讨论了构建可投入生产的无服务器服务的方法以及构建和扩展这些服务的安全性技巧和见解。这里有很多你可以采取的实际步骤,所有相关链接和幻灯片都可以在这里找到:此处

关于即将重新发布的公告

让我们来回顾一下在 AWS re:invent 之前宣布的最激动人心的公告和改进。今年我们确实看到了很多。说实话,这是在过去的一段时间里我们经历过的最好的一年之一。

AWS Lambda 日志和指标分析

https://aws.amazon.com/blogs/compute/simplifying-lambda-function-development-using-cloudwatch-logs-live-tail-and-metrics-insights/ 这篇文章简化了使用 CloudWatch 日志实时尾部和指标洞察来开发 Lambda 函数的过程。

AWS为Lambda开发者引入了两个新功能 CloudWatch 日志实时查看CloudWatch 指标洞察

> Lambda 控制台现在原生支持这么一项功能:CloudWatch 日志实时尾部查看_,这种功能可以让开发者和运维人员实时查看和分析 Lambda 函数的日志内容。

所以,你现在无需刷新CloudWatch日志流,可以直接在Lambda控制台中部署、调用函数并实时查看日志。这确实是一个不错的功能,但我不会推荐这种方式调试,因为这种方式调试既耗时又低效。你最好使用集成开发环境(IDE),而不是AWS的控制台。可以查看我的Lambda无服务器指南博客文章,以及我在2023年AWS re:Invent上的分会场会议,我在那里详细讨论了测试实践。

第二个功能是CloudWatch 指标洞察功能

_> 仪表板显示您 AWS 账户中调用次数最多、错误最多和调用时间最长的前 10 个 AWS Lambda 函数。

你可以通过Lambda控制台进入仪表板页面。这确实是一个不错的功能,但我更喜欢直接在我的生产CloudWatch仪表板上监控我的函数。如果你想了解更多关于如何构建这种仪表板的信息,可以看看我在这篇文章中的介绍这里

AWS Lambda 控制台感觉有点像 VS Code

介绍一种增强的 AWS Lambda 控制台编辑体验。这篇文章介绍了 AWS Lambda 控制台编辑体验的增强功能。

这将熟悉的 Visual Studio Code 用户界面和诸多功能也一并带入 Lambda 控制台,让开发者可以直接在云中使用他们喜欢的编码环境和工具。

关于它没什么好说的。它看起来更简洁、更熟悉。你是否需要在控制台中开发你的功能?不需要。它仍然很好用,并且查看代码时体验更好?绝对是的。

底线是,它不能替代IDE,但也有一些局限,不过它确实提供了更好的阅读体验。

AWS FIS 支持 Lambda 函数功能

亚马逊AWS关于AWS Lambda故障注入服务操作的新闻更新

这真是个受欢迎的补充!

_> 通过暂时增加调用延迟时间、阻止函数运行、修改函数输出以及注入集成中的错误来测试其应用程序的韧性。

混沌工程是无服务器测试中的一个重要但较为高级的环节。直到现在,AWS 仍未提供官方支持,但你可以自行实现。参阅这两篇文章这里这里。在你的 AWS 账户上模拟这些错误要简单得多。敬请期待 Koby 对此领域的见解!

目前,你可以参考 AWS 的详细介绍帖子。AWS 的详细介绍中介绍了如何以便在 Lambda 函数中注入混沌。

AWS AppSync 事件即也就是无服务器的 WebSocket API

https://aws.amazon.com/blogs/mobile/announcing-aws-appsync-events-serverless-websocket-apis/ (此链接发布有关 AWS AppSync 事件和无服务器 WebSocket API 的公告)

我写了一篇深入探讨的文章这篇文章,并分享了我的看法——真的很棒!

你可以使用无服务器的WebSocket而无需管理其状态或基础架构。开发人员创建他们的API并发布事件,这些事件会被广播到数百万(哇塞!)通过WebSocket连接订阅的客户端。还有通过HTTP端点与Eventbridge集成,这进一步增强了这一特性。

更多详情和代码示例,请看 GitHub 仓库。

DynamoDB 预热表,更便宜!

https://aws.amazon.com/blogs/database/pre-warming-amazon-dynamodb-tables-with-warm-throughput/

(预热Amazon DynamoDB表以使用预热吞吐量)

温通量提供了关于你的表或索引能立即支持的读写操作的见解,这些值会随着使用量的增加而提升。这是你的表准备好即时处理的最小吞吐量。

本文提供了可以从预热表格中受益的常见用例以及定义配置值的技巧。当你有一个“按需”表,并希望从一开始就准备好应对突发流量或高负载(以减少API限流的可能性)时,这可能会对你有所帮助。在过去,为了应对预期的峰值,你必须暂时将表设置为预设模式,并将设置调高,在流量恢复正常后将其切换回“按需”模式。

最后要提醒你,你得为这个功能多掏钱

而且是个大好处!我们在DynamoDB上的花费更少了。全球表的减少真的太棒了!

亚马逊博客:Amazon DynamoDB 降低按需吞吐量和全球表的价格

  1. 按需吞吐量定价已减少50%
  2. 全球表定价最高可降低67%
Lambda 运行时环境 — Python 3.13 兼容

https://aws.amazon.com/pt/blogs/compute/python-3-13-runtime-now-available-in-aws-lambda/

没什么可说的;不过一些实验功能将被禁用。我还在等待关于性能和冷启动的对比结果。Powertools for AWS Lambda 支持,我的开源项目也是如此。

  1. https://github.com/ran-isenberg/aws-lambda-env-modeler (AWS Lambda 环境建模器 GitHub 页面)
  2. https://github.com/ran-isenberg/aws-lambda-handler-cookbook (AWS Lambda 处理程序食谱 GitHub 页面)
为 Lambda 函数的 SnapStart (Python 和 .Net).

https://aws.amazon.com/blogs/aws/aws-lambda-snapstart-for-python-and-net-functions-is-now-generally-available/

让我们来谈谈Python和.NET的SnapStart。这是一个非常聪明的特性。它不像它的Java版本那样免费。它也不是预置并发机制。这更像是一个介于预置并发和普通冷启动之间的折衷方案;您的体验可能有所不同,但不要期望它的冷启动时间能达到两位数的秒。

最终,这只是个临时解决办法,并不能真正解决根本问题——启动延迟。

你该用它吗?

是的,我会把这放在关键的客户面对的API上,同时也会创建一个JIRA任务,作为技术债务,来优化冷启动时间并移除快照启动。

想了解冷启动问题的优化吗?可以了解一下我的文章 “Is AWS Lambda Cold Start 仍然是一个问题吗?”。(https://www.ranthebuilder.cloud/post/is-aws-lambda-cold-start-still-an-issue-in-2024)

AWS Lambda 支持将失败事件发送到 Amazon S3,作为异步和流事件的失败事件目的地

https://aws.amazon.com/about-aws/whats-new/2024/11/aws-lambda-s3-failed-event-destination-stream-event-sources/ (AWS 于 2024 年 11 月发布的一篇关于 AWS Lambda、S3 失败事件目标流事件源的新闻)

有些用户可能会找到它的实际用途。然而,我更喜欢将失败的消息发送到死信队列(DLQ)并重新发送。我之前写了一篇关于这个主题的文章,并在文章中附上了完整的CDK代码示例;这非常简单!

Amazon Aurora Serverless v2 支持扩展到零容量

https://aws.amazon.com/about-aws/whats-new/2024/11/amazon-aurora-serverless-v2-scaling-zero-capacity/

哇!如果你自称为#Serverless,那么将规模调整到零是必须的。这是朝正确方向迈出的一大步,请尽快去掉VPC设置吧 😀

使用 Application Signals 跟踪 AWS Lambda 构建的无服务器应用性能

这是一个关于使用 AWS Lambda 构建的无服务器应用程序的性能跟踪的 AWS 博客文章。你可以通过访问此链接来获取更多信息:https://aws.amazon.com/blogs/aws/track-performance-of-serverless-applications-built-using-aws-lambda-with-application-signals/

Amazon CloudWatch 应用程序信号功能去年为 EC2、EKS 和 ECS 推出了,现在也支持 Lambda(仅限 Python 和 Node.js 运行时)。现在我们有指标和跟踪选项,真是太酷了!

当你开启这一功能时,Application Signals 会自动使用增强的 AWS 分发 OpenTelemetry (ADOT) 库对您的 Lambda 函数进行仪器化,这些库是通过一个 Lambda 层提供的。此 Lambda 层包含了自动仪器化 Application Signals 所需的所有库,并进行打包和部署。服务会自动使用 OpenTelemetry SDK 进行仪器化,以收集应用程序的指标,例如可用性、延迟、错误和故障等,涵盖所有流量。默认情况下,以 5% 的采样率来收集跟踪数据。

使用 Application Signals 预构建的标准化仪表板,您只需点击几下就能找到性能问题的根本原因,方法是深入查看关键业务操作和 API 的性能数据。

我喜欢“服务”这个视角,它包括了一系列Lambda函数以及定义SLOs的可能性,并可以看到SLI。如果你想了解更多关于这些术语的信息,可以查看我在这里的帖子 此处。 (SLOs:服务等级目标,SLI:服务等级指标)

Lambda进行OpenTelemetry集成确实不错,确实,但是它仍然需要我们使用这些Lambda层并维护每个区域的配置。希望它能够变得更加简单,不再需要使用这些层。如果您不清楚什么是Lambda层,或者想了解我关于使用它们的最佳实践,可以阅读我的文章这里,其中介绍了相关内容。

在 AWS Lambda 中的 Node.js 22 运行时环境

https://aws.amazon.com/blogs/compute/node-js-22-runtime-now-available-in-aws-lambda/

我对Node.js不太熟悉,所以我强烈建议你读读这篇文章。这篇文章也在GovCloud上,这真是个不错的安排!

AWS Lambda 的 ESM 指标

了解新的AWS Lambda事件源映射ESM指标
https://aws.amazon.com/blogs/compute/introducing-new-event-source-mapping-esm-metrics-for-aws-lambda/

通过这些新的 CloudWatch 指标,您可以了解 Lambda 事件源映射 (ESM) 检索队列或流来源的应用程序事件时的处理状态。本文将介绍新指标 PolledEventCountInvokedEventCountFilteredOutEventCountFailedInvokeEventCountDeletedEventCountDroppedEventCountOnFailureDestinationDeliveredEventCount ,并解释如何使用这些指标来排查 Lambda 函数的事件处理问题。

TL; DR — 你只需支付常规费用就能获取的新指标能提供更多关于Lambda事件源映射性能的透明度。然而,有时我不禁会想,是否真的存在信息过载这种情况。

Step 函数更好的开发体验及 JSONata

了解更多关于AWS博客的内容简化开发人员体验的文章,其中讨论了变量和Jsonata(一种用于转换和组合数据的语言)在AWS Step Functions中的应用。请参阅链接:https://aws.amazon.com/blogs/compute/simplifying-developer-experience-with-variables-and-jsonata-in-aws-step-functions/

通过变量和 JSONata,AWS Step Functions 提升了开发者的体验,使得使用更简单的代码编写优雅的工作流成为可能,这些代码符合 Amazon States Language (ASL) 标准,并且更接近常规编程范式。虽然我认为定义 StepFunction 状态机仍然不容易,但这种改善是朝着正确方向迈进的。我建议不要过度使用它,并尽量使状态机保持最直接最简短。有时,添加一个运行自定义代码的 Lambda 函数步骤比使用多个 JSONata 定义的步骤更简单,为什么?因为这样更容易扩展以进行更改,更容易通过单元测试或集成测试来测试 Lambda 函数,并且代码比用 JSONata 更易读。

Kafka事件源映射的预设模式:

https://aws.amazon.com/about-aws/whats-new/2024/11/aws-lambda-provisioned-mode-kafka-esms/ (AWS Lambda 预留模式 Kafka ESMs 新闻页面)

Kafka ESM的预配模式(Provisioned Mode)允许您通过在最小和最大轮询资源数量之间自动扩展来微调ESM的吞吐量,非常适合有严格性能需求的实时应用。

我觉得我们可以优化我们的ESM真是太好了,我猜未来其他ESM也会有这个优化选项。

使用预测扩展在 Amazon ECS 中优化计算资源

https://aws.amazon.com/blogs/containers/optimize-compute-resources-on-amazon-ecs-with-predictive-scaling/(本文介绍了如何使用预测扩展优化Amazon ECS上的计算资源。)

这是亚马逊 ECS 服务自动扩展中的一个新特性,旨在通过使用高级机器学习 (ML) 算法来预测需求的突然增加。预测性扩展会提前增加所需的任务数量,确保您的应用程序具有更高的可用性和更好的响应性,同时通过减少不必要的配置来节省成本。

在我看来,这次优化进一步缩小了与Fargate(即Fargate)之间的差距。在这里,我们在预计的流量激增之前进行扩展,因为AWS已经学习了流量的历史并提前预见到了流量的激增。一旦激增过去,扩展规模会再次缩减以节约成本。预测性扩展非常适合需求快速变化并遵循规律性模式的应用程序。

实现自定义域名用于 Amazon API Gateway 的私有终端节点

https://aws.amazon.com/blogs/compute/implementing-custom-domain-names-for-private-endpoints-with-amazon-api-gateway/

这也是私有API网关客户最想要的功能之一。

我得试一试,并在接下来的几周里分享我的想法。

自定义域名是您可以与应用程序一起使用的更简单、更直观的网址,以前仅支持公共 REST API 端点。现在,您可以将自定义域名关联到私有 REST API,并使用_ AWS 资源访问管理器 在不同账号之间共享这些自定义域名。

AWS re:Invent 大会

今年有很多公告,其中几个特别新颖!

好吧,我们先从大的说起。

Amazon Aurora DSQL(预览版)

你可以在这里找到更多关于Amazon Aurora DSQL预览的信息: https://aws.amazon.com/about-aws/whats-new/2024/12/amazon-aurora-dsql-preview/

大家都喜欢 DynamoDB 这个 NoSQL 数据库——它使用起来很方便,快速,并且完全无服务器化(不需要 VPC,可以缩减至零,只需为实际使用付费)。

我们终于得到了它的SQL版本——Aurora DSQL就是DynamoDB对应的SQL版本。不过,这是一个预览版,仅支持三个区域。哇哦,这确实很不错,我特别喜欢现在终于有了一个真正的无服务器SQL数据库——无需VPC、代理或堡垒服务器,直接使用IAM进行授权,拿到一个终端节点URL,就可以开始用了!

Amazon DynamoDB 全球表现已支持跨区域强一致性。

https://aws.amazon.com/about-aws/whats-new/2024/12/amazon-dynamodb-global-tables-previews-multi-region-strong-consistency/

在创建全局表时,可以配置其一致性模式。全局表提供了以下多区域一致性模式:最终的一致性强一致性(预览)

现在,Amazon DynamoDB 的全局表支持跨区域的强一致性。全局表是一种在多个区域之间复制表的机制。之前,复制项(所有 CRUD 操作——删除、更新、添加)的最长时间为 2.5 秒。在该区域出现故障的情况下,您可能会在这段时间内丢失数据。现在,这个时间可以变为零(额外收费)!仅在三个特定区域提供此功能,因此我们不建议在生产环境中使用,但这确实是一个开始。了解更多 here

S3 的各种改进:

https://aws.amazon.com/about-aws/whats-new/2024/12/amazon-s3-tables-apache-iceberg-tables-analytics-workloads/

https://aws.amazon.com/blogs/aws/new-amazon-s3-tables-storage-optimized-for-analytics-workloads/
亚马逊博客: 新的 Amazon S3 表格存储,为分析工作负载进行了优化。

S3 表引入了表桶功能,这是一种新的专门用来存储表格数据的桶类型。使用表桶,您可以快速创建表,并设置表级别的权限来管理访问。然后,您可以使用标准 SQL 来加载和查询表中的数据,并可以利用 Apache Iceberg 的高级分析功能,例如行级事务、可查询的快照、模式演进等功能。

https://aws.amazon.com/blogs/aws/introducing-queryable-object-metadata-for-amazon-s3-buckets-preview/

这个功能是辅助性的,帮助管理存有数百万对象的桶,通过标签、属性等元数据来找到对象。

_> 您可以通过指定要存储元数据的位置(例如,一个 S3 表桶和一个表名称)来为任何 S3 桶启用元数据捕获。元数据捕获将立即开始,并在几分钟内将更新存储到表中(包括创建对象、删除对象和更改对象元数据)。每次更新都会在表中生成一个新的记录,包含记录类型(如 CREATE、UPDATE_METADATA 或 DELETE)和序列号。

Amazon EventBridge 和 AWS Step Functions 宣布了与内部 API 集成的消息

https://aws.amazon.com/about-aws/whats-new/2024/12/amazon-eventbridge-step-functions-integration-private-apis/

https://aws.amazon.com/blogs/aws/securely-share-aws-resources-across-vpc-and-account-boundaries-with-privatelink-vpc-lattice-eventbridge-and-step-functions/

(此链接指向一篇关于如何安全地在VPC和账户边界之间共享AWS资源的文章,涉及PrivateLink、VPC Lattice、EventBridge和Step Functions等服务。)

今天,一些客户使用AWS Lambda函数或Amazon Simple Queue Service (Amazon SQS)队列将数据传输到VPC中。这种不分领域的繁重任务可以被更简单和高效的AWS RAM方案所替代。一旦共享资源配置,你就可以使用EventBridge和Step Functions了(详情请见指南)。

亚马逊EventBridge和AWS Step Functions现在可以与通过AWS PrivateLink和Amazon VPC Lattice支持的私有APIs集成。

客户可以安全地将现有的系统与云原生应用程序集成,利用事件驱动架构和工作流编排,并通过完全管理的连接,安全地与私有 HTTPS API 进行交互。

简单英语 🚀

感谢你成为我们的一员!在你离开之前,加入_In Plain English社区:,

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP