使用 Go 平台 - AWS App Runner

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Go 平台

G AWS App Runner o 平台提供托管运行时。每个运行时都可以轻松构建和运行基于 Go 版本的 Web 应用程序的容器。当你使用 Go 运行时时,App Runner 从托管 Go 运行时镜像开始。此镜像基于 Amazon Linux Docker 镜像,包含某个 Go 版本的运行时包和一些工具。App Runner 使用此托管运行时映像作为基础映像,并添加您的应用程序代码来构建 Docker 映像。然后,它会部署此映像以在容器中运行您的 Web 服务。

在使用 App Runner 控制台或 CreateServiceAPI 操作创建服务时,可以为 App Runner 服务指定运行时。您也可以将运行时指定为源代码的一部分。在包含在代码存储库中的 A pp Runner 配置文件中使用runtime关键字。托管运行时的命名约定是 <language-name><major-version>

有关有效的 Go 运行时名称和版本,请参阅Go 运行时版本信息

每次部署或服务更新时,App Runner 都会将服务的运行时更新到最新版本。如果您的应用程序需要托管运行时的特定版本,则可以使用 App Runner 配置文件中的runtime-version关键字进行指定。您可以锁定到任何级别的版本,包括主要版本或次要版本。App Runner 仅对服务的运行时进行较低级别的更新。

Go 运行时的版本语法:major[.minor[.patch]]

例如:1.18.7

以下示例演示了版本锁定:

  • 1.18— 锁定主要版本和次要版本。App Runner 仅更新补丁版本。

  • 1.18.7— 锁定到特定的补丁版本。App Runner 不会更新你的运行时版本。

Go 运行时配置

选择托管运行时时,还必须至少配置生成和运行命令。您可以在创建更新 App Runner 服务时对其进行配置。您可以使用以下方法之一来执行此操作:

  • 使用 App Runner 控制台-在创建过程或配置选项卡的 “配置构建” 部分中指定命令。

  • 使用 App Runner API-调用CreateServiceUpdateServiceAPI 操作。使用CodeConfigurationValues数据类型的BuildCommandStartCommand成员来指定命令。

  • 使用配置文件-在最多三个构建阶段中指定一个或多个构建命令,并指定一个用于启动应用程序的运行命令。还有其他可选的配置设置。

提供配置文件是可选的。使用控制台或 API 创建 App Runner 服务时,您可以指定 App Runner 是在创建时直接获取配置设置还是从配置文件中获取配置设置。

Go 运行时示例

以下示例显示了用于构建和运行 Go 服务的 App Runner 配置文件。

此示例显示了可以与 Go 托管运行时一起使用的最小配置文件。有关 App Runner 使用最小配置文件做出的假设,请参阅配置文件示例

例 apprunner.yaml
version: 1.0 runtime: go1 build: commands: build: - go build main.go run: command: ./main

此示例显示了在 Go 托管运行时中使用所有配置密钥的情况。

注意

这些示例中使用的运行时版本是 1.18.7。您可以将其替换为要使用的版本。有关支持的最新 Go 运行时版本,请参阅Go 运行时版本信息

例 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 运行时服务的完整 Go 应用程序的源代码。

例 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) }
例 apprunner.yaml
version: 1.0 runtime: go1 build: commands: build: - go build main.go run: command: ./main network: port: 3000 env: APP_PORT