

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 開放原始碼儲存庫
<a name="runtimes-open-source"></a>

AWS Lambda 提供各種開放原始碼工具、程式庫和元件，協助您建置、自訂和最佳化無伺服器應用程式。這些資源包括執行時間界面用戶端、事件程式庫、容器基礎映像、開發工具和範例專案，這些專案由 GitHub 維護 AWS 和提供。透過利用這些開放原始碼儲存庫，您可以擴展 Lambda 的功能、建立自訂執行時間、處理來自各種 AWS 服務的事件，以及深入了解函數的效能。本頁概要介紹支援 Lambda 開發的關鍵開放原始碼專案。

## 執行時期介面用戶端
<a name="open-source-ric"></a>

Lambda 執行時期介面用戶端 (RIC) 是開放原始碼程式庫，可實作[執行時期 API](runtimes-api.md) 並管理函式程式碼與 Lambda 服務之間的互動。這些用戶端負責接收調用事件、傳遞內容資訊以及報告錯誤。

Lambda 受管執行時期和容器基礎映像所使用的執行時期介面用戶端，會以開放原始碼形式發布。在建置自訂執行時期或擴展現有的執行時期時，可使用這些開放原始碼程式庫來簡化實作。下列開放原始碼 GitHub 儲存庫包含 Lambda RIC 的原始程式碼：
+ [Node.js Runtime Interface Client](https://github.com/aws/aws-lambda-nodejs-runtime-interface-client)
+ [Python Runtime Interface Client](https://github.com/aws/aws-lambda-python-runtime-interface-client)
+ [Java Runtime Interface Client](https://github.com/aws/aws-lambda-java-libs/tree/main/aws-lambda-java-runtime-interface-client)
+ [Ruby Runtime Interface Client](https://github.com/aws/aws-lambda-ruby-runtime-interface-client)
+ [.NET Runtime Interface Client](https://github.com/aws/aws-lambda-dotnet)
+ [Rust 執行期界面用戶端](https://github.com/aws/aws-lambda-rust-runtime)
+ [Go Runtime Interface Client](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 Base Images](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 Event Library](https://github.com/aws/aws-lambda-java-libs/tree/main/aws-lambda-java-events)
+ [.NET Event Libraries](https://github.com/aws/aws-lambda-dotnet/tree/master/Libraries/src)
+ [Go Event Library](https://github.com/aws/aws-lambda-go/tree/main/events)
+ [Rust Event Library](https://github.com/awslabs/aws-lambda-rust-runtime)

對於 Node.js、Python 和 Ruby 等直譯式語言，事件可以直接剖析為 JSON 物件，無需額外的獨立程式庫。不過，使用 Node.js 和 Python 的開發人員可以利用 的 powertools 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 Base Images](https://github.com/aws/aws-lambda-base-images) 儲存庫和[使用容器映像建立 Lambda 函數](images-create.md)。

## 開發工具
<a name="open-source-development-tools"></a>

AWS 提供額外的開放原始碼開發工具，協助您建置和最佳化 Lambda 函數：

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

的 Powertools 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 和 .NET Core 伺服器用於託管 .NET Core 應用程式 AWS Lambda 的工具。

## 專案範例
<a name="open-source-sample-projects"></a>

在 [Serverless Land 儲存庫](https://serverlessland.com/repos)中探索 Lambda 範例專案和應用程式的完整集合。這些範例示範了各種 Lambda 使用案例、整合模式與最佳實務，能協助您開始使用無伺服器應用程式。