용량 공급자 - AWS Lambda

용량 공급자

용량 공급자는 Lambda 관리형 인스턴스 실행의 기반입니다. 함수의 보안 경계 역할을 하고 Lambda가 사용자를 대신하여 프로비저닝 및 관리할 컴퓨팅 리소스를 정의합니다.

용량 공급자를 생성할 때 다음을 지정합니다.

  • VPC 구성 - 인스턴스가 실행될 서브넷 및 보안 그룹

  • 권한 - Lambda가 EC2 리소스를 관리하기 위한 IAM 역할

  • 인스턴스 요구 사항(선택 사항) - 아키텍처 및 인스턴스 유형 기본 설정

  • 조정 구성(선택 사항) - Lambda가 인스턴스 규모를 조정하는 방법

보안 경계로서의 용량 공급자 이해

용량 공급자는 VPC 내 Lambda 함수의 보안 경계 역할을 하여 Firecracker 기반 격리를 대체합니다. 함수는 이러한 인스턴스 내의 컨테이너에서 실행되지만 Firecracker microVM과 달리 컨테이너는 함수 간 보안 격리를 제공하지 않습니다.

주요 보안 개념:

  • 용량 공급자: Lambda 함수의 신뢰 수준을 정의하는 보안 경계

  • 컨테이너 격리: 컨테이너는 보안 공급자가 아니며, 신뢰할 수 없는 워크로드 간의 보안에 컨테이너를 의존해서는 안 됨

  • 신뢰 분리: 서로 다른 용량 공급자를 사용하여 상호 신뢰할 수 없는 워크로드 분리

용량 공급자 생성

AWS CLI, AWS Management Console 또는 AWS SDK를 사용하여 용량 공급자를 생성할 수 있습니다.

AWS CLI 사용:

aws lambda create-capacity-provider \ --capacity-provider-name my-capacity-provider \ --vpc-config SubnetIds=subnet-12345,subnet-67890,subnet-11111,SecurityGroupIds=sg-12345 \ --permissions-config CapacityProviderOperatorRoleArn=arn:aws:iam::123456789012:role/MyOperatorRole \ --instance-requirements Architectures=x86_64 \ --capacity-provider-scaling-config ScalingMode=Auto

필수 파라미터

CapacityProviderName

  • 용량 공급자의 고유한 이름

  • AWS 계정 내에서 고유해야 함

VpcConfig

  • SubnetIds(필수): 1개 이상의 서브넷(최대 16개). 복원력을 위해 여러 가용 영역에 걸친 서브넷 사용.

  • SecurityGroupIds(선택 사항): 인스턴스의 보안 그룹. 지정하지 않으면 VPC 기본 보안 그룹으로 기본 설정.

PermissionsConfig

  • CapacityProviderOperatorRoleArn(필수): Lambda가 용량 공급자의 EC2 리소스를 관리할 수 있도록 허용하는 IAM 역할

선택적 파라미터

InstanceRequirements

용량 공급자의 아키텍처 및 인스턴스 유형을 지정합니다.

  • Architectures: x86_64 또는 arm64를 선택합니다. 기본값은 x86_64입니다.

  • AllowedInstanceTypes: 허용된 인스턴스 유형을 지정합니다. 예시: m5.8xlarge

  • ExcludedInstanceTypes: 와일드카드를 사용하여 제외된 인스턴스 유형을 지정합니다. AllowedInstanceTypes 또는 ExcludedInstanceTypes 중 하나만 지정 가능합니다.

기본적으로 Lambda는 워크로드에 가장 적합한 인스턴스 유형을 선택합니다. 가능한 인스턴스 유형 수를 제한하면 가용성이 낮아질 수 있으므로 Lambda 관리형 인스턴스가 인스턴스 유형을 자동으로 선택하도록 하는 것이 좋습니다.

CapacityProviderScalingConfig

Lambda의 인스턴스 규모 조정 방법을 구성합니다.

  • ScalingMode: Auto로 설정하면 자동 조정이, Manual로 설정하면 수동 제어가 적용됩니다. 기본값은 Auto입니다.

  • MaxVCpuCount: 용량 공급자의 최대 vCPU 수입니다. 기본값은 400입니다.

  • ScalingPolicies: CPU 및 메모리 사용률에 대한 목표 추적 조정 정책을 정의합니다.

KmsKeyArn

EBS 암호화를 위한 AWS KMS 키를 지정합니다. 지정하지 않으면 AWS 관리형 키로 기본 설정됩니다.

Tags

태그를 추가하여 용량 공급자를 구성하고 관리합니다.

용량 공급자 관리

용량 공급자 업데이트

UpdateCapacityProvider API를 사용하여 용량 공급자의 특정 속성을 업데이트할 수 있습니다.

aws lambda update-capacity-provider \ --capacity-provider-name my-capacity-provider \ --capacity-provider-scaling-config ScalingMode=Auto

용량 공급자 삭제

DeleteCapacityProvider API를 사용하여 더 이상 필요하지 않은 용량 공급자를 삭제할 수 있습니다.

aws lambda delete-capacity-provider \ --capacity-provider-name my-capacity-provider

참고: 함수 버전이 연결된 용량 공급자는 삭제할 수 없습니다.

용량 공급자 세부 정보 보기

GetCapacityProvider API를 사용하여 용량 공급자 관련 정보를 검색합니다.

aws lambda get-capacity-provider \ --capacity-provider-name my-capacity-provider

용량 공급자 상태

용량 공급자는 다음 상태 중 하나일 수 있습니다.

  • 보류 중: 용량 공급자 생성 중

  • 활성: 용량 공급자 사용 준비 완료

  • 실패: 용량 공급자 생성 실패

  • 삭제 중: 용량 공급자 삭제 중

할당량

  • 계정당 최대 용량 공급자: 1,000

  • 용량 공급자당 최대 함수 버전: 100(증가할 수 없음)

모범 사례

  1. 신뢰 수준에 따른 구분: 보안 요구 사항이 서로 다른 워크로드에 대해 서로 다른 용량 공급자 생성

  2. 설명이 포함된 이름 사용: 용량 공급자의 이름을 지정하여 용도와 신뢰 수준을 명확하게 표시(예: production-trusted, dev-sandbox)

  3. 여러 가용 영역 사용: 고가용성을 위해 여러 AZ에 걸쳐 서브넷 지정

  4. Lambda가 인스턴스 유형을 선택하도록 허용: 별도의 하드웨어 요구 사항이 없는 한 Lambda가 최적의 가용성을 위해 최상의 인스턴스 유형을 선택하도록 허용

  5. 사용량 모니터링: AWS CloudTrail을 사용하여 용량 공급자 할당 및 액세스 패턴 모니터링

다음 단계