AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

使用 AWS Elastic Beanstalk Node.js 平台

AWS Elastic Beanstalk Node.js 平台是一种平台配置,适用于可在 nginx 代理服务器、Apache 服务器后方运行或自行运行的 Node.js Web 应用程序。

Elastic Beanstalk 提供配置选项,可供您用于自定义在 Elastic Beanstalk 环境中的 EC2 实例上运行的软件。可以选择先于应用程序运行的代理服务器,选择要运行的特定版本的 Node.js,并选择用于运行应用程序的命令。您也可以配置应用程序所需的环境变量并启用到 Amazon S3 的日志轮换。

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

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

您可以在源包中包括一个 Package.json 文件,以在部署期间安装程序包,并包括一个 npm-shrinkwrap.json 文件,以锁定依赖项版本。

Node.js 平台包含一个代理服务器,以服务静态资产、将流量转发到应用程序和压缩响应。您可以扩展或覆盖默认代理配置,以适应高级方案。

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

配置 Node.js 环境

Node.js 设置可让您调整 Amazon EC2 实例的行为,以及启用或禁用 Amazon S3 日志轮换。您可以使用 AWS 管理控制台编辑 Elastic Beanstalk 环境的 Amazon EC2 实例配置。

在 Elastic Beanstalk 控制台中配置 Node.js 环境

  1. 打开 Elastic Beanstalk 控制台

  2. 导航到您的环境的管理页

  3. 选择 Configuration

  4. Software 配置卡上,选择 Modify

容器选项

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

  • Proxy Server (代理服务器) – 指定要用来代理与 Node.js 的连接的 Web 服务器。默认情况下,使用 nginx。如果选择 none,则静态文件映射不会生效,并且 gzip 压缩会被禁用。

  • Node Version (节点版本) – 指定 Node.js 的版本。有关支持的版本的信息,请参阅Elastic Beanstalk 支持的平台

    注意

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

    发生此情况时,尝试升级到不支持所配置的 NodeVersion 的新平台版本会失败。要避免需要创建新环境,请将 NodeVersion 配置选项更改为旧配置版本和新配置版本均支持的版本,或移除选项设置,然后执行平台升级。

  • Gzip Compression (Gzip 压缩) – 指定是否启用 gzip 压缩。默认情况下,启用 gzip 压缩。

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

日志选项

“Log Options (日志选项)”部分有两个设置:

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

  • Enable log file rotation to Amazon S3 - 指定应用程序的 Amazon EC2 实例的日志文件是否应复制到与应用程序关联的 Amazon S3 存储桶。

静态文件

为了提高性能,您可以配置代理服务器,从 Web 应用程序内的一组目录中提供静态文件(例如 HTML 或图像)。当代理服务器收到对指定路径下的某个文件的请求时,它将直接提供此文件而不是将请求路由至您的应用程序。您可以在 Modify software (修改软件) 配置页面的 Static Files (静态文件) 部分中设置虚拟路径和目录映射。添加映射时,如果您添加另一个映射,则会显示额外的一行。要删除映射,请单击“Remove”。

 Elastic Beanstalk 控制台中“Modify software (修改软件)”配置页面中的静态文件配置

如果看不到 Static Files (静态文件) 部分,您必须使用配置选项至少添加一个映射。例如,以下配置文件添加两个虚拟路径和目录映射,目录位于您的源包的顶层。

例 .ebextensions/nodejs-static-files.config

option_settings: aws:elasticbeanstalk:container:nodejs:staticfiles: /html: statichtml /images: staticimages

环境属性

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

在运行于 AWS Elastic Beanstalk 中的 Node.js 环境内,您可使用 process.env.ENV_VARIABLE 访问环境变量,类似于以下示例。

var endpoint = process.env.API_ENDPOINT

Node.js 平台会将 PORT 环境变量设置为代理服务器将流量传输到的端口。请参阅配置代理服务器

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

Node.js 配置命名空间

您可以使用配置文件设置配置选项并在部署期间执行其他实例配置。配置选项可以通过您使用的 Elastic Beanstalk 服务或平台定义并组织到命名空间中。

Node.js 平台在 aws:elasticbeanstalk:container:nodejs:staticfilesaws:elasticbeanstalk:container:nodejs 命名空间中定义选项。

以下配置文件告知 Elastic Beanstalk 使用 npm start 运行应用程序,将代理类型设置为 Apache,启用压缩功能并将代理配置为通过 /images 路径提供 myimages 目录中的静态图像。

例 .ebextensions/node-settings.config

option_settings: aws:elasticbeanstalk:container:nodejs: NodeCommand: "npm start" ProxyServer: apache GzipCompression: true aws:elasticbeanstalk:container:nodejs:staticfiles: /images: myimages

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