本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
QuickStart: 将 Node.js 应用程序部署到 Elastic Beanstalk
本 QuickStart 教程将引导你完成创建 Node.js 应用程序并将其部署到 AWS Elastic Beanstalk 环境。
注意
本 QuickStart 教程仅用于演示目的。请勿将本教程中创建的应用程序用于生产流量。
Sections
您的 AWS account
如果你还不是 AWS 客户,你需要创建一个 AWS account。注册即可访问 Elastic Beanstalk 和其他 AWS 您需要的服务。
如果你已经有一个 AWS 账户,你可以继续前进先决条件。
注册获取 AWS 账户
如果你没有 AWS 账户,请完成以下步骤来创建一个。
要注册 AWS 账户
打开https://portal.aws.amazon.com/billing/注册。
按照屏幕上的说明进行操作。
在注册时,将接到一通电话,要求使用电话键盘输入一个验证码。
当你注册时 AWS 账户,一个 AWS 账户根用户已创建。root 用户可以访问所有内容 AWS 服务 以及账户中的资源。作为安全最佳实践,请为用户分配管理访问权限,并且只使用根用户来执行需要根用户访问权限的任务。
AWS 注册过程完成后会向您发送一封确认电子邮件。您可以随时前往 https://aws.amazon.com/
创建具有管理访问权限的用户
在你注册之后 AWS 账户,保护你的 AWS 账户根用户,启用 AWS IAM Identity Center,然后创建一个管理用户,这样你就不会使用 root 用户来执行日常任务。
保护你的 AWS 账户根用户
-
登录 。AWS Management Console
以账户所有者的身份选择 Root 用户并输入你的 AWS 账户 电子邮件地址。在下一页上,输入您的密码。 有关使用 root 用户登录的帮助,请参阅中以 root 用户身份登录 AWS 登录 用户指南。
-
为您的 root 用户开启多重身份验证 (MFA)。
有关说明,请参阅为您启用虚拟MFA设备 AWS 账户 用户指南中的 root IAM 用户(控制台)。
创建具有管理访问权限的用户
-
启用IAM身份中心。
有关说明,请参阅启用 AWS IAM Identity Center中的 AWS IAM Identity Center 用户指南。
-
在 IAM Identity Center 中,向用户授予管理访问权限。
有关使用教程 IAM Identity Center 目录 作为您的身份来源,请参阅使用默认设置配置用户访问权限 IAM Identity Center 目录中的 AWS IAM Identity Center 用户指南。
以具有管理访问权限的用户身份登录
-
要使用您的 Ident IAM ity Center 用户登录URL,请使用您在创建 Ident IAM ity Center 用户时发送到您的电子邮件地址的登录信息。
有关使用IAM身份中心用户登录的帮助,请参阅登录 AWS 访问中的门户 AWS 登录 用户指南。
先决条件
为了遵循本指南中的步骤,您需要命令行终端或 Shell,以便运行命令。命令显示在列表中,以提示符($)和当前目录名称(如果有)开头。
~/eb-project$ this is a command
this is output
在 Linux 和 macOS 中,您可使用您首选的 Shell 和程序包管理器。在 Windows 上,你可以安装适用于 Linux 的 Windows 子系统
EB CLI
本教程使用 Elastic Beanstalk 命令行界面 (EB)。CLI有关安装和配置 EB 的详细信息CLI,请参阅安装 Elastic Beanstalk 命令行界面和配置 EB CLI。
Node.js
按照 Node.js 网站上的 “如何安装 Node.js
运行以下命令验证您的 Node.js 安装情况。
~$ node -v
步骤 1:创建 Node.js 应用程序
创建项目目录。
~$ mkdir eb-nodejs
~$ cd eb-nodejs
接下来,创建一个您将使用 Elastic Beanstalk 部署的应用程序。我们将创建一个 “Hello World” RESTful 网络服务。
例 ~/eb-nodejs/server.js
const http = require('node:http'); const hostname = '127.0.0.1'; const port = 8080; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello Elastic Beanstalk!\n'); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });
此应用程序在端口 8080 上打开监听器。对于 Node.js,Elastic Beanstalk 默认通过端口 8080 将请求转发到你的应用程序。
步骤 2:在本地运行应用程序
运行以下命令以在本地运行应用程序。
~/eb-nodejs$ node server.js
您应该会看到以下文本。
Server running at http://127.0.0.1:8080/
http://127.0.0.1:8080/
在您的网络浏览器中输入URL地址。浏览器应显示 “Hello Elastic Beanstalk!”。
第 3 步:使用 EB 部署你的 Node.js 应用程序 CLI
运行以下命令为此应用程序创建 Elastic Beanstalk 环境。
创建环境并部署 Node.js 应用程序
-
使用eb init命令初始化 EB CLI 存储库。
~/eb-nodejs$
eb init -p node.js nodejs-tutorial --region us-east-2
此命令将创建一个名为的应用程序,
nodejs-tutorial
并将您的本地存储库配置为使用最新 Node.js 平台版本创建环境。 -
(可选)eb init再次运行以配置默认密钥对,这样您就可以SSH用来连接运行应用程序的EC2实例。
~/eb-nodejs$
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。
-
创建环境并使用 eb create 将应用程序部署到此环境中。Elastic Beanstalk 会自动为您的应用程序生成一个 zip 文件并将其EC2部署到环境中的实例。部署应用程序后,Elastic Beanstalk 在端口 8080 上启动它。
~/eb-nodejs$
eb create nodejs-env
Elastic Beanstalk 创建您的环境大约需要五分钟。
第 4 步:在 Elastic Beanstalk 上运行你的应用程序
创建环境的过程完成后,使用打开您的网站eb open。
~/eb-nodejs$ eb open
恭喜您!你已经用 Elastic Beanstalk 部署了一个 Node.js 应用程序!这将使用为应用程序创建的域名打开一个浏览器窗口。
第 5 步:清理
完成应用程序的使用后,您可以终止您的环境。Elastic Beanstalk 会终止所有东西 AWS 与您的环境关联的资源。
要使用 EB 终止您的 Elastic Beanstalk 环境,CLI请运行以下命令。
~/eb-nodejs$ eb terminate
AWS 您的应用程序的资源
您刚刚创建了一个单实例应用程序。它是一个简单的示例应用程序,只有一个EC2实例,因此不需要负载平衡或 auto Scaling。对于单实例应用程序,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 组会扩展或收缩以进行响应。
-
AWS CloudFormation 堆栈 — Elastic Beanstalk 使用 AWS CloudFormation 在您的环境中启动资源并传播配置更改。资源是在模板中定义的,您可以在模板中查看 AWS CloudFormation 控制台
。 -
域名-以以下形式路由到您的 Web 应用程序的域名
subdomain
.region
.elasticbeanstalk.com。
Elastic Beanstalk 管理所有这些资源。当您终止环境时,Elastic Beanstalk 会终止其包含的所有资源。
后续步骤
有了运行应用程序的环境以后,您随时可以部署新的应用程序版本或不同的应用程序。部署新应用程序版本的速度非常快,因为它不需要预置或重启EC2实例。您还可以使用 Elastic Beanstalk 控制台探索您的新环境。有关详细步骤,请参阅本指南入门一章中的探索您的环境。
尝试更多教程
如果您想尝试其他包含不同示例应用程序的教程,请参阅更多 Node.js 的 Elastic Beanstalk 示例应用程序和教程。
部署一两个示例应用程序并准备好开始在本地开发和运行 Node.js 应用程序之后,请参阅为 Elastic Beanstalk 设置 Node.js 开发环境。
使用 Elastic Beanstalk 控制台进行部署
您也可以使用 Elastic Beanstalk 控制台启动示例应用程序。有关详细步骤,请参阅本指南入门一章中的创建示例应用程序。