AWS CDK Java에서 작업하기 - AWS Cloud Development Kit (AWS CDK) v2

AWS CDK v2 개발자 안내서입니다. 구형 CDK v1은 2022년 6월 1일에 유지 보수에 들어갔고 2023년 6월 1일에 지원이 종료되었습니다.

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

AWS CDK Java에서 작업하기

Java는 에서 완전히 지원되는 클라이언트 AWS CDK 언어이며 안정적인 것으로 간주됩니다. JDK(Oracle 또는 Amazon Corretto와 같은 개방형 JDK 배포판) 및 Apache Maven을 비롯한 친숙한 도구를 사용하여 Java로 AWS CDK 애플리케이션을 개발할 수 있습니다.

AWS CDK 는 Java 8 이상을 지원합니다. 그러나 최신 버전의 언어에는 AWS CDK 응용 프로그램 개발에 특히 편리한 개선 사항이 포함되어 있으므로 가능한 최신 버전을 사용하는 것이 좋습니다. 예를 들어 Java 9에서는 이 Map.of() 메서드 (객체 리터럴로 작성될 해시맵을 선언하는 편리한 방법) 를 도입했습니다. TypeScript Java 10에서는 키워드를 사용한 로컬 형식 추론을 도입합니다. var

참고

이 개발자 안내서에 있는 대부분의 코드 예제는 Java 8에서 작동합니다. 몇 가지 예제에서는 를 사용합니다Map.of(). 이 예제에는 Java 9가 필요하다는 설명이 포함되어 있습니다.

모든 텍스트 편집기나 Maven 프로젝트를 읽을 수 IDE 있는 Java를 사용하여 AWS CDK 앱에서 작업할 수 있습니다. 이 안내서에서는 Eclipse 힌트를 제공하지만 IntelliJ IDEA 및 기타 제품은 Maven 프로젝트를 가져올 IDEs 수 있으며 Java로 응용 프로그램을 개발하는 데 사용할 수 있습니다. NetBeans AWS CDK

Java가 아닌 JVM 호스팅 언어 (예: Kotlin, Groovy, Clojure 또는 Scala) 로 AWS CDK 애플리케이션을 작성할 수 있지만, 사용 경험이 그다지 유용하지 않을 수 있으며 이러한 언어에 대한 지원도 제공할 수 없습니다.

Java 시작하기

를 사용하려면 AWS 계정과 자격 증명이 있어야 AWS CDK하며 Node.js 및 툴킷이 설치되어 있어야 합니다. AWS CDK 시작하기 AWS CDK을 참조하세요.

자바 AWS CDK 애플리케이션에는 Java 8 (v1.8) 이상이 필요합니다. Amazon Corretto를 권장하지만 모든 JDK 오픈 배포판이나 오라클을 사용할 수 있습니다. JDK 아파치 메이븐 3.5 이상도 필요합니다. Gradle과 같은 도구를 사용할 수도 있지만 툴킷에서 생성되는 애플리케이션 스켈레톤은 Maven 프로젝트입니다. AWS CDK

참고

타사 언어 지원 중단: 언어 버전은 공급업체 또는 커뮤니티에서 해당 버전 EOL (End Of Life) 을 공유할 때까지만 지원되며 사전 통지로 변경될 수 있습니다.

프로젝트 생성

cdk init 디렉터리에서 호출하여 새 AWS CDK 프로젝트를 생성합니다. --language옵션을 사용하고 다음을 지정합니다java.

mkdir my-project cd my-project cdk init app --language java

cdk init프로젝트 폴더 이름을 사용하여 클래스, 하위 폴더, 파일 등 프로젝트의 다양한 요소에 이름을 지정합니다. 폴더 이름의 하이픈은 밑줄로 변환됩니다. 하지만 이름은 Java 식별자 형식을 따라야 합니다. 예를 들어, 숫자로 시작하거나 공백을 포함해서는 안 됩니다.

결과 프로젝트에는 software.amazon.awscdk Maven 패키지에 대한 참조가 포함됩니다. Maven은 이 프로젝트와 해당 종속성을 자동으로 설치합니다.

를 사용하는 경우 이제 IDE 프로젝트를 열거나 가져올 수 있습니다. 예를 들어 Eclipse에서는 [파일] > [가져오기] > [Maven] > [기존 Maven 프로젝트] 를 선택합니다. 프로젝트 설정이 Java 8 (1.8) 을 사용하도록 설정되어 있는지 확인하십시오.

AWS 구성 라이브러리 모듈 관리

Maven을 사용하여 그룹에 software.amazon.awscdk 있는 AWS 구성 라이브러리 패키지를 설치합니다. 대부분의 구문은 아티팩트에 있으며aws-cdk-lib, 이 아티팩트는 기본적으로 새 Java 프로젝트에 추가됩니다. 더 높은 수준의 CDK 지원이 아직 개발 중인 서비스의 모듈은 별도의 “실험용” 패키지에 들어 있으며, 해당 서비스 이름의 짧은 버전 (no 또는 AWS Amazon 접두사) 으로 이름이 지정됩니다. Maven 중앙 리포지토리를 검색하여 모든 AWS CDK 모듈 라이브러리의 이름을 찾고 모듈 라이브러리를 구성하십시오. AWS

참고

CDKAPIReference의 Java 에디션에는 패키지 이름도 나와 있습니다.

일부 서비스의 AWS 구성 라이브러리 지원은 둘 이상의 네임스페이스에서 제공됩니다. 예를 들어, Amazon Route 53의 기능은software.amazon.awscdk.route53,, route53-patternsroute53resolver, 로 구분되어 route53-targets 있습니다.

기본 AWS CDK 패키지는 Java 코드로 다음과 같이 가져옵니다software.amazon.awscdk. AWS 구성 라이브러리의 다양한 서비스에 대한 모듈은 Maven 패키지 이름에 software.amazon.awscdk.services 포함되며 이름은 Maven 패키지 이름과 비슷합니다. 예를 들어, Amazon S3 모듈의 네임스페이스는 입니다. software.amazon.awscdk.services.s3

각 Java 소스 파일에서 사용하는 AWS Construct Library 클래스마다 별도의 Java import 문을 작성하고 와일드카드를 가져오지 않는 것이 좋습니다. 명령문 없이도 언제든지 형식의 정규화된 이름 (네임스페이스 포함) 을 사용할 수 있습니다. import

애플리케이션이 실험용 패키지를 사용하는 경우 프로젝트를 pom.xml 편집하고 컨테이너에 새 <dependency> 요소를 추가하세요. <dependencies> 예를 들어, 다음 <dependency> 요소는 CodeStar 실험적 구성 라이브러리 모듈을 지정합니다.

<dependency> <groupId>software.amazon.awscdk</groupId> <artifactId>codestar-alpha</artifactId> <version>2.0.0-alpha.10</version> </dependency>
작은 정보

Java를 사용하는 경우 아마도 IDE Maven 종속성을 관리하는 기능이 있을 것입니다. 하지만 pom.xml 직접 편집하는 것이 좋습니다. 단, 직접 편집하는 것이 좋습니다. 단, 직접 편집하는 것이 좋습니다. IDE

의 종속성 관리 Java

Java에서는 Maven을 사용하여 종속성을 pom.xml 지정하고 설치합니다. <dependencies>컨테이너에는 각 패키지의 <dependency> 요소가 포함되어 있습니다. 다음은 일반적인 CDK Java 앱에 pom.xml 대한 섹션입니다.

<dependencies> <dependency> <groupId>software.amazon.awscdk</groupId> <artifactId>aws-cdk-lib</artifactId> <version>2.14.0</version> </dependency> <dependency> <groupId>software.amazon.awscdk</groupId> <artifactId>appsync-alpha</artifactId> <version>2.10.0-alpha.0</version> </dependency> </dependencies>
작은 정보

많은 IDEs Java에는 Maven 지원 및 시각적 pom.xml 편집기가 통합되어 있어 종속성 관리에 편리할 수 있습니다.

Maven은 종속성 잠금을 지원하지 않습니다. 에서 버전 범위를 지정할 수 있지만 빌드를 pom.xml 반복 가능하게 유지하려면 항상 정확한 버전을 사용하는 것이 좋습니다.

Maven은 전이적 종속성을 자동으로 설치하지만 각 패키지에는 하나의 사본만 설치할 수 있습니다. POM트리에서 가장 위에 지정된 버전이 선택되며, 설치되는 패키지 버전의 최종 결정권은 항상 응용 프로그램에 표시됩니다.

Maven은 프로젝트를 빌드 (mvn compile) 하거나 패키징 (mvn package) 할 때마다 종속성을 자동으로 설치하거나 업데이트합니다. CDK툴킷은 실행할 때마다 이 작업을 자동으로 수행하므로 일반적으로 Maven을 수동으로 호출할 필요가 없습니다.

AWS CDK 자바 관용구

소품

모든 AWS Construct Library 클래스는 구문이 정의되는 범위 (구성 트리의 부모), id, props라는 세 가지 인수를 사용하여 인스턴스화됩니다. props는 구문이 생성하는 리소스를 구성하는 데 사용하는 키/값 쌍의 번들입니다. 다른 클래스와 메서드에서도 인수에 “속성 번들” 패턴을 사용합니다.

Java에서 props는 Builder 패턴을 사용하여 표현됩니다. 각 구성 유형에는 해당하는 props 유형이 있습니다. 예를 들어, Amazon S3 버킷을 나타내는 Bucket 구문은 인스턴스를 props로 사용합니다. BucketProps

BucketProps클래스 (모든 AWS Construct Library props 클래스와 마찬가지로) 에는 라는 내부 클래스가 있습니다. Builder BucketProps.Builder형식은 BucketProps 인스턴스의 다양한 속성을 설정하는 메서드를 제공합니다. 각 메서드는 Builder 인스턴스를 반환하므로 메서드 호출을 연결하여 여러 속성을 설정할 수 있습니다. 체인의 끝에서 BucketProps 객체를 실제로 build() 생성하기 위해 호출합니다.

Bucket bucket = new Bucket(this, "MyBucket", new BucketProps.Builder() .versioned(true) .encryption(BucketEncryption.KMS_MANAGED) .build());

props와 유사한 객체를 최종 인수로 사용하는 구문 및 기타 클래스는 단축키를 제공합니다. 클래스에는 해당 클래스와 해당 Builder props 객체를 한 번에 인스턴스화하는 자체 클래스가 있습니다. 이렇게 하면 BucketProps Bucket a와 —를 모두 명시적으로 인스턴스화할 필요가 없고 props 유형을 임포트할 필요도 없습니다.

Bucket bucket = Bucket.Builder.create(this, "MyBucket") .versioned(true) .encryption(BucketEncryption.KMS_MANAGED) .build();

기존 구문에서 자체 구문을 파생하는 경우 추가 속성을 허용하는 것이 좋습니다. 다음과 같은 빌더 패턴을 따르는 것이 좋습니다. 하지만 이는 구체 클래스를 서브클래싱하는 것만큼 간단하지 않습니다. 두 개의 새 Builder 클래스에서 움직이는 부분을 직접 제공해야 합니다. 구문에 하나 이상의 추가 인수를 받아들이는 것이 더 나을 수도 있습니다. 인수가 선택사항인 경우 추가 생성자를 제공해야 합니다.

제네릭 구조

APIs일부에서는 JavaScript 배열이나 형식이 지정되지 않은 객체를 메서드의 입력으로 AWS CDK 사용합니다. (예를 들어 AWS CodeBuild의 BuildSpec.fromObject()메서드를 참조하십시오.) Java에서 이러한 객체는 다음과 같이 표현됩니다java.util.Map<String, Object>. 값이 모두 문자열인 경우 사용할 수 있습니다Map<String, String>.

Java는 다른 언어처럼 이러한 컨테이너에 대한 리터럴을 작성하는 방법을 제공하지 않습니다. Java 9 이상에서는 이러한 호출 중 하나를 java.util.Map.of()사용하여 최대 10개 항목의 맵을 인라인으로 편리하게 정의할 수 있습니다.

java.util.Map.of( "base-directory", "dist", "files", "LambdaStack.template.json" )

항목이 10개 이상인 맵을 생성하려면 를 사용하십시오 java.util.Map.ofEntries().

Java 8을 사용하는 경우 이와 유사한 자체 메서드를 제공할 수 있습니다.

JavaScript 배열은 Java로 List<Object> 또는 List<String> 형식으로 표시됩니다. 이 java.util.Arrays.asList 메서드는 짧은 List s를 정의하는 데 편리합니다.

List<String> cmds = Arrays.asList("cd lambda", "npm install", "npm install typescript")

누락된 값

Java에서 props와 같은 AWS CDK 객체의 누락된 값은 로 null 표시됩니다. 가능한 모든 값을 명시적으로 null 테스트하여 값을 다루기 전에 값이 포함되어 있는지 확인해야 합니다. Java에는 다른 언어처럼 null 값을 처리하는 데 도움이 되는 “문법”이 없습니다. 상황에 따라 ObjectUtil Apache가 firstNonNull유용할 수도 defaultIfNull있습니다. 또는 null이 될 수 있는 값을 더 쉽게 처리하고 코드를 더 읽기 쉽게 만들 수 있는 정적 도우미 메서드를 직접 작성해 보세요.

애플리케이션을 빌드하고 실행합니다. CDK

는 앱을 실행하기 전에 AWS CDK 자동으로 컴파일합니다. 하지만 앱을 수동으로 빌드하여 오류를 확인하고 테스트를 실행하는 것이 유용할 수 있습니다. Eclipse에서 IDE Control-B를 누르거나 프로젝트의 루트 디렉터리에 있는 동안 명령 프롬프트에서 명령을 실행하여 이 작업을 수행할 수 있습니다. mvn compile

작성한 모든 테스트를 명령 mvn test 프롬프트에서 실행하여 실행하십시오.