

# 용량 공급자
<a name="lambda-managed-instances-capacity-providers"></a>

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

용량 공급자를 생성할 때 다음을 지정합니다.
+ **VPC 구성** - 인스턴스가 실행될 서브넷 및 보안 그룹
+ **권한** - Lambda가 EC2 리소스를 관리하기 위한 IAM 역할
+ **인스턴스 요구 사항**(선택 사항) - 아키텍처 및 [인스턴스 유형](https://aws.amazon.com/lambda/pricing/#:~:text=EPU%20pricing%20applies.-,Management%20Fees,-Pricing%20Example%3A%20High) 기본 설정
+ **조정 구성**(선택 사항) - Lambda가 인스턴스 규모를 조정하는 방법

## 보안 경계로서의 용량 공급자 이해
<a name="lambda-managed-instances-capacity-provider-security-boundary"></a>

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

**주요 보안 개념:**
+ **용량 공급자**: Lambda 함수의 신뢰 수준을 정의하는 보안 경계
+ **컨테이너 격리**: 컨테이너는 보안 공급자가 아니며, 신뢰할 수 없는 워크로드 간의 보안에 컨테이너를 의존해서는 안 됨
+ **신뢰 분리**: 서로 다른 용량 공급자를 사용하여 상호 신뢰할 수 없는 워크로드 분리

## 용량 공급자 생성
<a name="lambda-managed-instances-creating-capacity-provider"></a>

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
```

### 필수 파라미터
<a name="lambda-managed-instances-capacity-provider-required-params"></a>

**CapacityProviderName**
+ 용량 공급자의 고유한 이름
+ AWS 계정 내에서 고유해야 함

**VpcConfig**
+ **SubnetIds**(필수): 1개 이상의 서브넷(최대 16개). 복원력을 위해 여러 가용 영역에 걸친 서브넷 사용.
+ **SecurityGroupIds**(선택 사항): 인스턴스의 보안 그룹. 지정하지 않으면 VPC 기본 보안 그룹으로 기본 설정.

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

### 선택적 파라미터
<a name="lambda-managed-instances-capacity-provider-optional-params"></a>

**InstanceRequirements**

용량 공급자의 아키텍처 및 [인스턴스 유형](https://aws.amazon.com/lambda/pricing/#:~:text=EPU%20pricing%20applies.-,Management%20Fees,-Pricing%20Example%3A%20High)을 지정합니다.
+ **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**

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

## 용량 공급자 관리
<a name="lambda-managed-instances-managing-capacity-providers"></a>

### 용량 공급자 업데이트
<a name="lambda-managed-instances-updating-capacity-provider"></a>

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

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

### 용량 공급자 삭제
<a name="lambda-managed-instances-deleting-capacity-provider"></a>

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

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

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

### 용량 공급자 세부 정보 보기
<a name="lambda-managed-instances-viewing-capacity-provider"></a>

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

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

## 용량 공급자 상태
<a name="lambda-managed-instances-capacity-provider-states"></a>

용량 공급자는 다음 상태 중 하나일 수 있습니다.
+ **보류 중**: 용량 공급자 생성 중
+ **활성**: 용량 공급자 사용 준비 완료
+ **실패**: 용량 공급자 생성 실패
+ **삭제 중**: 용량 공급자 삭제 중

## 할당량
<a name="lambda-managed-instances-capacity-provider-quotas"></a>
+ **계정당 최대 용량 공급자**: 1,000
+ **용량 공급자당 최대 함수 버전**: 100(증가할 수 없음)

## 모범 사례
<a name="lambda-managed-instances-capacity-provider-best-practices"></a>

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

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

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

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

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

## 다음 단계
<a name="lambda-managed-instances-capacity-provider-next-steps"></a>
+ [Lambda 관리형 인스턴스 규모 조정](lambda-managed-instances-scaling.md) 알아보기
+ [Lambda 관리형 인스턴스의 보안 및 권한](lambda-managed-instances-security.md) 이해
+ [용량 공급자에 대한 VPC 연결](lambda-managed-instances-networking.md) 구성
+ [Java](lambda-managed-instances-java-runtime.md), [Node.js](lambda-managed-instances-nodejs-runtime.md) 및 [Python](lambda-managed-instances-python-runtime.md)에 대한 런타임별 가이드 검토