Uso de la plataforma Java - AWS App Runner

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de la plataforma Java

La plataforma AWS App Runner Java proporciona tiempos de ejecución gestionados. Cada tiempo de ejecución facilita la creación y ejecución de contenedores con aplicaciones web basadas en una versión de Java. Cuando usas un entorno de ejecución de Java, App Runner comienza con una imagen de tiempo de ejecución de Java gestionada. Esta imagen se basa en la imagen de Docker de Amazon Linux y contiene el paquete de tiempo de ejecución de una versión de Java y algunas herramientas. App Runner usa esta imagen de tiempo de ejecución administrada como imagen base y agrega el código de la aplicación para crear una imagen de Docker. A continuación, implementa esta imagen para ejecutar el servicio web en un contenedor.

Usted especifica un tiempo de ejecución para su servicio de App Runner al crear un servicio mediante la consola de App Runner o la operación de la CreateServiceAPI. También puedes especificar un tiempo de ejecución como parte de tu código fuente. Usa la runtime palabra clave en un archivo de configuración de App Runner que incluyas en tu repositorio de código. La convención de nomenclatura de un tiempo de ejecución gestionado es. <language-name><major-version>

En este momento, todos los tiempos de ejecución de Java compatibles se basan en Amazon Corretto. Para ver los nombres y las versiones de los tiempos de ejecución de Java válidos, consulte. Información sobre la versión de Java Runtime

App Runner actualiza el tiempo de ejecución del servicio a la versión más reciente en cada implementación o actualización del servicio. Si su aplicación requiere una versión específica de un tiempo de ejecución administrado, puede especificarla mediante la runtime-version palabra clave del archivo de configuración de App Runner. Puedes bloquearla en cualquier nivel de versión, incluida una versión principal o secundaria. App Runner solo realiza actualizaciones de nivel inferior en el tiempo de ejecución del servicio.

Sintaxis de la versión para los tiempos de ejecución de Amazon Corretto:

Tiempo de ejecución Sintaxis Ejemplo

corretto11

11.0[.openjdk-update[.openjdk-build[.corretto-specific-revision]]]

11.0.13.08.1

corretto8

8[.openjdk-update[.openjdk-build[.corretto-specific-revision]]]

8.312.07.1

Los siguientes ejemplos muestran el bloqueo de versiones:

  • 11.0.13— Bloquee la versión de actualización de Open JDK. App Runner actualiza solo las versiones de nivel inferior de Open JDK y Amazon Corretto.

  • 11.0.13.08.1— Bloquear una versión específica. App Runner no actualiza tu versión en tiempo de ejecución.

Configuración del tiempo de ejecución de Java

Al elegir un tiempo de ejecución gestionado, también debe configurar, como mínimo, los comandos de compilación y ejecución. Los configuras al crear o actualizar tu servicio App Runner. Puede hacerlo mediante uno de los siguientes métodos:

  • Mediante la consola de App Runner: especifique los comandos en la sección Configurar compilación del proceso de creación o en la pestaña de configuración.

  • Uso de la API de App Runner: llame a la operación CreateServiceo UpdateServiceAPI. Especifique los comandos mediante los StartCommand miembros BuildCommand y del tipo de CodeConfigurationValuesdatos.

  • Uso de un archivo de configuración: especifique uno o más comandos de compilación en un máximo de tres fases de compilación y un solo comando de ejecución que sirva para iniciar la aplicación. Hay opciones de configuración opcionales adicionales.

Proporcionar un archivo de configuración es opcional. Al crear un servicio de App Runner mediante la consola o la API, debe especificar si App Runner obtiene los ajustes de configuración directamente al crearlos o de un archivo de configuración.

Ejemplos de entornos de ejecución de Java

Los siguientes ejemplos muestran los archivos de configuración de App Runner para crear y ejecutar un servicio Java. El último ejemplo es el código fuente de una aplicación Java completa que puede implementar en un servicio de tiempo de ejecución de Corretto 11.

nota

La versión en tiempo de ejecución que se utiliza en estos ejemplos es la 11.0.13.08.1. Puede sustituirla por la versión que desee utilizar. Para ver la última versión de ejecución de Java compatible, consulteInformación sobre la versión de Java Runtime.

Este ejemplo muestra un archivo de configuración mínimo que puede utilizar con un entorno de ejecución gestionado por Corretto 11. Para ver las suposiciones que App Runner hace con un archivo de configuración mínimo, consulte.

ejemplo apprunner.yaml
version: 1.0 runtime: corretto11 build: commands: build: - mvn clean package run: command: java -Xms256m -jar target/MyApp-1.0-SNAPSHOT.jar .

Este ejemplo muestra cómo puede utilizar todas las claves de configuración con un tiempo de ejecución gestionado por Corretto 11.

nota

La versión de tiempo de ejecución que se utiliza en estos ejemplos es la 11.0.13.08.1. Puede sustituirla por la versión que desee utilizar. Para ver la última versión de ejecución de Java compatible, consulteInformación sobre la versión de Java Runtime.

ejemplo apprunner.yaml
version: 1.0 runtime: corretto11 build: commands: pre-build: - yum install some-package - scripts/prebuild.sh build: - mvn clean package post-build: - mvn clean test env: - name: M2 value: "/usr/local/apache-maven/bin" - name: M2_HOME value: "/usr/local/apache-maven/bin" run: runtime-version: 11.0.13.08.1 command: java -Xms256m -jar target/MyApp-1.0-SNAPSHOT.jar . network: port: 8000 env: APP_PORT env: - name: MY_VAR_EXAMPLE value: "example"

Este ejemplo muestra el código fuente de una aplicación Java completa que puede implementar en un servicio de tiempo de ejecución de Corretto 11.

ejemplo src/main/java/com//.java HelloWorld HelloWorld
package com.HelloWorld; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloWorld { @RequestMapping("/") public String index(){ String s = "Hello World"; return s; } }
ejemplo src/main/java/com/ HelloWorld /Main.java
package com.HelloWorld; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Main { public static void main(String[] args) { SpringApplication.run(Main.class, args); } }
ejemplo aprunner.yaml
version: 1.0 runtime: corretto11 build: commands: build: - mvn clean package run: command: java -Xms256m -jar target/HelloWorldJavaApp-1.0-SNAPSHOT.jar . network: port: 8080
ejemplo pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.1.RELEASE</version> <relativePath/> </parent> <groupId>com.HelloWorld</groupId> <artifactId>HelloWorldJavaApp</artifactId> <version>1.0-SNAPSHOT</version> <properties> <java.version>11</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-rest</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <release>11</release> </configuration> </plugin> </plugins> </build> </project>