本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Go 平台
G AWS App Runner o 平台提供托管运行时。每个运行时都可以轻松构建和运行基于 Go 版本的 Web 应用程序的容器。当你使用 Go 运行时时,App Runner 从托管 Go 运行时镜像开始。此镜像基于 Amazon Linux Docker 镜像
在使用 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-调用CreateService或 UpdateServiceAPI 操作。使用CodeConfigurationValues数据类型的
BuildCommand
和StartCommand
成员来指定命令。 -
使用配置文件-在最多三个构建阶段中指定一个或多个构建命令,并指定一个用于启动应用程序的运行命令。还有其他可选的配置设置。
提供配置文件是可选的。使用控制台或 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