

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

# 使用 Go 建置 Lambda 函數
<a name="lambda-golang"></a>

Go 的實作方式與其他受管執行期不同。由於 Go 程式碼原生編譯至可執行的二進位檔，因此不需要專用語言執行時期。應使用[僅限作業系統的執行時期](runtimes-provided.md) (`provided` 執行時期系列) 將 Go 函數部署至 Lambda。

**Topics**
+ [Go 執行期支援](#golang-al1)
+ [工具與程式庫](#golang-libraries)
+ [定義 Go 格式的 Lambda 函數處理常式](golang-handler.md)
+ [使用 Lambda 內容物件擷取 Go 函數資訊](golang-context.md)
+ [使用 .zip 封存檔部署 Go Lambda 函數](golang-package.md)
+ [使用容器映像來部署 Go Lambda 函數](go-image.md)
+ [使用 Go Lambda 函數的層](golang-layers.md)
+ [記錄和監控 Go Lambda 函數](golang-logging.md)
+ [在 中檢測 Go 程式碼 AWS Lambda](golang-tracing.md)

## Go 執行期支援
<a name="golang-al1"></a>

Lambda 的 Go 1.x 受管執行時期已[棄用](lambda-runtimes.md#runtime-support-policy)。如果擁有使用 Go 1.x 執行時期的函數，則必須將函數遷移至 `provided.al2023` 或 `provided.al2`。`provided.al2023` 與 相比， 和 `provided.al2`執行時間提供多種優勢`go1.x`，包括支援 arm64 架構 (AWS Graviton2 處理器）、較小的二進位檔，以及稍快的調用時間。

本次遷移不需要變更任何程式碼。唯一必須做出的變更與建置部署套件的方式以及用來建立函數的執行期有關。如需詳細資訊，請參閱*AWS 運算部落格*上的[將 AWS Lambda 函數從 Go1.x 執行時間遷移至 Amazon Linux 2 上的自訂執行時間。](https://aws.amazon.com/blogs/compute/migrating-aws-lambda-functions-from-the-go1-x-runtime-to-the-custom-runtime-on-amazon-linux-2/)


| Name | 識別符 | 作業系統 | 取代日期 | 封鎖函數建立 | 封鎖函數更新 | 
| --- | --- | --- | --- | --- | --- | 
| 僅限作業系統的執行期 | `provided.al2023` | Amazon Linux 2023 |  2029 年 6 月 30 日  |  2029 年 7 月 31 日  |  2029 年 8 月 31 日  | 
| 僅限作業系統的執行期 | `provided.al2` | Amazon Linux 2 |  2026 年 7 月 31 日  |  2026 年 8 月 31 日  |  2026 年 9 月 30 日  | 

## 工具與程式庫
<a name="golang-libraries"></a>

Lambda 為 Go 執行時間提供以下工具和程式庫：
+ [適用於 Go 的 AWS SDK v2](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2)：適用於 Go 程式設計語言的官方 AWS SDK。
+ [github.com/aws/aws-lambda-go/lambda](https://github.com/aws/aws-lambda-go/tree/master/lambda)：針對 Go 實作 Lambda 程式設計模型。此套件由 AWS Lambda 用來叫用您的[處理常式](golang-handler.md)。
+ [github.com/aws/aws-lambda-go/lambdacontext](https://github.com/aws/aws-lambda-go/tree/master/lambdacontext)：從[內容物件](golang-context.md)取得內容資訊的輔助工具。
+ [github.com/aws/aws-lambda-go/events](https://github.com/aws/aws-lambda-go/tree/master/events)：此程式庫提供常用事件來源整合的類型定義。
+ [github.com/aws/aws-lambda-go/cmd/build-lambda-zip](https://github.com/aws/aws-lambda-go/tree/master/cmd/build-lambda-zip)：這個工具可以用來在 Windows 上建立 .zip 檔案封存。

如需詳細資訊，請參閱 GitHub 上的 [aws-lambda-go](https://github.com/aws/aws-lambda-go)

Lambda 為 Go 執行時間提供下列範例應用程式：

**以 Go 編寫的範例 Lambda 應用程式**
+ [go-al2](https://github.com/aws-samples/sessions-with-aws-sam/tree/master/go-al2)：傳回公有 IP 地址的「hello world」函數。此應用程式使用 `provided.al2` 自訂執行期。
+ [blank-go](https://github.com/awsdocs/aws-lambda-developer-guide/tree/main/sample-apps/blank-go) – Go 函數，顯示 Lambda Go 程式庫、記錄、環境變數和 AWS SDK 的使用方式。此應用程式使用 `go1.x` 執行期。