Site icon 지락문화예술공작단

AWS Lambda Extensions 미리보기 기능 출시 (서울 리전 포함)

AWS Lambda Extensions 미리보기 기능 출시 (서울 리전 포함)

AWS Lambda 함수에서 선호하는 모니터링, 관찰 가능성, 보안 및 거버넌스 도구와 쉽게 통합 할 수 있는 새로운 방법인 Lambda Extensions의 미리보기를 발표합니다. 이 글에서는 Lambda Extensions이 작동하는 방식, 사용을 시작하는 방법 및 현재 사용 가능한 AWS Lambda Extensions 파트너에 대해 설명합니다.

Lambda Extensions은 고객의 일반적인 요청을 해결하여 기존 도구를 Lambda와 더 쉽게 통합 할 수 있도록 도와줍니다. 이전에 고객은 Lambda를 선호하는 도구와 통합하려면 추가 운영 및 구성 작업이 필요했습니다. 또한 장기 실행 프로세스 인 로그 에이전트와 같은 도구는 Lambda에서 쉽게 실행할 수 없습니다.

Lambda Extensions은 복잡한 설치 또는 구성이 필요하지 않으며이 단순화 된 경험을 통해 오늘날 애플리케이션 포트폴리오에서 선호하는 도구를 더 쉽게 사용할 수 있습니다. 다음과 같은 사용 사례에 확장을 사용할 수 있습니다.

현재 미리보기에서는 AWS Lambda Ready 파트너 및 오픈 소스 프로젝트에서 확장 기능을 사용할 수 있습니다. AppDynamics, Check Point, Datadog, Dynatrace, Epsagon, HashiCorp, Lumigo, New Relic, Thundra, Splunk SignalFX, AWS AppConfig 및 Amazon CloudWatch Lambda Insights에 사용할 수 있습니다.

확장 기능 구현 방법에 대해서는 Building Extensions for AWS Lambda – In preview 글을 참고하세요!

Lambda Extensions 개요

Lambda Extensions는 복잡한 설치 또는 구성 관리없이 현재 사용하는 도구를 가장 쉽게 연결할 수 있도록 설계되었습니다. Lambda Laye를 통해 배포하며, AWS 관리 콘솔, CLI, AWS CloudFormation , AWS Serverless Application Model (AWS SAM), Serverless Framework Terraform 을사용 할 수 있습니다.

Lambda Extensions에는 Extension API와 Runtime API라는 두 가지 구성 요소가 있습니다. Extensions API는 함수 초기화, 호출 및 종료 중에 더 많은 제어 권한을 얻을 수 있는 방법을 제공하는 새로운 Lambda Extension API를 사용하여 구축됩니다. 이 API는 기존 Lambda Runtime API를 기반으로 하므로 사용자 지정 런타임을 Lambda로 가져올 수 있습니다.

대부분의 고객은 Lambda Extensions을 가능하게 하는 Extensions API의 기능에 대해 알 필요 없이 확장 기능 자체만 사용합니다. Lambda 함수에서 옵션을 구성하여 Lambda Extensions을 사용할 수 있습니다. Lambda Extensions을 만드는 개발자는 Extensions API를 사용하여 함수 및 실행 환경 수명 주기 이벤트에 등록합니다.

Lambda Extensions은 내부 및 외부의 두 가지 모드 중 하나로 실행할 수 있습니다.

Extensions API 및 Lambda 수명주기의 변경 사항에 대한 자세한 내용 Building Extensions for AWS Lambda – In preview 글을 참고하세요!

사용 가능한 Lambda Extensions 목록

현재 다음과 같은 AWS 및 AWS Lambda Ready 파트너 도구로 확장 기능을 사용할 수 있으며 앞으로 더 많은 도구가 제공 될 것입니다.

또한 자체 확장 기능을 구축하고 사용하여 사내 업무 도구를 통합 할 수 있습니다. 예를 들어, Square는 사내 자체 업무용 확장 기능을 만들었습니다.

Square의 Cloud Foundations 팀은 클라우드에 좀 더 안전하게 접근하도록 하기 위해 노력하고 있습니다. 우리는 Square의 민감한 데이터를 보호하기 위해 인프라를 구축하고 Square에서 서버리스 애플리케이션을 활성화하고 Lambda에 mTLS ID를 제공하는 인프라를 구축하는 보안 인프라 팀과 협력했습니다.

Lambda에 대한 작업을 시작한 이래로 우리는 간소화 된 개발자 경험을 만드는 데 집중했습니다. Lambda를 채택한 팀은 AWS에 대해 많은 것을 배워야하며 확장은 일반적인 사용 사례를 추상화하는 방법으로 간주됩니다. 초기 탐색을 위해 현재 도구에서 각 Lambda 함수가 일반적으로 3-5 개의 보안 정보를 가져 오는 것처럼 보안 정보에 쉽게 액세스 할 수 있기를 원했습니다.

저희가 구축 한 확장 기능과 오픈 소스는 Lambda 함수가 호출되기 전에 콜드 스타트시 비밀번호를 가져옵니다. 각 기능에는 가져올 비밀을 지정하는 구성 파일이 포함되어 있습니다. Lambda 함수는 필요한 작업 만 수행해야하므로이 구성이 핵심이라는 것을 알고있었습니다. 비밀번호 로컬 캐시되며, 필요할 때만 읽기 때문에 이렇게하면 Lambda 함수가 더 빨라질뿐만 아니라 비밀번호에 액세스하기위한 코드 양도 줄어 듭니다.

AWS AppConfig Extensions 사용해 보기

이 데모는 Lambda 함수와 함께 AWS AppConfig를 사용하는 예를 보여줍니다. AWS AppConfig는 AWS Systems Manager 애플리케이션 구성을 생성, 관리 및 빠르게 배포 할 . 응용 프로그램을 다시 배포하지 않고도 외부 구성을 동적으로 배포 할 수 있습니다. AWS AppConfig에는 강력한 유효성 검사 기능이 있으므로 모든 구성 변경 사항을 애플리케이션에 배포하기 전에 안전하게 테스트 할 수 있습니다.

AWS AppConfig에는 Lambda 함수가 외부 구성 설정에 빠르고 쉽게 액세스 할 수있는 확장 기능이 있습니다. 이 확장 기능은 별도의 로컬 프로세스를 실행하여 AWS AppConfig 서비스에서 구성 데이터를 검색하고 캐시합니다. 그러면 Lambda 함수 코드는 네트워크를 통하지 않고 로컬 호출을 사용하여 구성 데이터를 더 빠르게 가져올 수 있습니다.

예제를 설정하려면, GitHub 리포지토리에서 README.md 파일의 지침을 따르세요.

아래 예에서는 AWS AppConfig 애플리케이션, 환경 및 구성 프로필을 생성합니다.

AWS AppConfig 배포가 실행되어 초기 구성을 배포합니다.

위의 예제에는 AWS AppConfig 확장을 포함하는 두 개의 Lambda 함수가 포함되어 있습니다. AppConfig 확장이있는 Layer 목록은 블로그 게시물 “AWS AppConfig Lambda Extensions”을 참조하십시오.

Extensions은 Lambda 함수와 동일한 권한을 공유하므로 함수에는 허용하는 AWS AppConfig 구성 역할에 따라 실행할 수 있습니다.

이 함수는 확장 기능을 사용하여 에서 loglevel을 검색하고 AWS AppConfig 값을 응답으로 반환합니다. 프로덕션 애플리케이션에서는 이 값을 함수 코드 내에서 사용하여 CloudWatch Logs로 보낼 정보 수준을 결정할 수 있습니다. 예를 들어, 애플리케이션 문제를 해결하기 위해 loglevel중앙 값을 변경할 수 있습니다. 두 함수에 대한 후속 함수 호출은 업데이트 된 값을 사용합니다.

두 Lambda 함수는 사용할 AWS AppConfig 구성 프로필 및 값을 지정하는 환경 변수로 구성됩니다.

이 함수는 호출이 콜드 스타트인지 여부도 반환합니다. 테스트 페이로드로 함수를 실행하면 반환 loglevel값이 normal됩니다. 첫 번째 호출은 콜드 스타트입니다.

{
  "event": {
    "hello": "world"
  },
  "ColdStart": true,
  "LogLevel": "normal"
}
JSON

후속 호출 값은 ColdStart 값이 false로 반환됩니다.

{
  "event": {
    "hello": "world"
  },
  "ColdStart": false,
  "LogLevel": "normal"
}
JSON

새 AWS Config 호스팅 구성 프로필 버전에 대한 loglevel 설정 값을 verbose로 변경하고, 배포하여 값을 업데이트합니다. 두 함수의 확장 기능은 이제 새로운 값을 검색합니다.

두 함수에 대해 다른 테스트 호출을 실행하면 콜드 스타트없이 업데이트 된 값이 반환됩니다.

{
  "event": {
    "hello": "world"
  },
  "ColdStart": false,
  "LogLevel": "verbose"
}
JSON

AWS AppConfig는 Lambda와 원활하게 작동하여 함수 구성을 다시 배포하지 않고도 여러 Lambda 함수에 대한 동적 외부 구성 설정을 업데이트했습니다. 필요한 유일한 함수 구성은 AWS AppConfig 확장 기능 포함 된 Lambda Layer를 추가하는 것입니다.

가격, 보안 및 성능 관련 사항

Lambda Extensions는 람다 함수와 동일한 청구 모델을 공유합니다. 확장 기능과 함께 Lambda 함수를 사용하는 경우 제공된 요청과 코드 및 모든 확장을 실행하는 데 사용 된 결합 된 컴퓨팅 시간에 대해 100ms 단위로 비용을 지불합니다.

Lambda Extensions은 함수 코드와 동일한 실행 환경에서 실행됩니다. 따라서 CPU, 메모리, 디스크 스토리지 및 환경 변수와 같은 기능과 리소스를 공유합니다. 또한 동일한 사용하여 권한을 공유 과 AWS Identity and Access Management 기능 (IAM) 역할을 합니다. 한 번에 최대 5 개의 레이어를 사용하여 기능 당 최대 10 개의 확장을 구성 할 수 있습니다. 단일 레이어에 여러 확장을 포함 할 수 있습니다. 확장의 크기는 배포 패키지 제한에 포함 됩니다. 압축이 풀린 배포 패키지 크기 제한 인 250MB를 초과 할 수 없습니다.

외부 확장은 런타임이 시작되기 전에 초기화되므로 함수가 호출되기 전에 지연을 늘릴 수 있습니다.  모든 확장 기능 작업이 완료된 후, 함수 호출 응답이 반환됩니다. 따라서, 완료하는 데 시간이 걸리는 확장 기능은 함수 응답이 반환되기 전에 지연을 증가시킬 수 있습니다. 예를 들어 확장 기능이 계산 집약적인 작업을 수행하는 경우 함수 실행 기간이 늘어날 수 있습니다.

함수 호출 후 확장이 실행되는 추가 시간을 측정하려면 새로운 PostRuntimeExtensionsDuration라는 CloudWatch 지표를 사용하여 함수 실행 후 확장에 걸리는 추가 시간을 측정합니다. 특정 확장의 영향을 이해하기 위해 사용하고 확장을 사용하거나 사용 DurationMaxMemoryUsedCloudWatch 지표를 하지 않고 다양한 버전의 함수를 실행할 수 있습니다. 함수에 더 많은 메모리를 추가하면 CPU 및 네트워크 처리량이 비례하여 증가합니다.

함수 및 모든 확장은 전체 호출 단계에 적용되는 함수의 구성된 시간 제한 설정 내에서 완료되어야 합니다.

미리보기 사용하기

Lambda Extensions을 사용하면 Lambda 서비스를 확장하여 모니터링, 관찰 가능성, 보안 및 거버넌스를 위해 선호하는 도구와 더 쉽게 통합 할 수 있습니다.  AWS Lambda Ready 파트너에서 제공하는 다양한 확장 기능을 설치할 수 있습니다. 여기에는 애플리케이션 성능 모니터링, 비밀 관리, 구성 관리 및 취약성 감지와 같은 사용 사례가 포함됩니다. 확장 기능을 사용하면 서버리스 애플리케이션에서 기존 도구를 더 쉽게 사용할 수 있습니다.

좀 더 자세한 사항은 Extensions API 기술 문서Building Extensions for AWS Lambda – In preview를 참조하세요. 더 많은 서버리스 학습 리소스를 보려면 방문 Serverlessland.com을 방문해 보세요.

– Julian Wood, Senior Serverless Developer Advocates

이 글은 AWS Compute Blog의 Introducing AWS Lambda Extensions – In preview의 한국어 번역 편집본입니다.

Source: AWS Lambda Extensions 미리보기 기능 출시 (서울 리전 포함)

Exit mobile version