Java Lambda 함수를 위한 계층 작업
Lambda 계층을 사용하여 여러 함수에서 재사용하려는 코드와 종속성을 패키징합니다. 계층에는 일반적으로 라이브러리 종속 항목, 사용자 지정 런타임 또는 구성 파일이 포함됩니다. 계층을 생성하려면 세 가지 일반적인 단계를 거칩니다.
- 
      계층 콘텐츠를 패키징합니다. 즉, 함수에 사용하려는 종속성이 포함된 .zip 파일 아카이브를 생성합니다. 
- 
      Lambda에서 계층을 생성합니다. 
- 
      계층을 함수에 추가합니다. 
계층 콘텐츠 패키징
계층을 생성하려면 다음 요구 사항을 충족하는 .zip 파일 아카이브로 패키지를 번들링합니다.
- 
        Maven 또는 Gradle이 참조하는 Java 버전이 배포하려는 함수의 Java 버전과 동일한지 확인합니다. 예를 들어 Java 21 함수의 경우 mvn -v명령은 출력에 Java 21을 나열해야 합니다.
- 
        .zip 파일의 루트에 있는 java/lib디렉터리에 종속성을 저장해야 합니다. 자세한 내용은 각 Lambda 런타임에 대한 계층 경로 섹션을 참조하세요.
- 
        계층의 패키지는 Linux와 호환되어야 합니다. Lambda 함수는 Amazon Linux에서 실행됩니다. 
타사 Java 라이브러리나 자체 Java 모듈과 패키지를 포함하는 계층을 생성할 수 있습니다. 다음 절차에서는 Maven을 사용합니다. Gradle을 사용하여 계층 콘텐츠를 패키징할 수도 있습니다.
Maven 종속성을 사용하여 계층을 생성하려면 다음을 수행하세요.
- 
        종속성을 정의하는 pom.xml파일로 Apache Maven 프로젝트를 생성합니다.다음 예제에는 JSON 처리를 위한 Jackson Databind 가 포함되어 있습니다. <build>섹션에서는 종속성을 단일 uber-jar로 번들링하는 대신 maven-dependency-plugin을 사용하여 각 종속성에 대해 별도의 JAR 파일을 생성합니다. uber-jar를 생성하려면 maven-shade-plugin 을 사용합니다. 예 pom.xml<dependencies> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.17.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.13.0</version> <configuration> <source>21</source> <target>21</target> <release>21</release> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.6.1</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build>
- 
        프로젝트를 빌드합니다. 이 명령은 target/lib/디렉터리에 모든 종속성 JAR 파일을 생성합니다.mvn clean package
- 
        계층에 필요한 디렉터리 구조를 생성합니다. mkdir -p java/lib
- 
        java/lib디렉터리에 종속성 JAR 파일을 복사합니다.cp target/lib/*.jar java/lib/
- 
        계층 콘텐츠를 .zip 파일로 압축합니다. .zip 파일의 디렉터리 구조는 다음과 같아야 합니다. java/ └── lib/ ├── jackson-databind-2.17.0.jar ├── jackson-core-2.17.0.jar └── jackson-annotations-2.17.0.jar참고파일의 루트 수준에 java디렉터리가 포함되어 있고 그 안에lib가 있는지 확인하세요. 이 구조는 Lambda가 라이브러리를 찾아서 가져올 수 있도록 합니다. 각 종속성은 uber-jar로 번들링되지 않고 별도의 JAR 파일로 유지됩니다.
Lambda에서 계층 생성
AWS CLI 또는 Lambda 콘솔을 사용하여 계층을 게시할 수 있습니다.