AWS 最近宣布开源库Lambda Powertools 现在支持 .NET . 开发人员库有助于在运行基于 .NET 6 或更高版本的 Lambda 函数时实现可观察性,减少自定义代码量。
Powertools for .NET在 AWS SDK 和其他托管服务之上提供抽象,可帮助开发人员将Well-Architected Serverless可观察性最佳实践整合到 .NET Lambda 代码中。
该库包括三个核心功能:Tracing,一个分布式跟踪,用于将跟踪发送到AWS X-Ray,Logging,一个输出结构化 JSON 的记录器,以及Metrics,使用 CloudWatch Embedded Metric Format异步捕获指标。Powertools 目前支持用 C# 编写的 Lambda 函数,支持运行时版本 .NET 6 和更新版本。
AWS 高级解决方案架构师Amir Khairalomoum展示了如何使用无服务器应用程序模型实施可观察性和管理部署。他写:
适用于 .NET 实用程序的 AWS Lambda Powertools 以 NuGet 包的形式提供 每个核心实用程序都有一个单独的 NuGet 包(AWS.Lambda.Powertools.Logging、AWS.Lambda.Powertools.Metrics 和 AWS.Lambda.Powertools.Tracing)。它允许你只添加你需要的包。这有助于缩小 Lambda 包的大小,从而提高性能。
例如,Logging 包从 Lambda 上下文中捕获关键字段,冷启动并将日志输出结构化为 JSON。它支持采样,为一定比例的请求启用DEBUG日志级别。要在应用程序中实现结构化日志记录,开发人员应将 Powertools 日志记录库添加到项目中,并从 NuGet 库、Visual Studio 编辑器或使用 .NET CLI 命令安装包:
dotnet 添加包 AWS.Lambda.Powertools.Logging
在Serverless Land上,片段可用于标准化功能日志、自定义指标和使用 Powertools进行跟踪。
根据开发人员的长期要求,新的 .NET 版本是在 Powertools for Python、Java和TypeScript发布之后发布的。Tracing 、Logging和Metrics包可用于所有语言,而其他实用程序(如幂等性或批处理)则取决于每种语言和开发人员的要求。埃森哲的无服务器应用程序架构师 Michael Walmsley评论道:
为什么这很重要?它支持真正的多语言开发,并在日志记录中提供一致的输出,这对于实现更简单的可观察性至关重要。标准化有助于跨这些工具使更多团队能够协作并在他们所在的地方开会!GitHub 上提供了适用于 .NET 的 Powertools 的文档和源代码。关于作者,雷纳托洛西奥,作为云架构师、技术主管和云服务专家,Renato 拥有丰富的经验。目前,他住在柏林,作为首席云架构师远程工作。他的主要兴趣领域包括云服务和关系数据库。他是 InfoQ 的编辑,也是公认的 AWS 数据英雄。