Amazon Web Services 한국 블로그

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로 가져올 수 있습니다.

Extensions API를 사용하는 AWS Lambda 실행 환경

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

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

  • 내부 Extensions은 코드와 함께 진행 중인 런타임 프로세스의 일부로 실행됩니다. 언어 별 환경 변수 및 래퍼 스크립트를 사용하여 런타임 프로세스의 시작을 수정할 수 있습니다. 내부 확장 기능은 코드 자동 계측과 같은 사용 사례를 지원합니다.
  • 외부 Extensions을 사용하면 런타임에서 별도의 프로세스를 실행할 수 있지만 여전히 Lambda 함수와 동일한 실행 환경 내에서 실행할 수 있습니다. 외부 확장 기능은 런타임 프로세스 전에 시작될 수 있으며 런타임이 종료 된 후에도 계속 될 수 있습니다. 외부 확장을 사용하면 호출 전에 비밀을 가져 오거나 함수 호출 외부의 사용자 지정 대상으로 원격 분석을 보내는 등의 사용 사례를 사용할 수 있습니다. 이러한 확장 기능은 Lambda 함수에 대한 동반 프로세스로 실행됩니다.

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

사용 가능한 Lambda Extensions 목록

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

  • AppDynamics Extensions 는 AWS Lambda에 대한 종단 간 트랜잭션 추적을 제공합니다. AppDynamics 확장을 사용하면 개발자가 더 이상 AppDynamics 추적 프로그램을 함수 코드의 종속성으로 포함 할 필요가 없으므로 하이브리드 아키텍처에서 트랜잭션 추적이 더욱 간단 해집니다.
  • Datadog Extensions 은 서버를 사용하지 않는 응용 프로그램에 포괄적 인 실시간 가시성을 제공합니다. Datadog의 기존 AWS 통합과 결합하면 어떤 규모에서든 문제를 모니터링, 감지 및 해결하는 데 도움이되는 지표, 추적 및 로그를 얻을 수 있습니다. Datadog 확장을 사용하면 서버리스 워크로드에서 원격 분석을 그 어느 때보 다 쉽게 얻을 수 있습니다.
  • dynaTrace Extensions 은 지능형 관측 및 자동 근본 원인 감지에 대한 dynaTrace는 플랫폼에 AWS 람다 측정 및 추적을 가지고 더욱 쉽게 만든다. 스위치를 켜고 코드 변경없이 포괄적 인 종단 간 관찰 성을 확보하십시오.
  • Epsagon Extensions  Lambda 함수의 모니터링, 문제 해결 및 비용 절감을 지원합니다. Epsagon의 확장은 기능에 미치는 성능 영향을 최소화하면서 Epsagon 서비스로 추적을 보내는 오버 헤드를 줄입니다.
  • HashiCorp Vault Extensions을 사용하면 애플리케이션의 비밀 및 민감한 데이터에 대한 액세스를 보호, 저장 및 엄격하게 제어 할 수 있습니다. Vault 확장을 사용하면 이제 Lambda 함수가 호출되기 전에 동적 암호를 인증하고 안전하게 검색 할 수 있습니다.
  • Lumigo Extensions 는 서버리스 및 마이크로 서비스 애플리케이션을위한 모니터링 및 관찰 플랫폼을 제공합니다. Lumigo 확장을 통해 새로운 Lumigo Lambda 프로파일 러는 CPU, 메모리 및 네트워크 지표를 포함한 기능 리소스의 분석을 볼 수 있습니다. 실행 가능한 통찰력을 받아 Lambda 런타임 기간 및 비용을 줄이고 병목 현상을 해결하며 효율성을 높이십시오.
  • Check Point CloudGuard Extensions는 서버리스 애플리케이션을위한 전체 라이프 사이클 보안을 제공합니다. CloudGuard 확장은 out-of-process 확장으로 Function Self Protection 데이터 집계를 활성화하여 애플리케이션 계층 공격에 대한 감지 및 경고를 제공합니다.
  • New Relic Extensions은 전체 소프트웨어 스택에 대한 통합 된 관찰 경험을 제공합니다. New Relic 확장은 더 간단한 동반 프로세스를 사용하여 기능 원격 측정 데이터를보고합니다. 또한 애플리케이션에 New Relic을 추가하는 데 필요한 AWS 권한이 더 적습니다.
  • Thundra Extensions 는 서버리스, 컨테이너 및 가상 머신 (VM) 워크로드를위한 애플리케이션 디버깅, 관찰 가능성 및 보안 플랫폼을 제공합니다. Thundra 확장은 Thundra 에이전트에 비동기 원격 분석보고 기능을 추가하여 네트워크 대기 시간을 제거합니다.
  • Splunk Extensions 는 대규모 실시간 풀 스택 가시성을위한 엔터프라이즈 급 클라우드 모니터링 솔루션을 제공합니다. Splunk 확장은 최소한의 오버 헤드로 고해상도 관찰 데이터를 수집 할 수있는 단순화 된 런타임 독립적 인 인터페이스를 제공합니다. Splunk Observability 솔루션으로 서버리스 애플리케이션의 성능과 비용을 모니터링, 관리 및 최적화하십시오.
  • AWS AppConfig Extensions 는 런타임에 애플리케이션 구성을 관리, 저장 및 호스트에 안전하게 배포하는 데 도움이됩니다. AWS AppConfig 확장은 Lambda와 AWS AppConfig를 원활하게 통합합니다. Lambda 함수는 외부 구성 설정에 빠르고 쉽게 액세스 할 수 있습니다. 이제 개발자는 강력한 유효성 검사 기능을 사용하여 Lambda 함수의 구성을 안전하게 동적으로 변경할 수 있습니다.
  • Amazon CloudWatch Lambda Extensions 을 사용하면 Lambda 함수를 효율적으로 모니터링, 문제 해결 및 최적화 할 수 있습니다. Lambda Insights 확장은 상세한 컴퓨팅 성능 지표, 오류 및 로그의 수집, 시각화 및 조사를 단순화합니다. Lambda 환경을 최적화하기 위해 성능 문제를보다 쉽게 ​​분리하고 상호 연관시킬 수 있습니다.

또한 자체 확장 기능을 구축하고 사용하여 사내 업무 도구를 통합 할 수 있습니다. 예를 들어, 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 배포가 실행되어 초기 구성을 배포합니다.

AWS AppConfig 배포

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

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

Lambda 함수 추가 계층

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

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

AWS AppConfig 프로필을 지정하는 Lambda 환경 변수

이 함수는 호출이 콜드 스타트인지 여부도 반환합니다. 테스트 페이로드로 함수를 실행하면 반환 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의 한국어 번역 편집본입니다.