使用 Elastic Beanstalk Go 平台 - Amazon Elastic Beanstalk
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 Elastic Beanstalk Go 平台

本主题介绍如何在 Elastic Beanstalk 上配置、构建和运行你的 Go 应用程序。

Amazon Elastic Beanstalk 支持适用于不同版本的 Go 编程语言的许多平台分支。有关完整列表,请参阅Amazon 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 平台分支,您还可以在名为的文件中提供模块要求go.mod。有关更多信息,请参阅 Go 博客中的迁移到 Go 模块

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

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

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

Go 平台包括一个代理服务器,用于提供静态资产并将流量转发到您的应用程序。您可以扩展或覆盖默认代理配置,以适应高级方案。

有关扩展 Elastic Beanstalk 基于 Linux 的平台的各种方法的详细信息,请参阅 扩展 Elastic Beanstalk Linux 平台

配置 Go 环境

Go 平台设置允许您微调 Amazon EC2 实例的行为。您可以使用 Elastic Beanstalk 控制台编辑 Elastic Beanstalk 环境EC2的亚马逊实例配置。

使用 Elastic Beanstalk 控制台启用到 Amazon S3 的日志轮换,并配置应用程序可从环境中读取的变量。

在 Elastic Beanstalk 控制台中配置 Go 环境
  1. 打开 Elastic Beanstalk 控制台,然后在 “区域” 列表中,选择您的。 Amazon Web Services 区域

  2. 在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。

    注意

    如果您有多个环境,请使用搜索栏筛选环境列表。

  3. 在导航窗格中,选择 Configuration(配置)。

  4. Updates, monitoring, and logging(更新、监控和日志记录)配置类别中,选择 Edit(编辑)。

日志选项

“日志选项”部分有两个设置:

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

  • 启用向 Amazon S3 的日志文件轮换-指定是否将应用程序的 Amazon EC2 实例的日志文件复制到与您的应用程序关联的 Amazon S3 存储桶中。

静态文件

要提高性能,可以使用 “静态文件” 部分将代理服务器配置为从 Web 应用程序内的一组目录中提供静态文件(例如HTML或图像)。对于每个目录,您都将虚拟路径设置为目录映射。当代理服务器收到对指定路径下的某个文件的请求时,它将直接提供此文件,而不是将请求路由至您的应用程序。

有关使用配置文件或 Elastic Beanstalk 控制台配置静态文件的详细信息,请参阅 提供静态文件

环境属性

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

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

endpoint := os.Getenv("API_ENDPOINT")

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

Go 配置命名空间

您可以使用配置文件设置配置选项并在部署期间执行其他实例配置。配置选项可以是特定于平台的,也可以应用于整个 Elastic Beanstalk 服务中的所有平台。配置选项按命名空间进行组织。

Go 平台不定义任何特定于平台的命名空间。您可以使用 aws:elasticbeanstalk:environment:proxy:staticfiles 命名空间将代理配置为提供静态文件。有关详细信息和示例,请参阅提供静态文件

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

如果您的 Elastic Beanstalk Go 环境使用亚马逊 Linux 平台版本(AMI亚马逊 Linux 2 之前的版本),请阅读本节中的其他信息。

注意

您可以使用配置文件设置配置选项并在部署期间执行其他实例配置。配置选项可以是特定于平台的,也可以应用于整个 Elastic Beanstalk 服务中的所有平台。配置选项按命名空间进行组织。

注意

本主题中的信息仅适用于基于 Amazon Linux AMI (AL1) 的平台分支。AL2023/ AL2 平台分支与之前的 Amazon Linux AMI (AL1) 平台版本不兼容,需要不同的配置设置

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

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

例 .ebextensions/go-settings.config
option_settings: aws:elasticbeanstalk:container:golang:staticfiles: /html: statichtml /images: staticimages

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