> Java > java지도 시간 > 본문

Java Lambda 함수용 레이어를 생성, 게시 및 사용하는 방법

WBOY
풀어 주다: 2024-07-18 13:59:57
원래의
634명이 탐색했습니다.

How to create, publish and use layers for Java Lambda functions

소개

Lambda 함수 및 Java 21 런타임이 포함된 Lambda 계층의 사용이 콜드(SnapStart 활성화 여부에 관계없이) 및 웜 시작 시간에 어떤 영향을 미치는지 조사하기 위한 준비로서 생성 방법에 대해 소개하고 싶습니다. SAM 템플릿의 Java(21) Lambda 함수에 대한 레이어를 게시하고 사용합니다.

람다 레이어란?

Lambda 레이어는 보충 코드나 데이터가 포함된 .zip 파일 아카이브입니다. 레이어에는 일반적으로 라이브러리 종속성, 사용자 정의 런타임 또는 구성 파일이 포함됩니다.

Lambda 계층 사용의 이점

레이어 사용을 고려하는 데는 여러 가지 이유가 있습니다.

  • 배포 패키지의 크기를 줄이기 위해. 배포 패키지에 함수 코드와 함께 모든 함수 종속성을 포함하는 대신 계층에 배치하세요. 이렇게 하면 배포 패키지를 작고 체계적으로 유지할 수 있습니다.
  • 핵심 기능 로직을 종속성으로부터 분리합니다. 레이어를 사용하면 함수 코드와 관계없이 함수 종속성을 업데이트할 수 있으며 그 반대의 경우도 마찬가지입니다. 이는 우려 사항의 분리를 촉진하고 기능 논리에 집중하는 데 도움이 됩니다.
  • 여러 기능에 걸쳐 종속성을 공유합니다. 레이어를 생성한 후에는 계정의 여러 기능에 레이어를 적용할 수 있습니다. 계층이 없으면 각 개별 배포 패키지에 동일한 종속성을 포함해야 합니다.
  • Lambda 콘솔 코드 편집기를 사용합니다. 코드 편집기는 사소한 함수 코드 업데이트를 빠르게 테스트하는 데 유용한 도구입니다. 단, 배포 패키지 크기가 너무 크면 편집기를 사용할 수 없습니다. 레이어를 사용하면 패키지 크기가 줄어들고 코드 편집기를 더 많이 사용할 수 있습니다.

AWS CLI v2 및 SAM 템플릿을 사용하여 Java 21 Lambda 함수용 레이어를 생성, 게시 및 사용하는 방법

탐색을 위해 다음 종속성을 계층에 패키징하는 Java 21 런타임으로 Lambda 계층을 생성하기 위한 샘플 애플리케이션을 사용합니다.

  • aws-lambda-java-코어
  • aws-lambda-java-이벤트
  • org-crac
  • slf4j-간단
  • jackson-dataformat-xml

Lambda 레이어를 생성하려면 다음이 필요합니다.

  • Java 21 런타임
  • Java 21 애플리케이션을 빌드하고 패키징할 수 있는 Maven 버전(3.8.6 이상)
  • AWS CLI v2

Lambda 계층을 사용하려면 단일 uber-jar에 종속성을 구축해야 합니다. 이를 위해 pom.xml에 두 개의 플러그인을 사용합니다. maven-compiler-plugin은 소스 코드를 컴파일합니다. maven-shade-plugin은 아티팩트를 단일 uber-jar로 패키징합니다. 그런 다음 실행해야 합니다

mvn clean package
로그인 후 복사

애플리케이션을 구축합니다.

Java 런타임을 사용하여 Lambda 함수에 계층을 추가하면 Lambda는 해당 실행 환경의 /opt 디렉터리에 계층 콘텐츠를 로드합니다. 각 Lambda 런타임에 대해 PATH 변수에는 이미 /opt 디렉터리 내의 특정 폴더 경로가 포함되어 있습니다. PATH 변수가 레이어 콘텐츠를 선택하도록 하려면 레이어 .zip 파일이 다음 폴더 경로에 종속성을 가져야 합니다. java/lib

예를 들어 샘플 애플리케이션으로 생성한 결과 레이어 .zip 파일의 디렉터리 구조는 다음과 같습니다.

aws-pure-java-21-common-lambda-layer-content.zip
└ java
    └ lib
        └ aws-pure-java-21-common-lambda-layer-1.0.0-SNAPSHOT.jar
로그인 후 복사

Linux에서 다음 명령을 실행하면 얻을 수 있습니다.

  • mkdir 자바
  • mkdir java/lib
  • cp -r target/aws-pure-java-21-common-lambda-layer-1.0.0-SNAPSHOT.jar java/lib/
  • zip -r aws-pure-java-21-common-lambda-layer-content.zip java

Java 21 런타임을 사용하여 이 Lambda 계층을 게시하려면 AWS CLI v2에서 다음 명령을 실행해야 합니다.

aws lambda publish-layer-version --layer-name aws-pure-java-21-common-lambda-layer --zip-file fileb://aws-pure-java-21-common-lambda-layer-content.zip --compatible-runtimes java21
로그인 후 복사

추가 매개변수 -- Compatible-architectures "x86"을 사용하면 x86(기본값) 또는 arm64와 같은 호환 가능한 하드웨어 아키텍처를 정의할 수 있습니다.

응답으로 AWS는 나중에 참조해야 할 Lambda 계층 ARN을 제공하며 이는 다음과 유사합니다.

arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:layer:aws-pure-java-21-common-lambda-layer:1

마지막 매개변수는 Lambda 레이어 버전으로, 레이어를 처음 게시할 때 항상 1이고 기존 Lambda 레이어의 후속 업데이트로 1씩 증가합니다.

기능에 레이어를 연결하기 위해 다음을 수행할 수 있습니다.

  • when using AWS CLI v2 and invoking aws lambda create-function command add --layers paramater with layer ARN like arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:layer:aws-pure-java-21-common-lambda-layer:1
  • when using AWS SAM template like we'll explore in our next article (here is the concrete example) add Layers parameter to the Lambda function like this:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: GetProductByIdWithPureJava21LambdaWithCommonLayer
      AutoPublishAlias: liveVersion
      Layers:
        - !Sub arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:layer:aws-pure-java-21-common-lambda-layer:1
      Handler: software.amazonaws.example.product.handler.GetProductByIdHandler::handleRequest
로그인 후 복사

Conclusion

In this article I gave an introduction about how to create, publish and use layers for Java 21 Lambda functions AWS CLI v2 and the SAM template. In the next article published under the AWS Lambda SnapStart series I'll explore how the usage of the (different) Lambda layers with function having Java 21 runtime affects the cold (with and without enabling SnapStart) and warm start times.

위 내용은 Java Lambda 함수용 레이어를 생성, 게시 및 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!