Java 플랫폼 사용 - AWS App Runner

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Java 플랫폼 사용

AWS App Runner Java 플랫폼은 관리형 런타임을 제공합니다. 각 런타임을 사용하면 Java 버전 기반 웹 애플리케이션으로 컨테이너를 쉽게 빌드하고 실행할 수 있습니다. Java 런타임을 사용하는 경우 App Runner는 관리형 Java 런타임 이미지로 시작합니다. 이 이미지는 Amazon Linux Docker 이미지를 기반으로 하며 Java 버전용 런타임 패키지와 일부 도구를 포함합니다. App Runner는 이 관리형 런타임 이미지를 기본 이미지로 사용하고 애플리케이션 코드를 추가하여 Docker 이미지를 빌드합니다. 그런 다음 이 이미지를 배포하여 컨테이너에서 웹 서비스를 실행합니다.

App Runner 콘솔 또는 API 작업을 사용하여 서비스를 만들 때 App Runner 서비스의 런타임을 지정합니다. CreateService 런타임을 소스 코드의 일부로 지정할 수도 있습니다. 코드 리포지토리에 포함하는 App Runner 구성 파일에서 runtime 키워드를 사용하십시오. 관리형 런타임의 명명 규칙은 다음과 같습니다. <language-name><major-version>

현재 지원되는 모든 자바 런타임은 Amazon Corretto를 기반으로 합니다. 유효한 Java 런타임 이름 및 버전은 을 참조하십시오. Java 런타임 릴리스 정보

App Runner는 모든 배포 또는 서비스 업데이트에서 서비스의 런타임을 최신 버전으로 업데이트합니다. 애플리케이션에 특정 버전의 관리형 런타임이 필요한 경우 App Runner 구성 파일의 runtime-version 키워드를 사용하여 지정할 수 있습니다. 메이저 또는 마이너 버전을 포함하여 모든 수준의 버전으로 잠글 수 있습니다. App Runner는 서비스 런타임을 하위 수준으로만 업데이트합니다.

Amazon Corretto 런타임의 버전 구문:

런타임 구문

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

다음 예는 버전 잠금을 보여줍니다.

  • 11.0.13— Open JDK 업데이트 버전을 잠급니다. 앱 러너는 오픈 JDK 및 Amazon Corretto 하위 레벨 빌드만 업데이트합니다.

  • 11.0.13.08.1— 특정 버전으로 잠글 수 있습니다. App Runner는 런타임 버전을 업데이트하지 않습니다.

Java 런타임 구성

관리형 런타임을 선택할 때는 최소한 명령을 빌드하고 실행하도록 구성해야 합니다. App Runner 서비스를 만들거나 업데이트할 때 구성합니다. 다음 방법 중 하나를 사용하여 이 작업을 수행할 수 있습니다.

  • App Runner 콘솔 사용 — 생성 프로세스 또는 구성 탭의 빌드 구성 섹션에서 명령을 지정합니다.

  • 앱 러너 API 사용 — CreateService또는 UpdateServiceAPI 작업을 호출합니다. CodeConfigurationValues데이터 유형의 BuildCommandStartCommand 멤버를 사용하여 명령을 지정합니다.

  • 구성 파일 사용 - 최대 3번의 빌드 단계에서 하나 이상의 빌드 명령과 애플리케이션을 시작하는 데 사용되는 단일 실행 명령을 지정합니다. 추가 선택적 구성 설정이 있습니다.

구성 파일 제공은 선택 사항입니다. 콘솔 또는 API를 사용하여 App Runner 서비스를 만들 때는 App Runner가 구성 설정을 만들 때 직접 가져오는지 아니면 구성 파일에서 가져오는지 지정합니다.

Java 런타임 예제

다음 예제는 Java 서비스를 빌드하고 실행하기 위한 App Runner 구성 파일을 보여줍니다. 마지막 예는 Corretto 11 런타임 서비스에 배포할 수 있는 전체 Java 응용 프로그램의 소스 코드입니다.

참고

이 예제에서 사용되는 런타임 버전은 11.0.13.08.1입니다. 사용하려는 버전으로 교체할 수 있습니다. 지원되는 최신 Java 런타임 버전은 을 참조하십시오Java 런타임 릴리스 정보.

이 예제는 Corretto 11 관리형 런타임과 함께 사용할 수 있는 최소 구성 파일을 보여줍니다. App Runner가 최소 구성 파일을 사용하여 가정하는 내용은 을 참조하십시오.

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

이 예제에서는 Corretto 11 관리형 런타임에서 모든 구성 키를 사용하는 방법을 보여줍니다.

참고

이 예제에 사용된 런타임 버전은 11.0.13.08.1입니다. 사용하려는 버전으로 교체할 수 있습니다. 지원되는 최신 Java 런타임 버전은 을 참조하십시오Java 런타임 릴리스 정보.

예 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"

이 예제는 Corretto 11 런타임 서비스에 배포할 수 있는 전체 Java 응용 프로그램의 소스 코드를 보여줍니다.

예 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; } }
예 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); } }
예 apprunner.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
예 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>