

AWS App Runner 自 2026 年 4 月 30 日起，不再開放給新客戶。如果您想要使用 App Runner，請在該日期之前註冊。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[AWS App Runner 可用性變更](https://docs.aws.amazon.com/apprunner/latest/dg/apprunner-availability-change.html)。

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

# 使用 Go 平台
<a name="service-source-code-go1"></a>

**重要**  
App Runner 將於 2025 年 12 月 1 日結束對 **Go 1.18** 的支援。如需建議和詳細資訊，請參閱 [受管執行時間版本的終止支援](service-source-code.md#service-source-code.managed-platforms.eos)。

 AWS App Runner Go 平台提供受管執行時間。每個執行時間都可讓您根據 Go 版本使用 Web 應用程式輕鬆建置和執行容器。當您使用 Go 執行時間時，App Runner 會從受管 Go 執行時間映像開始。此映像以 [Amazon Linux Docker 映像](https://hub.docker.com/_/amazonlinux)為基礎，並包含 Go 版本和一些工具的執行時間套件。App Runner 使用此受管執行期映像做為基礎映像，並新增您的應用程式程式碼來建置 Docker 映像。然後，它會部署此映像，以在容器中執行您的 Web 服務。

 當您使用 App Runner 主控台或 [CreateService](https://docs.aws.amazon.com/apprunner/latest/api/API_CreateService.html) API 操作[建立服務時，](manage-create.md)您可以指定 App Runner 服務的執行時間。您也可以指定執行時間做為原始程式碼的一部分。在程式碼儲存庫中包含的 [App Runner 組態檔案中](config-file.md)使用 `runtime`關鍵字。受管執行時間的命名慣例為 *<language-name><major-version>*。

如需有效的 Go 執行時間名稱和版本，請參閱 [Go 執行時間版本資訊](service-source-code-go-releases.md)。

App Runner 會在每次部署或服務更新時，將服務的執行時間更新為最新版本。如果您的應用程式需要特定版本的受管執行時間，您可以使用 [App Runner 組態檔案中](config-file.md)的 `runtime-version`關鍵字來指定它。您可以鎖定任何層級的版本，包括主要或次要版本。App Runner 只會對服務的執行時間進行較低層級的更新。

Go 執行時間的版本語法： `major[.minor[.patch]]`

例如：`1.18.7`

下列範例示範版本鎖定：
+ `1.18` – 鎖定主要和次要版本。App Runner 只會更新修補程式版本。
+ `1.18.7` – 鎖定至特定修補程式版本。App Runner 不會更新您的執行時間版本。

**Topics**
+ [Go 執行時間組態](#service-source-code-go1.config)
+ [Go 執行時間範例](#service-source-code-go1.examples)
+ [Go 執行時間版本資訊](service-source-code-go-releases.md)

## Go 執行時間組態
<a name="service-source-code-go1.config"></a>

當您選擇受管執行時間時，您也必須至少設定建置和執行命令。您可以在[建立](manage-create.md)或[更新](manage-configure.md) App Runner 服務時設定它們。您可以使用下列其中一種方法執行此操作：
+ **使用 App Runner 主控台** – 在建立程序或組態索引標籤**的設定建置**區段中指定命令。
+ **使用 App Runner API** – 呼叫 [CreateService](https://docs.aws.amazon.com/apprunner/latest/api/API_CreateService.html) 或 [UpdateService](https://docs.aws.amazon.com/apprunner/latest/api/API_UpdateService.html) API 操作。使用 [CodeConfigurationValues](https://docs.aws.amazon.com/apprunner/latest/api/API_CodeConfigurationValues.html) 資料類型的 `BuildCommand`和 `StartCommand`成員指定命令。
+ **使用[組態檔案](config-file.md)** – 在最多三個建置階段指定一或多個建置命令，以及用於啟動應用程式的單一執行命令。還有其他選用的組態設定。

提供組態檔案是選用的。當您使用主控台或 API 建立 App Runner 服務時，您可以指定 App Runner 在建立時直接從組態檔案取得您的組態設定。

## Go 執行時間範例
<a name="service-source-code-go1.examples"></a>

下列範例顯示用於建置和執行 Go 服務的 App Runner 組態檔案。

### Minimal Go 組態檔案
<a name="service-source-code-go1.examples.minimal"></a>

此範例顯示您可以搭配 Go 受管執行時間使用的最小組態檔案。如需 App Runner 使用最小組態檔案所做的假設，請參閱 [組態檔案範例](config-file-examples.md#config-file-examples.managed)。

**Example apprunner.yaml**  

```
version: 1.0
runtime: go1
build:
  commands:
    build:
      - go build main.go
run:
  command: ./main
```

### Extended Go 組態檔案
<a name="service-source-code-go1.examples.extended"></a>

此範例顯示使用 Go 受管執行時間的所有組態金鑰。

**注意**  
這些範例中使用的執行時間版本為 *1.18.7。*您可以將其取代為您想要使用的版本。如需最新支援的 Go 執行時間版本，請參閱 [Go 執行時間版本資訊](service-source-code-go-releases.md)。

**Example apprunner.yaml**  

```
version: 1.0
runtime: go1
build:
  commands:
     pre-build:
      - scripts/prebuild.sh
    build:
      - go build main.go
    post-build:
      - scripts/postbuild.sh
  env:
    - name: MY_VAR_EXAMPLE
      value: "example"
run:
  runtime-version: 1.18.7
  command: ./main
  network:
    port: 3000
    env: APP_PORT
  env:
    - name: MY_VAR_EXAMPLE
      value: "example"
```

### 完成 Go 應用程式來源
<a name="service-source-code-go1.examples.end2end"></a>

這些範例顯示您可以部署到 Go 執行時間服務的完整 Go 應用程式的原始碼。

**Example main.go**  

```
package main
import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprint(w, "<h1>Welcome to App Runner</h1>")
    })
    fmt.Println("Starting the server on :3000...")
    http.ListenAndServe(":3000", nil)
}
```

**Example apprunner.yaml**  

```
version: 1.0
runtime: go1
build:
  commands:
    build:
      - go build main.go
run:
  command: ./main
  network:
    port: 3000
    env: APP_PORT
```