

# 开源存储库
<a name="runtimes-open-source"></a>

AWS Lambda 提供各种开源工具、库和组件，帮助您构建、自定义和优化无服务器应用程序。这些资源包括由 AWS 维护并在 GitHub 上提供的运行时接口客户端、事件库、容器基础映像、开发工具和示例项目。通过利用这些开源存储库，您可以扩展 Lambda 的功能、创建自定义运行时、处理来自各种 AWS 服务的事件，并深入了解函数的性能。本页概述了支持 Lambda 开发的主要开源项目。

## 运行时接口客户端
<a name="open-source-ric"></a>

Lambda 运行时接口客户端 (RIC) 是一些开源库，用于实现[运行时 API](runtimes-api.md) 并管理函数代码与 Lambda 服务之间的交互。这些客户端负责接收调用事件、传递上下文信息以及报告错误。

Lambda 托管运行时和容器基本映像所使用的运行时接口客户端均作为开源发布。当您构建自定义运行时或扩展现有运行时时，可以使用这些开源库来简化实现。以下开源 GitHub 存储库包含 Lambda RIC 的源代码：
+ [Node.js 运行时接口客户端](https://github.com/aws/aws-lambda-nodejs-runtime-interface-client)
+ [Python 运行时接口客户端](https://github.com/aws/aws-lambda-python-runtime-interface-client)
+ [Java 运行时接口客户端](https://github.com/aws/aws-lambda-java-libs/tree/main/aws-lambda-java-runtime-interface-client)
+ [Ruby 运行时接口客户端](https://github.com/aws/aws-lambda-ruby-runtime-interface-client)
+ [.NET 运行时接口客户端](https://github.com/aws/aws-lambda-dotnet)
+ [Rust 运行时接口客户端](https://github.com/aws/aws-lambda-rust-runtime)
+ [Go 运行时系统接口客户端](https://github.com/aws/aws-lambda-go)
+ [Swift 运行时接口客户端](https://github.com/awslabs/swift-aws-lambda-runtime)（实验性）
+ [C\$1\$1 运行时接口客户端](https://github.com/awslabs/aws-lambda-cpp)（实验性）
+ [Lambda 基本映像](https://github.com/aws/aws-lambda-base-images)

有关使用这些客户端构建自定义运行时的更多信息，请参阅[构建 AWS Lambda 的自定义运行时系统](runtimes-custom.md)。

## 事件库
<a name="open-source-event-libraries"></a>

Lambda 事件库提供类型定义和帮助程序实用程序，用于处理来自各种 AWS 服务的事件。这些库可帮助您以类型安全的方式解析和处理事件数据，从而更轻松地处理来自 Amazon S3、Amazon DynamoDB 和 Amazon API Gateway 等服务的事件。

对于编译语言，AWS 提供以下事件库：
+ [Java 事件库](https://github.com/aws/aws-lambda-java-libs/tree/main/aws-lambda-java-events)
+ [.NET 事件库](https://github.com/aws/aws-lambda-dotnet/tree/master/Libraries/src)
+ [Go 事件库](https://github.com/aws/aws-lambda-go/tree/main/events)
+ [Rust 事件库](https://github.com/awslabs/aws-lambda-rust-runtime)

对于 Node.js、Python 和 Ruby 等解释型语言，事件可以直接解析为 JSON 对象，而无需单独的库。但是，使用 Node.js 和 Python 的开发人员可以利用 powertools for AWS Lambda，它为 AWS 事件提供内置架构，其提供类型提示、数据验证和类似于编译语言库提供的功能。
+ [Powertools for TypeScript](https://docs.powertools.aws.dev/lambda/typescript/latest/features/parser/#built-in-schemas)
+ [Powertools for Python](https://docs.powertools.aws.dev/lambda/python/latest/utilities/parser/#built-in-models)

## 容器基本映像
<a name="open-source-container-base-images"></a>

AWS 提供开源容器基本映像，您可以将其作为构建 Lambda 函数容器映像的起点。这些基本映像包括运行时接口客户端以及在 Lambda 执行环境中运行函数所需的其他组件。

有关可用基本映像及其使用方法的更多信息，请参阅 [AWS Lambda 基本映像](https://github.com/aws/aws-lambda-base-images)存储库和[使用容器映像创建 Lambda 函数](images-create.md)。

## 开发工具
<a name="open-source-development-tools"></a>

AWS 提供了其他开源开发工具来帮助您构建和优化 Lambda 函数：

### Powertools for AWS Lambda
<a name="open-source-powertools"></a>

Powertools for AWS Lambda 通过必要的实用程序简化无服务器开发以防止重复处理，以及用于多记录处理和 Kafka 使用者库的批处理。这些功能可帮助您最大限度地减少代码复杂性和运营开销。

您还可以利用内置事件架构验证、结构化日志记录和跟踪以及参数存储集成，这些功能旨在加速创建生产就绪型 Lambda 函数，同时遵循 AWS 架构完善的最佳实践。

GitHub 存储库：
+ [Python](https://github.com/aws-powertools/powertools-lambda-python)
+ [TypeScript](https://github.com/aws-powertools/powertools-lambda-typescript)
+ [Java](https://github.com/aws-powertools/powertools-lambda-java)
+ [.NET](https://github.com/aws-powertools/powertools-lambda-dotnet)

### Java 开发工具
<a name="open-source-java-tools"></a>
+ [Java Profiler（实验性）](https://github.com/aws/aws-lambda-java-libs/tree/main/experimental/aws-lambda-java-profiler) - 一款用于分析 Java Lambda 函数的工具。
+ [Java 库](https://github.com/aws/aws-lambda-java-libs) - 一个包含用于 Lambda 开发的全面 Java 库和工具的存储库，其中包括 JUnit 测试实用程序和分析工具等关键项目。
+ [无服务器 Java 容器](https://github.com/aws/serverless-java-container) - 一个使您能够以最少更改在 Lambda 上运行现有 Java 应用程序的库。

### .NET 开发工具
<a name="open-source-dotnet-tools"></a>

[AWS Lambda .NET](https://github.com/aws/aws-lambda-dotnet) 存储库为 Lambda 开发提供 .NET 库和工具，包括用于 .NET CLI 的 AWS Lambda Lambda 工具和用于托管 .NET Core 应用程序的 .NET Core 服务器等关键项目。

## 示例项目
<a name="open-source-sample-projects"></a>

在 [Serverless Land 存储库](https://serverlessland.com/repos)中探索全面的示例 Lambda 项目和应用程序。这些示例演示了各种 Lambda 使用案例、集成模式和最佳实践，可帮助您开始使用无服务器应用程序