在 AWS Elastic Beanstalk 上部署 Web 应用程序

入门指南

模块 1:构建 Web 应用程序

在此模块中,我们将创建一个 NodeJS Web 应用程序并在本地运行它。

简介

我们将创建一个非容器化的应用程序,并将其部署到云中。对于此示例,我们将使用 NodeJS 来构建一个 Web 应用程序。

该 Web 应用程序将是简单的 Web 应用程序服务器,它将提供静态 HTML 文件并具有一个 REST API 端点。本指南的重点不是指导您如何构建 Web 应用程序,因此您可以随意使用示例应用程序,或者构建自己的应用程序。虽然本指南侧重于使用 NodeJS,但您也可以使用其他 Elastic Beanstalk 支持的编程语言 (例如 Java、.NET、NodeJS、PHP、Ruby、Python、Go 和 Docker) 构建类似的 Web 应用程序。

您可以在本地计算机或 AWS Cloud9 环境中实现此操作。

您将学到的内容

  • 开发一个简单的 NodeJS Web 应用程序,该应用程序提供一个 HTML 文件并具有简单的 REST API
  • 在本地运行应用程序

 完成时间

10 分钟

 模块先决条件

  • 具有管理员级访问权限的 AWS 账户**
  • 推荐的浏览器:最新版 Chrome 或 Firefox

[**] 过去 24 小时内创建的账户可能尚不具有访问此教程所需服务的权限。

实施

创建客户端应用程序

第一步是为我们的应用程序新建一个目录。

mkdir my_webapp
cd my_webapp

然后可以初始化 NodeJS 项目。这将创建 package.json 文件,其中会包含 NodeJS 应用程序的所有定义。

npm init -y

创建 Express 应用程序

我们将使用 Express 作为 Web 应用程序框架。要使用此框架,我们需要在 NodeJS 项目中安装 Express 作为依赖项。

npm install express

运行此命令后,您将看到依赖项出现在 package.json 文件中。此外,还会创建 node_modules 目录和 package-lock.json 文件。

现在您可以创建名为 app.js 的新文件。该文件将包含我们的 NodeJS Express 服务器的业务逻辑。

我们现在准备好开始添加一些代码。我们需要添加的第一个对象是应用程序的依赖项 - 在本例中,Express 允许使用我们之前安装的模块,然后添加代码以启动 Web 服务器。我们将指定 Web 服务器使用端口 8080,因为这是 Elastic Beanstalk 默认使用的端口。

var express = require('express');
var app = express();
var fs = require('fs');
var port = 8080;

app.listen(port, function() {
  console.log('Server running at http://127.0.0.1:', port);
});

我们现在可以启动应用程序,但该应用程序不会执行任何操作,因为我们还没有定义任何代码来处理请求。

创建 REST API

我们现在将添加代码来为 HTTP REST API 调用提供响应。要创建我们的第一个 API 调用,请在端口定义和我们启动服务器的位置之间添加以下代码。

var express = require('express');
var app = express();
var fs = require('fs');
var port = 8080;

// New code
app.get('/test', function (req, res) {
    res.send('the REST endpoint test run!');
});


app.listen(port, function() {
  console.log('Server running at http://127.0.0.1:%s', port);
});

这只是为了说明如何将 /test 端点连接到我们的代码,您可以添加不同的响应或执行特定操作的代码,但这超出了本指南的范围。

提供 HTML 内容

我们的 Express NodeJS 应用程序还可以提供静态网页。我们需要创建一个 HTML 页面作为示例,因此接下来创建名为 index.html 的文件。

在此文件中,添加以下 HTML 和指向我们之前创建的 REST 端点的链接,以显示它如何连接到后端。

<html>
    <head>
        <title>Elastic Beanstalk App</title>
    </head>

    <body>
        <h1>Welcome to the demo for ElasticBeanstalk</h1>
        <a href="/test">Call the test API</a>
    </body>
</html>

要从我们的 Express 服务器提供此 HTML 页面,我们需要添加更多代码以在调用时呈现 / 路径。为此,请在 /test 调用上方添加以下代码:

app.get('/', function (req, res) {
    html = fs.readFileSync('index.html');
    res.writeHead(200);
    res.write(html);
    res.end();
});

每当发出对应用程序根目录 (/) 的请求时,此代码都会提供 index.html 文件。

在本地运行此代码

我们现在准备好运行应用程序并测试它是否在本地正常运作。为此,我们将使用脚本更新 package.json,以使其更易于运行。在 package.json 文件中,使用如下代码替换 scripts 部分:

"scripts": {
    "start": "node app.js"
  },

现在您可以转到终端并运行:

npm start

这将使用 URL http://127.0.0.1:8080http://localhost:8080 启动本地服务器。

将此 URL 粘贴到浏览器中时,您应该会看到以下内容:

要停止服务器,请使用 ctrl + c 停止运行 npm start 的终端中的进程。 

结论

在第一个模块中,我们构建了一个非常基本的 NodeJS 应用程序,并在本地运行它以确保它有效。在下一个模块中,我们将学习如何使用 AWS CDK 创建基础设施以在 AWS Elastic Beanstalk 上运行它。

下一步:创建基础设施

请就我们的表现提供反馈。