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

入门指南

模块 3:部署 Web 应用程序

在本模块中,我们将应用程序部署到云中。

简介

在本模块中,您将学习打包 NodeJS 应用程序以进行部署。您还将学习如何使用 AWS CDK 预置在模块 2 中创建的所有 AWS Elastic beanstalk 资源。

您将学到的内容

  • 打包 NodeJS 应用程序
  • 构建和部署 CDK 应用程序
  • 更新 NodeJS 应用程序部署

 完成时间

10 分钟

 模块先决条件

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

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

实施

打包 NodeJS 应用程序

在模块 2 中,您了解到我们将使用 AWS CDK 的 S3 Asset 模块将 zip 文件中的应用程序上传到 S3。

为此,您需要为 NodeJS 应用程序创建一个 zip 文件,并将其放置在 AWS CDK 应用程序的根目录中。  将此 zip 文件命名为“app.zip”。为此,运行以下命令:

zip -r ../app.zip ./*
gsg_build_elb_3

在您的账户中引导启动 CDK

如果这是您第一次在此账户和此区域中使用 AWS CDK,则需要对其进行引导启动。将 AWS CDK 应用程序部署到 AWS 账户和区域时,CDK 需要预置执行部署所需的资源。这些资源包括用于存储部署文件的 Amazon S3 存储桶,以及授予执行部署所需权限的 IAM 角色。预置这些初始资源称为引导启动。

对于引导启动您的 AWS 账户和区域,请运行

cdk bootstrap aws://ACCOUNT-NUMBER-1/REGION-1

这应该如下所示:

cdk bootstrap aws://123456789012/us-east-1

您可以从 AWS 管理控制台获取账号,并从此列表中获取区域名称。

构建和部署 CDK 应用程序

打包 NodeJS 应用程序并将其放置在 CDK 应用程序目录的根目录中,然后引导启动您的 AWS 账户和区域,之后就可以构建和部署 CDK 应用程序。

第一步是构建 CDK 应用程序。

node run build

如果您的应用程序中没有错误,这将成功构建,现在您可以在云中部署 CDK 应用程序。

cdk deploy

它首先会要求您确认是否要对账户安全级别进行一些更改,这是因为我们创建了一个新角色。

gsg_build_elb_4

以“y”作为回应,然后部署将开始。完成部署需要几分钟时间。完成后,您将收到此部署自动创建的 CloudFormation 堆栈的 ARN (Amazon资源名称) 消息。

如果您打开 CloudFormation 管理控制台,就会看到其中有 2 个新堆栈。

gsg_build_elb_5

名为 CdkEbInfraStack 的堆栈包含我们在上一个模块中创建的所有 Elastic Beanstalk 资源:Elastic Beanstalk 应用程序、应用程序版本、实例配置文件和环境。

另一个堆栈 (带有随机字符串) 由 Elastic Beanstalk 创建,它包含 Elastic Beanstalk 应用程序运行所需的所有资源 - Auto Scaling 组、实例、Amazon CloudWatch 警报和指标、负载均衡器和安全组。

在云中查看应用程序

如果想查看部署在云中的应用程序,您需要做的第一件事就是找到此 Web 应用程序的 URL。查找此 URL 的方式是转到 AWS 控制台中的 Elastic Beanstalk 服务并找到名为 MyWebAppEnvironment 的环境。

gsg_build_elb_6

在该环境中将看到此 URL。单击此 URL,Web 应用程序应启动。

更新 NodeJS 应用程序部署

如果您想要对 Web 应用程序进行更改,并且想将其重新部署到云中,则可以按照以下步骤操作:

  • 在 Web 应用程序中执行更改
  • 将其打包到 app.zip 文件中
  • 将 app.zip 文件放在 CDK 应用程序的根目录中
  • 构建 CDK 项目 - npm run build
  • 部署 CDK 项目 - cdk deploy

现在,您可以验证是否部署了新版本的 Elastic Beanstalk 应用程序。如果您访问 Web 应用程序 URL,则将部署新版本 - 这需要一些时间,请留意控制台以查看部署何时完成。

gsg_build_elb_7

常见错误

压缩应用程序

如果您在将 NodeJS 应用程序上传到 Elastic Beanstalk 时收到此错误。

Failed to find package.json. Node.js may have issues starting. Verify package.json is valid or place code in a file named server.js or app.js.

问题可能出在打包应用程序的方式。删除 package-lock.json 和 node_modules 目录并在 Web 应用程序目录中运行此命令。

zip -r app.zip .

这将为 Elastic Beanstalk 正确压缩文件。

打包应用程序时的节点模块

您可以将 node_modules 目录与所有下载的依赖项打包到 Web 应用程序的 zip 文件中。

拥有此目录时,Elastic Beanstalk 会假定不需要下载任何依赖项。

详细阅读有关在 Elastic Beanstalk 程序包中处理 NodeJS 依赖项的说明。

结论

在本指南中,您学习了如何打包 NodeJS Web 应用程序并使用 Elastic Beanstalk 进行部署,以及如何将所有基础设施部署为 CDK 应用程序。

下一步:清理资源

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

感谢您的反馈
很高兴此页面对您有所帮助。您是否乐意分享更多详细信息,以帮助我们继续改进?
关闭
感谢您的反馈
很抱歉,此页面未能帮到您。您是否乐意分享更多详细信息,以帮助我们继续改进?
关闭