Lambda 관리형 인스턴스 시작하기 - AWS Lambda

Lambda 관리형 인스턴스 시작하기

Lambda 관리형 인스턴스 함수 생성(콘솔)

Lambda 콘솔을 사용하여 용량 공급자가 관리하는 Amazon EC2 인스턴스에서 실행되는 관리형 인스턴스 함수를 생성할 수 있습니다.

중요: 관리형 인스턴스 함수 생성 전에 먼저 용량 공급자를 생성해야 합니다. 이러한 함수에는 함수를 실행할 Amazon EC2 인프라를 정의하는 용량 공급자가 필요합니다.

Lambda 관리형 인스턴스 함수 생성(콘솔)

  1. Lambda 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 용량 공급자를 선택합니다.

  3. 용량 공급자 생성을 선택합니다.

  4. 용량 공급자 설정 섹션에서 용량 공급자의 이름을 입력합니다.

  5. 용량 공급자의 VPC 및 권한을 선택합니다. 기존 역할을 사용하거나 새 역할을 생성할 수 있습니다. 필요한 운영자 역할 생성에 대한 자세한 내용은 Lambda 관리형 인스턴스의 Lambda 운영자 역할을 참조하세요.

  6. Advanced settings(고급 설정)를 확장합니다.

  7. 프로세서 아키텍처와 인스턴스 유형을 선택하여 인스턴스 요구 사항을 정의합니다.

  8. 오도 스케일링에서 용량 공급자의 최대 EC2 vCPU 수를 지정합니다. 수동 인스턴스 규모 조정 모드를 선택하고 자체 조정 값을 입력하면 정밀하게 제어할 수 있습니다.

  9. 용량 공급자 생성을 선택하여 새 용량 공급자를 생성합니다.

  10. 다음으로 함수 생성을 선택합니다.

  11. 새로 작성을 선택합니다.

  12. 기본 정보 창에 함수 이름을 입력합니다.

  13. 런타임에서 지원되는 런타임을 선택합니다.

  14. 함수의 아키텍처를 선택합니다(용량 공급자에 대해 선택한 아키텍처와 동일). 기본값은 x86_64입니다.

  15. 권한에 선택한 실행 역할에 대한 권한이 있어야 합니다. 그렇지 않으면 새 역할을 생성할 수 있습니다.

  16. 추가 구성에서 컴퓨팅 유형Lambda 관리형 인스턴스로 선택합니다.

  17. 이전 단계에서 생성한 용량 공급자의 용량 공급자 ARN이 미리 선택되어야 합니다.

  18. vCPU당 메모리 크기vCPU당 실행 환경 메모리(GiB) 비율을 선택합니다.

  19. 함수 생성을 선택합니다.

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 실행 역할 생성

  1. Lambda의 역할 수임을 허용하는 신뢰 정책 문서를 생성합니다.

    cat > lambda-trust-policy.json << 'EOF' { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF
  2. 실행 역할을 생성합니다.

    aws iam create-role \ --role-name MyLambdaExecutionRole \ --assume-role-policy-document file://lambda-trust-policy.json
  3. 기본 실행 정책을 연결합니다.

    aws iam attach-role-policy \ --role-name MyLambdaExecutionRole \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

용량 공급자 운영자 역할 생성

  1. Lambda의 운영자 역할 수임을 허용하는 신뢰 정책 문서를 생성합니다.

    cat > operator-trust-policy.json << 'EOF' { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF
  2. 운영자 역할 생성을 생성합니다.

    aws iam create-role \ --role-name MyCapacityProviderOperatorRole \ --assume-role-policy-document file://operator-trust-policy.json
  3. 필요한 EC2 권한 정책 연결을 연결합니다.

    aws iam attach-role-policy \ --role-name MyCapacityProviderOperatorRole \ --policy-arn arn:aws:iam::aws:policy/AWSLambdaManagedEC2ResourceOperator

2단계: VPC 리소스 설정

Lambda 관리형 인스턴스는 VPC에서 실행되며 서브넷 및 보안 그룹이 필요합니다.

VPC 리소스 생성

  1. VPC를 생성합니다.

    VPC_ID=$(aws ec2 create-vpc \ --cidr-block 10.0.0.0/16 \ --query 'Vpc.VpcId' \ --output text)
  2. 서브넷을 생성합니다.

    SUBNET_ID=$(aws ec2 create-subnet \ --vpc-id $VPC_ID \ --cidr-block 10.0.1.0/24 \ --query 'Subnet.SubnetId' \ --output text)
  3. 보안 그룹을 생성합니다.

    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 함수 생성

인라인 코드를 사용하여 함수 생성

  1. 먼저 간단한 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
  2. 인라인 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.pylambda_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 인스턴스에서 실행되고 응답을 반환합니다.

정리

요금이 발생하지 않도록 생성한 리소스를 삭제합니다.

  1. 함수를 삭제합니다.

    aws lambda delete-function --function-name my-managed-instance-function
  2. 용량 공급자를 삭제합니다.

    aws lambda delete-capacity-provider --capacity-provider-name my-capacity-provider
  3. 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
  4. 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