View a markdown version of this page

QuickStart: 在 Elastic Beanstalk 上部署 Go 应用程序 - AWS Elastic Beanstalk

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

QuickStart: 在 Elastic Beanstalk 上部署 Go 应用程序

本 QuickStart 教程将引导你完成创建 Go 应用程序并将其部署到 AWS Elastic Beanstalk 环境的过程。

不用于生产用途

示例仅用于演示。请勿在生产环境中使用示例应用程序。

您的 AWS 账户

如果您还不是 AWS 客户,则需要创建一个 AWS 帐户。注册后,您就可以访问 Elastic Beanstalk AWS 和其他所需的服务。

如果您已经有一个 AWS 帐户,则可以继续前进先决条件

注册获取 AWS 账户

要开始使用 AWS,你需要一个 AWS 账户。有关创建的信息 AWS 账户,请参阅《AWS 账户管理 参考指南》 AWS 账户中的入门指南

先决条件

为了遵循本指南中的步骤,您需要命令行终端或 Shell,以便运行命令。命令显示在列表中,以提示符($)和当前目录名称(如果有)开头。

~/eb-project$ this is a command this is output

在 Linux 和 macOS 中,您可使用您首选的 Shell 和程序包管理器。在 Windows 上,你可以安装适用于 Linux 的 Windows 子系统来获取 Ubuntu 和 Bash 的 Windows-integrated 版本。

EB CLI

本教程使用 Elastic Beanstalk 命令行界面 (EB CLI)。有关安装和配置 EB CLI 的详细信息,请参阅 使用设置脚本安装 EB CLI(推荐)配置 EB CLI

步骤 1:创建 Go 应用程序

创建项目目录。

~$ mkdir eb-go ~$ cd eb-go

接下来,创建一个您将使用 Elastic Beanstalk 部署的应用程序。我们会创建一个“Hello World”RESTful Web 服务。

本示例输出根据访问服务所使用的路径而变化的自定义问候语。

在此目录中创建名为 application.go 的文本文件,包含以下内容:

~/eb-.go go/application
package main import ( "fmt" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { if r.URL.Path == "/" { fmt.Fprintf(w, "Hello World! Append a name to the URL to say hello. For example, use %s/Mary to say hello to Mary.", r.Host) } else { fmt.Fprintf(w, "Hello, %s!", r.URL.Path[1:]) } } func main() { http.HandleFunc("/", handler) http.ListenAndServe(":5000", nil) }

步骤 2:使用 EB CLI 部署 Go 应用程序

下一步,您将创建应用程序环境并使用 Elastic Beanstalk 部署已配置的应用程序。

创建环境并部署 Go 应用程序
  1. 使用 eb init 命令,初始化 EB CLI 存储库。

    ~/eb-go$ eb init -p go go-tutorial --region us-east-2 Application go-tutorial has been created.

    此命令创建名为 go-tutorial 的应用程序并配置您的本地存储库,以创建具有最新 Go 平台版本的环境。

  2. (可选)再次运行 eb init 以配置默认密钥对,以便使用 SSH 连接到运行您的应用程序的 EC2 实例。

    ~/eb-go$ eb init Do you want to set up SSH for your instances? (y/n): y Select a keypair. 1) my-keypair 2) [ Create new KeyPair ]

    如果您已有密钥对,请选择一个,或按提示创建一个。如果您没有看到提示或需要以后更改设置,请运行 eb init -i

  3. 创建环境并使用 eb create 将应用程序部署到此环境中。Elastic Beanstalk 会自动为您的应用程序生成一个 zip 文件,并在端口 5000 上启动该文件。

    ~/eb-go$ eb create go-env

    Elastic Beanstalk 大约需要五分钟来创建您的环境。

步骤 3:在 Elastic Beanstalk 上运行应用程序

当创建环境的过程完成后,使用 eb open 打开您的网站。

~/eb-go$ eb open

恭喜您!您已使用 Elastic Beanstalk 部署了 Go 应用程序!这将使用为应用程序创建的域名打开一个浏览器窗口。

步骤 4:清除

应用程序使用完毕时,您可以终止您的环境。Elastic Beanstalk AWS 会终止与您的环境关联的所有资源。

要使用 EB CLI 终止您的 Elastic Beanstalk 环境,请运行以下命令。

~/eb-go$ eb terminate

AWS 您的应用程序的资源

您刚刚创建了一个单实例应用程序。它可用作带有单个 EC2 实例的简单示例应用程序,因此不需要负载平衡或自动扩缩。对于单实例应用程序,Elastic Beanstalk 会创建以下资源: AWS

  • EC2 实例 - 配置来在您选择的平台上运行 Web 应用程序的 Amazon EC2 虚拟机。

    各平台运行一组不同的软件、配置文件和脚本以支持特定的语言版本、框架、Web 容器或其组合。大多数平台使用 Apache 或 nginx 作为在 Web 应用程序前处理 Web 流量的反向代理,向其转发请求、提供静态资产以及生成访问和错误日志。

  • 实例安全组 - 配置为允许端口 80 上的传入流量的 Amazon EC2 安全组。通过此资源,HTTP 流量可以从负载均衡器到达运行您的 Web 应用程序的 EC2 实例。默认情况下,其他端口不允许流量进入。

  • Amazon S3 存储桶 – 使用 Elastic Beanstalk 时创建的源代码、日志和其他构件的存储位置。

  • Amazon CloudWatch CloudWatch 警报 — 两个警报,用于监控您环境中实例的负载,并在负载过高或过低时触发。警报触发后,您的 Auto Scaling 组会扩展或收缩以进行响应。

  • CloudFormation 堆栈 — Elastic CloudFormation Beanstalk 用于在您的环境中启动资源并传播配置更改。这些资源在您可通过 CloudFormation 控制台查看的模板中定义。

  • 域名-以表单形式路由到您的 Web 应用程序的域名subdomainregion.elasticbeanstalk.com。

Elastic Beanstalk 管理所有这些资源。当您终止环境时,Elastic Beanstalk 会终止其包含的所有资源。

后续步骤

有了运行应用程序的环境以后,您随时可以部署新的应用程序版本或不同的应用程序。部署新应用程序版本非常快,因为不需要配置或重新启动 EC2 实例。您还可以使用 Elastic Beanstalk 控制台探索新环境。有关详细步骤,请参阅本指南入门一章中的探索您的环境

部署一到两个示例应用程序并准备好开始在本地开发和运行 Go 应用程序后,请参阅为 Elastic Beanstalk 设置 Go 开发环境

使用 Elastic Beanstalk 控制台进行部署

您还可以使用 Elastic Beanstalk 控制台来启动示例应用程序。有关详细步骤,请参阅本指南入门一章中的创建示例应用程序