Lambda 관리형 인스턴스 시작하기
Lambda 관리형 인스턴스 함수 생성(콘솔)
Lambda 콘솔을 사용하여 용량 공급자가 관리하는 Amazon EC2 인스턴스에서 실행되는 관리형 인스턴스 함수를 생성할 수 있습니다.
중요: 관리형 인스턴스 함수 생성 전에 먼저 용량 공급자를 생성해야 합니다. 이러한 함수에는 함수를 실행할 Amazon EC2 인프라를 정의하는 용량 공급자가 필요합니다.
Lambda 관리형 인스턴스 함수 생성(콘솔)
-
Lambda 콘솔을 엽니다.
-
왼쪽 탐색 창에서 용량 공급자를 선택합니다.
-
용량 공급자 생성을 선택합니다.
-
용량 공급자 설정 섹션에서 용량 공급자의 이름을 입력합니다.
-
용량 공급자의 VPC 및 권한을 선택합니다. 기존 역할을 사용하거나 새 역할을 생성할 수 있습니다. 필요한 운영자 역할 생성에 대한 자세한 내용은 Lambda 관리형 인스턴스의 Lambda 운영자 역할을 참조하세요.
-
Advanced settings(고급 설정)를 확장합니다.
-
프로세서 아키텍처와 인스턴스 유형을 선택하여 인스턴스 요구 사항을 정의합니다.
-
오도 스케일링에서 용량 공급자의 최대 EC2 vCPU 수를 지정합니다. 수동 인스턴스 규모 조정 모드를 선택하고 자체 조정 값을 입력하면 정밀하게 제어할 수 있습니다.
-
용량 공급자 생성을 선택하여 새 용량 공급자를 생성합니다.
-
다음으로 함수 생성을 선택합니다.
-
새로 작성을 선택합니다.
-
기본 정보 창에 함수 이름을 입력합니다.
-
런타임에서 지원되는 런타임을 선택합니다.
-
함수의 아키텍처를 선택합니다(용량 공급자에 대해 선택한 아키텍처와 동일). 기본값은 x86_64입니다.
-
권한에 선택한 실행 역할에 대한 권한이 있어야 합니다. 그렇지 않으면 새 역할을 생성할 수 있습니다.
-
추가 구성에서 컴퓨팅 유형을 Lambda 관리형 인스턴스로 선택합니다.
-
이전 단계에서 생성한 용량 공급자의 용량 공급자 ARN이 미리 선택되어야 합니다.
-
vCPU당 메모리 크기 및 vCPU당 실행 환경 메모리(GiB) 비율을 선택합니다.
-
함수 생성을 선택합니다.
Lambda 관리형 인스턴스 함수가 생성되고 지정된 용량 공급자에 용량을 프로비저닝합니다. 함수 생성에는 일반적으로 몇 분 정도 걸립니다. 완료되면 함수 코드를 편집하고 첫 번째 테스트를 실행할 수 있습니다.
Lambda 관리형 인스턴스 함수 생성(AWS CLI)
사전 조건
시작하기 전에 다음 항목이 준비되었는지 확인합니다.
-
AWS CLI - AWS CLI를 설치하고 구성합니다. 자세한 내용은 최신 버전의 AWS CLI 설치 또는 업데이트를 참조하세요.
-
IAM 권한 - IAM 사용자 또는 역할에 Lambda 함수, 용량 공급자를 생성하고 IAM 역할을 전달할 수 있는 권한이 있어야 합니다. 계정에서 용량 공급자를 처음 생성하거나 서비스 연결 역할(SLR)이 삭제된 경우에도
iam:CreateServiceLinkedRole이 필요합니다.
1단계: 필요한 IAM 역할 생성
Lambda 관리형 인스턴스에는 함수의 실행 역할과 용량 공급자의 운영자 역할이라는 2가지 IAM 역할이 필요합니다. 운영자 역할을 통해 Lambda는 사용자를 대신하여 Amazon EC2 인스턴스를 시작, 종료 및 모니터링할 수 있습니다. 함수 실행 역할은 함수에 기타 AWS 서비스 및 리소스에 액세스할 수 있는 권한을 부여합니다.
Lambda 실행 역할 생성
-
Lambda의 역할 수임을 허용하는 신뢰 정책 문서를 생성합니다.
cat > lambda-trust-policy.json << 'EOF' { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF -
실행 역할을 생성합니다.
aws iam create-role \ --role-name MyLambdaExecutionRole \ --assume-role-policy-document file://lambda-trust-policy.json -
기본 실행 정책을 연결합니다.
aws iam attach-role-policy \ --role-name MyLambdaExecutionRole \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
용량 공급자 운영자 역할 생성
-
Lambda의 운영자 역할 수임을 허용하는 신뢰 정책 문서를 생성합니다.
cat > operator-trust-policy.json << 'EOF' { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF -
운영자 역할 생성을 생성합니다.
aws iam create-role \ --role-name MyCapacityProviderOperatorRole \ --assume-role-policy-document file://operator-trust-policy.json -
필요한 EC2 권한 정책 연결을 연결합니다.
aws iam attach-role-policy \ --role-name MyCapacityProviderOperatorRole \ --policy-arn arn:aws:iam::aws:policy/AWSLambdaManagedEC2ResourceOperator
2단계: VPC 리소스 설정
Lambda 관리형 인스턴스는 VPC에서 실행되며 서브넷 및 보안 그룹이 필요합니다.
VPC 리소스 생성
-
VPC를 생성합니다.
VPC_ID=$(aws ec2 create-vpc \ --cidr-block 10.0.0.0/16 \ --query 'Vpc.VpcId' \ --output text) -
서브넷을 생성합니다.
SUBNET_ID=$(aws ec2 create-subnet \ --vpc-id $VPC_ID \ --cidr-block 10.0.1.0/24 \ --query 'Subnet.SubnetId' \ --output text) -
보안 그룹을 생성합니다.
SECURITY_GROUP_ID=$(aws ec2 create-security-group \ --group-name my-capacity-provider-sg \ --description "Security group for Lambda Managed Instances" \ --vpc-id $VPC_ID \ --query 'GroupId' \ --output text)
참고: VPC 외부의 리소스에 액세스하고 텔레메트리 데이터를 CloudWatch Logs 및 X-Ray로 전송하려면 Lambda 관리형 인스턴스 함수에 VPC 구성이 필요합니다. 구성 세부 정보는 Lambda 관리형 인스턴스의 네트워킹을 참조하세요.
3단계: 용량 공급자 생성
용량 공급자는 Lambda 함수를 실행하는 EC2 인스턴스를 관리합니다.
용량 공급자를 만들려면
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) aws lambda create-capacity-provider \ --capacity-provider-name my-capacity-provider \ --vpc-config SubnetIds=[$SUBNET_ID],SecurityGroupIds=[$SECURITY_GROUP_ID] \ --permissions-config CapacityProviderOperatorRoleArn=arn:aws:iam::${ACCOUNT_ID}:role/MyCapacityProviderOperatorRole \ --instance-requirements Architectures=[x86_64] \ --capacity-provider-scaling-config MaxVCpuCount=30
이 명령은 다음 구성을 사용하여 용량 공급자를 생성합니다.
-
VPC 구성 - EC2 인스턴스의 서브넷 및 보안 그룹 지정
-
권한 - Lambda가 EC2 인스턴스 관리에 사용하는 IAM 역할 정의
-
인스턴스 요구 사항 - x86_64 아키텍처 지정
-
조정 구성 - 용량 공급자에 대해 최대 30개의 vCPU 설정
4단계: 인라인 코드를 사용하여 Lambda 함수 생성
인라인 코드를 사용하여 함수 생성
-
먼저 간단한 Python 함수를 생성하고 인라인으로 패키징합니다.
# Create a temporary directory for the function code mkdir -p /tmp/my-lambda-function cd /tmp/my-lambda-function # Create a simple Python handler cat > lambda_function.py << 'EOF' import json def lambda_handler(event, context): return { 'statusCode': 200, 'body': json.dumps({ 'message': 'Hello from Lambda Managed Instances!', 'event': event }) } EOF # Create a ZIP file zip function.zip lambda_function.py -
인라인 ZIP 파일을 사용하여 Lambda 함수를 생성합니다.
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) REGION=$(aws configure get region) aws lambda create-function \ --function-name my-managed-instance-function \ --package-type Zip \ --runtime python3.13 \ --handler lambda_function.lambda_handler \ --zip-file fileb:///tmp/my-lambda-function/function.zip \ --role arn:aws:iam::${ACCOUNT_ID}:role/MyLambdaExecutionRole \ --architectures x86_64 \ --memory-size 2048 \ --ephemeral-storage Size=512 \ --capacity-provider-config LambdaManagedInstancesCapacityProviderConfig={CapacityProviderArn=arn:aws:lambda:${REGION}:${ACCOUNT_ID}:capacity-provider:my-capacity-provider}다음을 사용하여 함수를 생성합니다.
-
런타임 – Python 3.13
-
핸들러 -
lambda_function.py의lambda_handler함수 -
메모리 - 2,048MB
-
임시 스토리지 크기 - 512MB
-
용량 공급자 - 생성한 용량 공급자에 연결
-
5단계: 함수 버전 게시
Lambda 관리형 인스턴스에서 함수를 실행하려면 버전을 게시해야 합니다.
함수 버전 게시
aws lambda publish-version \ --function-name my-managed-instance-function
이 명령은 함수 버전 1을 게시하고 용량 공급자에 배포합니다.
6단계: 함수 간접 호출
게시 후 함수를 간접 호출할 수 있습니다.
함수를 간접 호출하려면
aws lambda invoke \ --function-name my-managed-instance-function:1 \ --payload '{"name": "World"}' \ response.json # View the response cat response.json
함수는 용량 공급자가 관리하는 EC2 인스턴스에서 실행되고 응답을 반환합니다.
정리
요금이 발생하지 않도록 생성한 리소스를 삭제합니다.
-
함수를 삭제합니다.
aws lambda delete-function --function-name my-managed-instance-function -
용량 공급자를 삭제합니다.
aws lambda delete-capacity-provider --capacity-provider-name my-capacity-provider -
VPC 리소스를 삭제합니다.
aws ec2 delete-security-group --group-id $SECURITY_GROUP_ID aws ec2 delete-subnet --subnet-id $SUBNET_ID aws ec2 delete-vpc --vpc-id $VPC_ID -
IAM 역할을 삭제합니다.
aws iam detach-role-policy \ --role-name MyLambdaExecutionRole \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole aws iam detach-role-policy \ --role-name MyCapacityProviderOperatorRole \ --policy-arn arn:aws:iam::aws:policy/AWSLambdaManagedEC2ResourceOperator aws iam delete-role --role-name MyLambdaExecutionRole aws iam delete-role --role-name MyCapacityProviderOperatorRole