使用 Elastic Beanstalk Node.js 平台 - AWS Elastic Beanstalk

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

使用 Elastic Beanstalk Node.js 平台

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

AWS Elastic Beanstalk 为不同版本的 Node.js 编程语言支持多个平台分支。有关完整列表,请参阅 AWS Elastic Beanstalk 平台文档中的 Node.js

Elastic Beanstalk 提供了配置选项,您可以使用这些选项来自定义在上运行的软件 EC2 您的 Elastic Beanstalk 环境中的实例。您可配置应用程序所需的环境变量,启用到 Amazon S3 的日志轮换,并将应用程序源中包含静态文件的文件夹映射至代理服务器所提供的路径。

Elastic Beanstalk 控制台中提供了配置选项,可用于修改运行环境的配置。要避免在终止环境时丢失环境配置,可以使用保存的配置来保存您的设置,并在以后将这些设置应用到其他环境。

要保存源代码中的设置,您可以包含配置文件。在您每次创建环境或部署应用程序时,会应用配置文件中的设置。您还可在部署期间使用配置文件来安装程序包、运行脚本以及执行其他实例自定义操作。

您可以在源包中包含一个Package.json文件,以便在部署期间安装软件包、提供启动命令以及指定 Node.js 你想让你的应用程序使用的版本。您可以包含一个 npm-shrinkwrap.json 文件来锁定依赖项版本。

这些区域有:Node.js 平台包括代理服务器,用于提供静态资产、将流量转发到您的应用程序以及压缩响应。您可以扩展或覆盖默认代理配置,以适应高级方案。

可提供多个选项供您启动应用程序。你可以添加一个 Procfile到您的源包中,以指定启动应用程序的命令。如果您不提供 Procfile,但提供 package.json 文件,则 Elastic Beanstalk 将运行 npm start。如果您未提供上述任一项,则 Elastic Beanstalk 会按此顺序查找 app.jsserver.js 文件并运行该脚本。

在 Elastic Beanstalk 控制台中应用的设置会覆盖配置文件中的相同设置(如果存在)。这让您可以在配置文件中包含默认设置,并使用控制台中的特定环境设置加以覆盖。有关优先顺序和其他设置更改方法的更多信息,请参阅配置选项

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

配置你的 Node.js 环境

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

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

要配置你的 Node.js Elastic Beanstalk 控制台中的环境
  1. 打开 Elastic Beanstalk 控制台,然后在 “区域” 列表中,选择您的。 AWS 区域

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

    注意

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

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

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

容器选项

您可以指定以下特定于平台的选项:

  • Proxy server(代理服务器)– 要在环境实例上使用的代理服务器。默认情况下,NGINX 被使用。

日志选项

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

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

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

静态文件

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

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

环境属性

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

里面 Node.js 在中运行的环境 AWS Elastic Beanstalk,你可以通过运行来访问环境变量process.env.ENV_VARIABLE

var endpoint = process.env.API_ENDPOINT

这些区域有:Node.js 平台设置 PORT 代理服务器将流量传递到的端口的环境变量。有关更多信息,请参阅 配置代理服务器

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

以下控制台软件配置类别仅在 Elastic Beanstalk 上受支持 Node.js 使用亚马逊 Linux AMI 平台版本(亚马逊 Linux 2 之前的版本)的环境。

备注

在配置页面上,指定以下内容:

  • 代理服务器-指定使用哪个 Web 服务器进行代理连接 Node.js。 默认情况下,NGINX 被使用。如果选择 “”,则静态文件映射不会生效,并且 GZIP 压缩已禁用。

  • Node.js 版本 -指定版本 Node.js。 有关支持的列表 Node.js 版本,请参阅 Node.jsAWS Elastic Beanstalk 平台指南中。

  • GZIP 压缩 -指定是否 GZIP 已启用压缩。默认情况下,GZIP 已启用压缩。

  • 节点命令-允许您输入用于启动的命令 Node.js 应用程序的修订。空字符串(默认值)表示 Elastic Beanstalk 将依次使用 app.jsserver.jsnpm start

Node.js 配置命名空间

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

您可以使用 aws:elasticbeanstalk:environment:proxy 命名空间选择要在环境的实例上使用的代理。以下示例将您的环境配置为使用 Apache HTTPD 代理服务器。

例 .ebextensions/nodejs-settings.config
option_settings: aws:elasticbeanstalk:environment:proxy: ProxyServer: apache

您可以使用 aws:elasticbeanstalk:environment:proxy:staticfiles 命名空间将代理配置为提供静态文件。有关更多信息以及示例,请参阅 提供静态文件

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

如果你的 Elastic Beanstalk Beanstalk Node.js 环境使用亚马逊 Linux AMI 平台版本(亚马逊 Linux 2 之前的版本),请考虑本节中的具体配置和建议。

备注

Elastic Beanstalk 支持亚马逊 Linux AMI 的一些特定于平台的配置选项 Node.js 平台版本。您可以选择在应用程序前面运行哪个代理服务器,选择特定版本的 Node.js 运行,然后选择用于运行应用程序的命令。

对于代理服务器,可以使用 NGINX 或 Apache 代理服务器。您可以将 none 值设置为 ProxyServer 选项。在这种设置下,Elastic Beanstalk 将您的应用程序作为独立项运行,而不是在任何代理服务器后面运行。如果您的环境运行独立应用程序,请更新您的代码以侦听该端口 NGINX 将流量转发到。

var port = process.env.PORT || 8080; app.listen(port, function() { console.log('Server running at http://127.0.0.1:%s', port); });

就支持的语言版本而言,Node.js 亚马逊 Linux AMI 平台与其他 Elastic Beanstalk 托管平台不同。这是因为每个 Node.js 平台版本仅支持几个 Node.js 语言版本。有关支持的列表 Node.js 版本,请参阅 Node.jsAWS Elastic Beanstalk 平台指南中。

您可以使用特定于平台的配置选项来设置语言版本。有关说明,请参阅 配置你的 Node.js 环境。或者,使用 Elastic Beanstalk 控制台更新 Node.js 您的环境在更新平台版本时使用的版本。

注意

如果对您正在使用的 Node.js 版本的支持已从平台中移除,则您必须先更改或移除版本设置再进行平台更新。当在一个或多个 Node.js 版本中识别到安全漏洞时,可能会发生这种情况。

发生这种情况时,尝试更新到不支持配置的平台的新版本会NodeVersion失败。为避免需要创建新环境,请将NodeVersion配置选项更改为旧平台版本和新平台版本都支持的 Node.js 版本,或者删除该选项设置,然后执行平台更新。

配置您的环境 Node.js Elastic Beanstalk 控制台中的版本
  1. 打开 Elastic Beanstalk 控制台,然后在 “区域” 列表中,选择您的。 AWS 区域

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

    注意

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

  3. 在环境概述页面上的 Platform(平台)下,选择 Change(更改)。

  4. 更新平台版本对话框中,选择一个 Node.js 版本。

    Elastic Beanstalk 更新平台版本确认
  5. 选择保存

这些区域有:Node.js Amazon Linux AMI 平台在aws:elasticbeanstalk:container:nodejs:staticfilesaws:elasticbeanstalk:container:nodejs命名空间中定义了其他选项。

以下配置文件将指示 Elastic Beanstalk 使用 npm start 运行应用程序。它还将代理类型设置为 Apache 并启用压缩。最后,它将代理配置为从两个源目录提供静态文件。一个来源是 HTML statichtml源目录中位于网站根目录下html路径下的文件。另一个源是来自 staticimages 源目录的网站根目录下的 images 路径的 HTML 文件。

例 .ebextensions/node-settings.config
option_settings: aws:elasticbeanstalk:container:nodejs: NodeCommand: "npm start" ProxyServer: apache GzipCompression: true aws:elasticbeanstalk:container:nodejs:staticfiles: /html: statichtml /images: staticimages

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