跳至主要内容

Amazon Elastic Beanstalk

Amazon Elastic Beanstalk 常见问题

一般性问题

全部打开

Amazon Elastic Beanstalk 助力开发人员更轻松地在 Amazon Web Services 云中快速部署和管理应用程序。开发人员只需上载应用程序,Elastic Beanstalk 将自动处理有关容量预置、负载均衡、自动扩展和应用程序运行状况监控的部署详细信息。

希望几分钟之内在 Amazon Web Services 云中部署和管理其应用程序的用户。您无需具备云计算方面的经验,即可开始使用。Amazon Elastic Beanstalk 支持 Java、.NET、PHP、Node.js、Python、Ruby、Go 和 Docker Web 应用程序。

Amazon Elastic Beanstalk 支持以下语言和开发堆栈:

适用于 Java 应用程序的 Apache Tomcat

适用于 PHP 应用程序的 Apache HTTP 服务器

适用于 Python 应用程序的 Apache HTTP 服务器

适用于 Node.js 应用程序的 Nginx 或 Apache HTTP 服务器

适用于 Ruby 应用程序的 Passenger 或 Puma

适用于 .NET 应用程序的 Microsoft IIS 7.5、8.0 和 8.5

Java SE

Docker

Go

有关受支持的语言和开发堆栈的完整更新列表,请参阅支持的平台。

可以。Amazon Elastic Beanstalk 经过设计,将来可以扩展以支持多种开发堆栈和编程语言。Amazon 正在与解决方案提供商合作开发必要 API 和功能,以打造更多 Elastic Beanstalk 产品。

Amazon Elastic Beanstalk 可自动获取容量预置、负载均衡、Auto Scaling 和应用程序部署的详细信息,从而创建用于运行应用程序版本的环境。您只需上载部署代码(例如,WAR 文件),剩下的工作由 Amazon Elastic Beanstalk 完成。Amazon Toolkit for Visual Studio 和 Amazon Web Services Toolkit for Eclipse 允许您将应用程序部署到 Amazon Elastic Beanstalk 并进行管理,而无需退出您的 IDE。应用程序运行后,Elastic Beanstalk 会自动执行管理任务(例如监控、应用程序版本部署、基本运行状况检查),并促进日志文件访问。借助 Elastic Beanstalk,开发人员可以集中精力开发他们的应用程序,摆脱面向部署的任务,例如预置服务器、设置负载均衡或管理扩缩。

大多数现有应用程序容器或平台即服务解决方案在减少所需的编程量时,也会大大降低开发人员的灵活度和控制力。开发人员被迫接受供应商预定的所有决策,几乎没有机会再控制其应用程序基础设施的各个部分。但是,借助 Amazon Elastic Beanstalk,开发人员可以保持对应用程序所需 Amazon Web Services 资源的完全控制。如果开发人员决定管理基础设施的一些(或所有)元素,他们可以使用 Elastic Beanstalk 的管理功能无缝实现。

借助 Amazon Elastic Beanstalk,您可以:

选择符合您的应用程序要求的操作系统(例如,Amazon Linux 或 Windows Server 2016)

从多种 Amazon EC2 实例中进行选择,包括按需型实例、预留实例和竞价型实例 

从多个可用数据库和存储选项中进行选择

启用 Amazon EC2 实例的登录访问权限,以便立即直接进行问题排查

在多个可用区中运行应用程序,从而快速提高应用程序可靠性

在负载均衡器上启用 HTTPS 协议,从而提高应用程序安全性

访问内置 Amazon CloudWatch 监控,并获取有关应用程序运行状况和其他重要事件的通知

调整应用程序服务器设置(例如,JVM 设置)并传递环境变量

在 Amazon EC2 中并排运行其他应用程序组件,例如内存缓存服务

访问日志文件,无需登录应用程序服务器

Amazon Elastic Beanstalk 使用经过验证的 Amazon Web Services 功能和服务(例如 Amazon EC2、Amazon RDS、Elastic Load Balancing、Auto Scaling、Amazon S3 和 Amazon SNS),创建用于运行应用程序的环境。当前版本的 Amazon Elastic Beanstalk 使用 Amazon Linux AMI 或 Windows Server 2019。

Amazon Elastic Beanstalk 支持 Java、.NET、PHP、Node.js、Python、Ruby、Go 和 Docker,非常适合 Web 应用程序。但是,得益于 Elastic Beanstalk 的开放式架构,还可以使用 Elastic Beanstalk 部署非 Web 应用程序。我们期望将来支持更多应用程序类型和编程语言。请参阅支持的平台,了解详情。

Amazon Elastic Beanstalk 基于 Amazon Linux AMI 和 Windows Server AMI 运行。这两种 AMI 均由 Amazon Web Services 支持和维护,旨在为 Amazon EC2 云计算提供稳定、安全和高性能的执行环境。

入门

全部打开

要注册 Amazon Elastic Beanstalk,请在 Elastic Beanstalk 详细信息页面上选择 Sign Up Now(立即注册)按钮。您必须拥有 Amazon Web Services 账户才能访问此服务;如果您还没有账户,系统将在您开始 Elastic Beanstalk 过程时提示您创建账户。注册后,请参阅 Amazon Elastic Beanstalk 入门指南。

注册 Amazon Elastic Beanstalk 要求您在 Amazon Web Services 上登记您的有效电话号码和电子邮件地址,以便我们需要联系您时使用。验证您的电话号码只需要几分钟时间。注册过程中您会接到一个自动呼叫电话,然后需要您使用电话键盘输入个人识别码。

要了解如何开始使用 Amazon Elastic Beanstalk,最好的方法是仔细阅读我们技术文档中的 Amazon Elastic Beanstalk 入门指南部分。几分钟之内,您将能够部署和使用示例应用程序或上载您自己的应用程序。

可以。Amazon Elastic Beanstalk 包含一个示例应用程序,供您试用该产品和探索其功能。

数据库和存储

全部打开

可以。Amazon Elastic Beanstalk 会在 Amazon S3 中存储您的应用程序文件和服务器日志文件(可选)。如果您使用的是 Amazon Web Services 管理控制台、Amazon Web Services Toolkit for Visual Studio 或 Amazon Web Services Toolkit for Eclipse,系统将在您的账户中为您创建 Amazon S3 存储桶,您上载的文件将自动从您的本地客户端复制到 Amazon S3。或者,您可以将 Elastic Beanstalk 配置为每小时将服务器日志文件复制到 Amazon S3。您可以通过编辑环境配置设置来完成此操作。

可以。您可以将 Amazon S3 用于应用程序存储。最简单的实现方式是将 Amazon Web Services SDK 纳入应用程序的可部署文件。例如,您可以将适用于 Java 的 Amazon Web Services SDK 纳入应用程序的 WAR 文件。

Amazon Elastic Beanstalk 不会限制您使用任何特定的数据持久性技术。您可以选择使用 Amazon Relational Database Service(Amazon RDS)或 Amazon DynamoDB,或者使用在 Amazon EC2 上运行的 Microsoft SQL Server、Oracle 或其他关系数据库。

Elastic Beanstalk 可以自动预置 Amazon RDS 数据库实例。有关数据库实例连接的信息通过环境变量向您的应用程序公开。要了解有关如何为您的环境配置 RDS 数据库实例的更多信息,请参阅《Elastic Beanstalk 开发人员指南》。

使用 Amazon Elastic Beanstalk 时不需要。借助 Elastic Beanstalk,您可以在环境配置中指定连接信息。通过从应用程序代码中提取连接字符串,您可以轻松地将不同的 Elastic Beanstalk 环境配置为使用不同的数据库。

安全性

全部打开

默认情况下,您的应用程序在 myapp.elasticbeanstalk.com 上公开可用,任何人都可以访问。您可以使用 Amazon VPC 在您定义的虚拟网络中预置应用程序的私有隔离部分。可以通过特定的安全组规则、网络 ACL 和自定义路由表将此虚拟网络设为私有网络。通过更改 EC2 安全组设置,您还可以轻松控制向应用程序服务器传送或不传送哪些其他传入流量(例如 SSH)。

可以,您可以在 VPC 中运行应用程序。有关更多信息,请参阅《Amazon Elastic Beanstalk 开发人员指南》。

有关 Amazon Web Services 的安全性的更多信息,请参阅我们的《Amazon Web Services:安全流程概述》文档并访问我们的安全中心。

可以。具有适当权限的 IAM 用户现在可以与 Amazon Elastic Beanstalk 进行交互。

IAM 允许您以集中方式管理用户和组。您可以控制哪些 IAM 用户有权访问 Amazon Elastic Beanstalk,对于不应能够对 Elastic Beanstalk 资源执行操作的操作员,可以限制操作员只具有对 Elastic Beanstalk 的只读访问权限。您账户中的所有用户活动都将汇总到一份 Amazon Web Services 账单中。

您可以使用 IAM 控制台、IAM Command Line Interface(CLI)或 IAM API 来预置 IAM 用户。默认情况下,在授予权限之前,IAM 用户无法访问 Amazon Web Services 服务。

您可以使用策略向 IAM 用户授予对服务的访问权限。为简化授予 Amazon Elastic Beanstalk 访问权限的过程,您可以使用 IAM 控制台中的策略模板之一来帮助您入门。Elastic Beanstalk 提供了两个模板:只读访问模板和完全访问模板。只读模板授予对 Elastic Beanstalk 资源的读取访问权限。完全访问模板授予对所有 Elastic Beanstalk 操作的完全访问权限,以及管理相关资源的权限,例如 Elastic Load Balancing、Auto Scaling 和 Amazon S3。您还可以使用 Amazon Web Services 策略生成器来创建自定义策略。有关更多信息,请参阅《Amazon Elastic Beanstalk 开发人员指南》。

可以。您可以允许或拒绝对特定 Amazon Elastic Beanstalk 资源的访问权限,例如应用程序、应用程序版本和环境。

IAM 用户在账户下创建的所有资源均归账户所有,并且费用计入账户。

账户对 IAM 用户在该账户下启动的所有 Amazon Elastic Beanstalk 环境具有完全访问权限。如果您使用 Elastic Beanstalk 模板向 IAM 用户授予只读访问权限,则该用户将能够查看此账户中的所有应用程序、应用程序版本、环境和任何关联资源。如果您使用 Elastic Beanstalk 模板向 IAM 用户授予完全访问权限,则该用户将能够创建、修改和终止此账户下的任何 Elastic Beanstalk 资源。

可以。IAM 用户可以使用其用户名和密码访问 Amazon Elastic Beanstalk 控制台。

可以。IAM 用户可以使用其访问密钥和私有密钥通过 Elastic Beanstalk API 执行操作。

可以。IAM 用户可以使用其访问密钥和私有密钥通过 Amazon Elastic Beanstalk Command Line Interface(CLI)执行操作。

托管式平台更新

全部打开

您可以选择在指定的维护时段内将 Amazon Elastic Beanstalk 环境自动更新为运行应用程序的底层平台的最新版本。Elastic Beanstalk 会定期发布支持的平台(Java、PHP、Ruby、Node.js、Python、.NET、Go 和 Docker)的新版本,包括操作系统、Web 和应用程序服务器,以及语言和框架更新。

要让 Elastic Beanstalk 自动管理您的平台更新,必须在 Elastic Beanstalk 控制台的 Configuration(配置)选项卡中启用托管式平台更新,或者使用 EB CLI 或 API 启用托管式平台更新。启用此功能后,您可以配置允许哪些类型的更新以及何时可以进行更新。

Amazon Elastic Beanstalk 可以自动为新的补丁和次要平台版本执行平台更新。Elastic Beanstalk 不会自动执行主要平台版本更新(例如,Java 7 Tomcat 7 到 Java 8 Tomcat 8),因为它们包含向后不兼容的更改并且需要进行额外测试。在这些情况下,您必须手动启动更新。

Amazon Elastic Beanstalk 平台使用以下模式进行版本控制:MAJOR.MINOR.PATCH(例如 2.0.0)。每个部分按如下方式递增:

存在不兼容更改时增加主要版本。

以向后兼容的方式添加其他功能时,增加次要版本。

存在向后兼容的错误修复时,增加补丁版本。

您可以随时使用 Amazon Elastic Beanstalk 管理控制台、API 或 CLI 执行主要版本更新。您可以通过以下方式执行主要版本更新:

对现有环境就地应用更新。请参阅“更新 Elastic Beanstalk 环境的平台版本”。

使用新平台版本创建现有环境的克隆。有关详细信息,请参阅“克隆环境”。

在应用此类更新的时使用的是一种不可改变的部署机制,该机制确保在 Amazon EC2 实例与安装的更新的并行队列准备好与现有实例进行交换之前,不会变更现有环境,随后现有实例将被终止。此外,如果 Elastic Beanstalk 运行状况系统在更新过程中检测到任何问题,则流量将被重定向到现有的实例队列,从而确保对应用程序最终用户造成的影响为最小。

由于使用不可改变的部署机制来执行托管式平台更新,因此您的应用程序在维护时段内可用,并且更新不会对应用程序的使用者造成影响。

使用托管式平台更新功能无需额外付费。您只需为在更新期间执行更新所需的额外 EC2 实例付费。

维护时段是一个每周两小时的时间段,在此期间,如果启用了托管式平台更新且平台的新版本可用,则 Amazon Elastic Beanstalk 将启动平台更新。例如,如果您选择的维护时段的开始时间为每个星期日的凌晨 2 点,则 Amazon Elastic Beanstalk 将在每个星期日凌晨 2 点至 4 点之间的某个时间启动平台更新。需要注意的是,根据您的应用程序的配置,更新的完成时间可能会超出维护时段。

维护时段的设置以各个环境为基础,您可以选择为不同的应用程序组件或应用程序设置不同的维护时段。如果您不希望同时更新应用程序的多个部分,使用该设置即可允许交错进行环境更新。如果您启用了托管式平台更新但没有指定维护时段,则将为您的环境分配默认的每周两小时时段。如果您希望在代您执行维护时进行变更,则您可以在 Amazon Web Services 管理控制台中修改托管式更新的配置或使用 UpdateEnvironment API 来进行更改。

您将通过 Amazon Web Services 管理控制台、论坛公告和发布说明收到关于有新的平台版本可用的通知。

有关平台版本变更的详细信息,请参阅 Amazon Elastic Beanstalk 发布说明页面。

在托管式平台更新期间,您可以执行的唯一操作是“中止”。这将允许您立即停止更新并回滚至以前的版本。

您的环境将始终根据您选择的级别(仅次要升级补丁或补丁)更新为可用的最新版本。

在事件页面上可以找到有关每个托管式平台更新的详细信息,且其事件类型标记为 MAINTENANCE(维护)。

特定年份中发布的版本数量将有所不同,具体取决于语言/框架供应商或核心团队的发布版本和补丁的评率和内容,以及我们的平台工程团队对这些版本和补丁的彻底审查结果。

计费

全部打开

Amazon Elastic Beanstalk 不额外收费,您只需为存储和运行应用程序实际所需的 Amazon Web Services 资源支付费用。

您仅需按实际用量为 Amazon Web Services 资源付费,而且没有最低费用。有关 Amazon EC2 定价信息,请访问 EC2 详细信息页面上的定价部分。有关 Amazon S3 定价信息,请访问 S3 详细信息页面上的定价部分。您可以使用 Amazon 价格计算器来估算不同应用程序规模的费用。

您可以随时在 Amazon Web Services 网站上查看当前账单期的费用,只需登录您的 Amazon Web Services 账户,并选择 Your Web Services Account(您的 Web 服务账户)下的 Account Activity(账户活动)即可。

支持

全部打开

可以。Amazon Web Services 支持涵盖了与您使用 Amazon Elastic Beanstalk 相关的问题。有关更多详细信息和定价,请参阅 Amazon Web Services Support 页面。

您可以通过 Amazon Elastic Beanstalk 论坛,利用现有的 Amazon Web Services 社群知识的广度来帮助您进行开发。