本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Elastic Beanstalk Java SE 平台
本主题介绍如何配置、生成和运行在上面运行的 Java 应用程序 Amazon Elastic Beanstalk Java SE 平台。
Elastic Beanstalk Java SE 平台是一组适用于 Java Web 应用程序的平台版本,这些应用程序可以通过编译后的文件自行运行。JAR您可以在本地编译应用程序,或将源代码与生成脚本一起上传以便在实例中对其进行编译。Java SE 平台版本分为多个平台分支,每个分支都对应于 Java 的主要版本。
注意
Elastic Beanstalk 不会解析你的应用程序的文件。JAR将 Elastic Beanstalk 需要的文件保存在文件之外。JAR例如,在应用程序源包的根目录下,在cron.yaml
文件旁边添加工作线程环境的JAR文件。
Elastic Beanstalk 控制台中提供了配置选项,可用于修改运行环境的配置。要避免在终止环境时丢失环境配置,可以使用保存的配置来保存您的设置,并在以后将这些设置应用到其他环境。
要保存源代码中的设置,您可以包含配置文件。在您每次创建环境或部署应用程序时,会应用配置文件中的设置。您还可在部署期间使用配置文件来安装程序包、运行脚本以及执行其他实例自定义操作。
Elastic Beanstalk Java SE 平台包含一个 nginx
如果您只为应用程序源提供单个JAR文件(单独提供,不在源包中),则 Elastic Beanstalk 会将您的application.jar
文件JAR重命名为,然后使用运行该文件。java -jar application.jar
要配置在您的环境中的服务器实例上运行的进程,请在您的源包中包含一个可选的 Procfile。如果您的源包根目录JAR中有多个源包根目录,或者想要自定义 java 命令来设置JVM选项,则必须使用一个。Procfile
我们建议您始终在源包中将 Procfile
与应用程序一起提供。通过这种方式,您可以精确控制 Elastic Beanstalk 为您的应用程序运行的进程以及这些进程接收的参数。
要编译 Java 类并在部署时对环境中的EC2实例运行其他构建命令,请在应用程序源包中包含一个 Buildfile。A Buildfile
允许您按原样部署源代码并在服务器上构建,而不是在JARs本地编译。Java SE 平台包含常用的生成工具,允许您在服务器上执行生成操作。
有关扩展 Elastic Beanstalk 基于 Linux 的平台的各种方法的详细信息,请参阅扩展 Elastic Beanstalk Linux 平台。
配置 Java SE 环境
Java SE 平台设置允许您微调亚马逊EC2实例的行为。您可以使用 Elastic Beanstalk 控制台编辑 Elastic Beanstalk 环境EC2的亚马逊实例配置。
使用 Elastic Beanstalk 控制台启用到 Amazon S3 的日志轮换,并配置应用程序可从环境中读取的变量。
在 Elastic Beanstalk 控制台中配置 Java SE 环境
打开 Elastic Beanstalk
控制台,然后在区域列表中,选择你的 Amazon Web Services 区域. -
在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。
注意
如果您有多个环境,请使用搜索栏筛选环境列表。
在导航窗格中,选择 Configuration(配置)。
-
在 Updates, monitoring, and logging(更新、监控和日志记录)配置类别中,选择 Edit(编辑)。
日志选项
“日志选项”部分有两个设置:
-
Instance profile(实例配置文件)– 指定有权访问与应用程序关联的 Amazon S3 存储桶的实例配置文件。
-
启用向 Amazon S3 的日志文件轮换-指定是否将应用程序的 Amazon EC2 实例的日志文件复制到与您的应用程序关联的 Amazon S3 存储桶中。
静态文件
要提高性能,可以使用 “静态文件” 部分将代理服务器配置为从 Web 应用程序内的一组目录中提供静态文件(例如HTML或图像)。对于每个目录,您都将虚拟路径设置为目录映射。当代理服务器收到对指定路径下的某个文件的请求时,它将直接提供此文件,而不是将请求路由至您的应用程序。
有关使用配置文件或 Elastic Beanstalk 控制台配置静态文件的详细信息,请参阅 提供静态文件。
环境属性
环境属性部分允许您在运行您的应用程序的 Amazon EC2 实例上指定环境配置设置。环境属性会以密钥值对的形式传递到应用程序。
在运行于 Elastic Beanstalk 中的 Java SE 环境内,可通过使用 System.getenv()
访问环境变量。例如,您可以使用以下代码将名为 API_ENDPOINT
的属性读取到某个变量:
String endpoint = System.getenv("API_ENDPOINT");
参阅 环境属性和其他软件设置 了解更多信息。
Java SE 配置命名空间
您可以使用配置文件设置配置选项并在部署期间执行其他实例配置。配置选项可以是特定于平台的,也可以应用于整个 Elastic Beanstalk 服务中的所有平台。配置选项按命名空间进行组织。
Java SE 平台不定义任何特定于平台的命名空间。您可以使用 aws:elasticbeanstalk:environment:proxy:staticfiles
命名空间将代理配置为提供静态文件。有关详细信息和示例,请参阅提供静态文件。
Elastic Beanstalk 提供了许多用于自定义环境的配置选项。除了配置文件外,您还可以使用控制台、保存的配置CLI、EB 或 Amazon CLI。 有关配置选项更多信息,请参阅。
如果您的 Elastic Beanstalk Java SE 环境使用亚马逊 Linux 平台版本(AMI亚马逊 Linux 2 之前的版本),请阅读本节中的其他信息。
注意
-
本主题中的信息仅适用于基于 Amazon Linux AMI (AL1) 的平台分支。AL2023/ AL2 平台分支与之前的 Amazon Linux AMI (AL1) 平台版本不兼容,需要不同的配置设置。
-
2022 年 7 月 18 日,Elastic Beanstalk 将所有基于亚马逊 Linux () 的平台分支的状态设置为停用。AMI AL1有关迁移到当前且完全受支持的 Amazon Linux 2023 平台分支的更多信息,请参阅 将 Elastic Beanstalk Linux 应用程序迁移到 Amazon Linux 2023 或 Amazon Linux 2。
您可以使用配置文件设置配置选项并在部署期间执行其他实例配置。配置选项可以是特定于平台的,也可以应用于整个 Elastic Beanstalk 服务中的所有平台。配置选项按命名空间进行组织。
Java SE 平台除支持所有平台支持的命名空间外,还支持一个平台特定的配置命名空间。使用 aws:elasticbeanstalk:container:java:staticfiles
命名空间可以定义一些选项,通过它们将您的 Web 应用程序路径映射到应用程序源包中包含静态内容的文件夹。
例如,此 option_settings 代码段在静态文件命名空间中定义了两个选项。第一个选项将路径 /public
映射到名为 public
的文件夹,第二个选项将路径 /images
映射到名为 img
的文件夹:
option_settings:
aws:elasticbeanstalk:container:java:staticfiles:
/html: statichtml
/images: staticimages
通过此命名空间映射的文件夹必须为源包根目录中实际存在的文件夹。您无法将路径映射到JAR文件中的文件夹。
Elastic Beanstalk 提供了许多用于自定义环境的配置选项。除了配置文件外,您还可以使用控制台、保存的配置CLI、EB 或 Amazon CLI。 有关配置选项更多信息,请参阅。