AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

使用 AWS Elastic Beanstalk Go 平台

您可以使用 AWS Elastic Beanstalk 来运行、生成和配置基于 Go 的应用程序。对于简单的 Go 应用程序,有两种部署方式:

  • 通过根目录中名为 application.go 的源文件提供源包,该文件包含应用程序的主程序包。Elastic Beanstalk 使用以下命令生成二进制文件:

    go build -o bin/application application.go

    应用程序生成后,Elastic Beanstalk 在端口 5000 上启动它。

  • 通过名为 application 的二进制文件提供源包。此二进制文件可位于源包的根目录或源包的 bin/ 目录中。如果您将 application 二进制文件同时放在这两个位置,Elastic Beanstalk 将使用 bin/ 目录中的文件。

    Elastic Beanstalk 在端口 5000 上启动此应用程序。

对于更复杂的 Go 应用程序,有两种部署方式:

  • 提供包含应用程序源文件的源包,同时提供 BuildfileProcfile。Buildfile 包含用于生成应用程序的命令,Procfile 包含用于运行应用程序的指令。

  • 提供包含应用程序二进制文件的源包,同时提供 Procfile。Procfile 包含用于运行应用程序的指令。

执行顺序

当应用程序源包中包含多种类型的配置时,它们将按以下顺序执行:上一步骤完成后才会执行下一步骤。

  • 步骤 1:配置文件中定义的 commandsfilespackages

  • 步骤 2:Buildfile 命令

  • 步骤 3:配置文件中的 container_commands

  • 步骤 4:Procfile 命令 (所有命令同时运行)

有关使用配置文件中的 commandsfilespackagescontainer_commands 的更多信息,请参阅自定义 Linux 服务器上的软件

配置 Go 环境

对于 Elastic Beanstalk 上的 Go 平台配置,Elastic Beanstalk 除了它为所有环境提供的标准选项之外,还提供了一些特定于平台的选项。通过这些选项,您可以配置在您的应用程序之前运行以提供静态文件的 nginx 代理。

您可以使用 AWS 管理控制台启用到 Amazon S3 的日志轮换并配置应用程序可从该环境中读取的变量。

在 Elastic Beanstalk 控制台中配置 Go 环境

  1. 打开 Elastic Beanstalk 控制台

  2. 导航到您的环境的管理页

  3. 选择 Configuration

  4. Software 配置卡上,选择 Modify

日志选项

“Log Options (日志选项)”部分有两个设置:

  • Instance profile– 指定有权访问 Amazon S3 存储桶的实例配置文件,该存储桶与应用程序关联。

  • Enable log file rotation to Amazon S3 - 指定应用程序的 Amazon EC2 实例的日志文件是否应复制到与应用程序相关联的 Amazon S3 存储桶。

静态文件

为了提高性能,您可以配置代理服务器,从 Web 应用程序内的一组目录中提供静态文件(例如 HTML 或图像)。当代理服务器收到对指定路径下的某个文件的请求时,它将直接提供此文件而不是将请求路由至您的应用程序。您可以在 Modify software (修改软件) 配置页面的 Static Files (静态文件) 部分中设置虚拟路径和目录映射。添加映射时,如果您添加另一个映射,则会显示额外的一行。要删除映射,请单击“Remove”。

 Elastic Beanstalk 控制台中“Modify software (修改软件)”配置页面中的静态文件配置

如果看不到 Static Files (静态文件) 部分,您必须使用配置选项至少添加一个映射。例如,以下配置文件添加两个虚拟路径和目录映射,目录位于您的源包的顶层。

例 .ebextensions/golang-static-files.config

option_settings: aws:elasticbeanstalk:container:golang:staticfiles: /html: statichtml /images: staticimages

环境属性

Environment Properties (环境属性) 部分,您可以在运行应用程序的 Amazon EC2 实例上指定环境配置设置。环境属性会以密钥值对的形式传递到应用程序。

在运行于 Elastic Beanstalk 中的 Go 环境内,可通过使用 os.Getenv 函数访问环境变量。例如,您可以使用以下代码将名为 API_ENDPOINT 的属性读取到某个变量:

endpoint := os.Getenv("API_ENDPOINT")

参阅 环境属性和其他软件设置 了解更多信息。

aws:elasticbeanstalk:container:golang:staticfiles 命名空间

您可以使用配置文件设置配置选项并在部署期间执行其他实例配置。配置选项可以通过您使用的 Elastic Beanstalk 服务或平台定义并组织到命名空间中。

Go 平台除支持所有平台支持的命名空间外,还支持一个平台特定的配置命名空间。使用 aws:elasticbeanstalk:container:golang:staticfiles 命名空间可以定义一些选项,通过它们将您的 Web 应用程序路径映射到应用程序源包中包含静态内容的文件夹。

例如,该配置文件告诉代理服务器在路径 /images 上的 myimages 文件夹中提供文件:

例 .ebextensions/go-settings.config

option_settings: aws:elasticbeanstalk:container:golang:staticfiles: /images: myimages

Elastic Beanstalk 提供许多配置选项来自定义您的环境。除了配置文件之外,您还可使用控制台、保存的配置、EB CLI 或 AWS CLI 来配置选项。参阅 配置选项 了解更多信息。