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

使用 AWS Elastic Beanstalk Java SE 平台

AWS Elastic Beanstalk Java SE 平台是一组环境配置,用于可以在已编译的 JAR 文件中自行运行的 Java Web 应用程序。您可以在本地编译应用程序,或将源代码与生成脚本一起上传以便在实例中对其进行编译。每个配置都对应于 Java 的一个主要版本,包括 Java 8Java 7

注意

Elastic Beanstalk 不会分析应用程序的 JAR 文件。请将 Elastic Beanstalk 需要的文件保存在 JAR 文件外部。例如,在应用程序的源包的根目录下的 JAR 文件旁边放置工作线程环境cron.yaml 文件。

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

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

Elastic Beanstalk Java SE 平台配置包含一个 nginx 服务器,该服务器用作反向代理,向您的应用程序提供缓存的静态内容并传递请求。平台提供了配置选项,以便将代理服务器配置为从源代码中的文件夹提供静态资源,从而减少应用程序上的负载。有关高级方案,您可以在源包中包括您自己的 .conf 文件,以扩展 Elastic Beanstalk 的代理配置或完全重写它。

如果您只有一个 JAR 文件,Elastic Beanstalk 将使用 java -jar application_name.jar 运行该文件。要配置在您的环境中的服务器实例上运行的进程,请在您的源包中包含一个可选的 Procfile。如果您的源包根目录中有多个 JAR 或者您要自定义 java 命令来设置 JVM 选项,必须使用 Procfile

要在部署时编译 Java 类并在您环境中的 EC2 实例上运行其他生成命令,请在应用程序源包中包含一个 BuildfileBuildfile 允许您按原样部署源代码并在服务器上执行生成操作,而不是在本地编译 JAR。Java SE 平台包含常用的生成工具,允许您在服务器上执行生成操作。

执行顺序

当应用程序源包中包含多种类型的配置时,它们将按以下顺序执行:上一步骤完成后才会执行下一步骤。

  • 步骤 1:配置文件中定义的 commandsfilespackages

  • 步骤 2:Buildfile 命令

  • 步骤 3:配置文件中的 container_commands

  • 步骤 4:Procfile 命令 (所有命令同时运行)

有关使用配置文件中的 commandsfilespackagescontainer_commands 的更多信息,请参阅自定义 Linux 服务器上的软件

配置 Java SE 环境

对于 Elastic Beanstalk 上的 Java SE 平台配置,Elastic Beanstalk 除了它为所有环境提供的标准选项之外,还提供了一些特定于平台的选项。通过这些选项,您可以配置在您的应用程序之前运行以提供静态文件的 nginx 代理。

您可以使用 AWS 管理控制台启用到 Amazon S3 的日志轮换并配置应用程序可从该环境中读取的变量。

在 Elastic Beanstalk 控制台中配置 Java SE 环境

  1. 打开 Elastic Beanstalk 控制台

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

  3. 选择 Configuration

  4. Software 配置卡上,选择 Modify

日志选项

“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/java-se-static-files.config

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

环境属性

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

在运行于 Elastic Beanstalk 中的 Java SE 环境内,可通过使用 System.getenv() 访问环境变量。例如,您可以使用以下代码将名为 API_ENDPOINT 的属性读取到某个变量:

String endpoint = System.getenv("API_ENDPOINT");

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

The aws:elasticbeanstalk:container:java:staticfiles 命名空间

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

Java SE 平台除支持所有平台支持的命名空间外,还支持一个平台特定的配置命名空间。使用 aws:elasticbeanstalk:container:java:staticfiles 命名空间可以定义一些选项,通过它们将您的 Web 应用程序路径映射到应用程序源包中包含静态内容的文件夹。

例如,此 option_settings 代码段在静态文件命名空间中定义了两个选项。第一个选项将路径 /public 映射到名为 public 的文件夹,第二个选项将路径 /images 映射到名为 img 的文件夹:

option_settings: aws:elasticbeanstalk:container:java:staticfiles: /public: public /images: img

通过此命名空间映射的文件夹必须为源包根目录中实际存在的文件夹。不能将路径映射到 JAR 文件中的文件夹。

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