Lambda Managed Instances용 Lambda 운영자 역할(operator role)

Lambda Managed Instances용 Lambda 운영자 역할(operator role)

Lambda Managed Instances를 사용하면 Lambda가 계정에서 컴퓨팅 용량을 관리할 권한이 필요해요. 운영자 역할은 Lambda가 용량 공급자(capacity provider)의 EC2 인스턴스를 관리할 수 있게 하는 IAM 정책으로 이러한 권한을 제공해요.

Lambda는 함수가 실행될 때 실행 역할을 수임하는 것과 유사하게, 이러한 관리 작업을 수행할 때 운영자 역할을 수임해요.

출처: AWS Lambda 개발자 안내서

본문

운영자 역할 만들기

IAM 콘솔이나 AWS CLI로 운영자 역할을 만들 수 있어요. 역할에는 다음이 포함되어야 해요:

  • 권한 정책(Permissions policy) – 용량 공급자와 관련 리소스를 관리할 권한을 부여해요
  • 신뢰 정책(Trust policy) – Lambda 서비스(lambda.amazonaws.com)가 역할을 수임할 수 있게 해요

권한 정책

운영자 역할은 용량 공급자와 기본 컴퓨팅 리소스를 관리할 권한이 필요해요. 최소한 역할에는 AWSLambdaManagedEC2ResourceOperator 관리형 정책의 권한이 필요하며, 현재는:

{
  "Version": "2012-10-17",		 		 	
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:RunInstances",
        "ec2:CreateTags",
        "ec2:AttachNetworkInterface"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:instance/*",
        "arn:aws:ec2:*:*:network-interface/*",
        "arn:aws:ec2:*:*:volume/*"
      ],
      "Condition": {
        "StringEquals": {
          "ec2:ManagedResourceOperator": "scaler.lambda.amazonaws.com"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeCapacityReservations",
        "ec2:DescribeInstances",
        "ec2:DescribeInstanceStatus",
        "ec2:DescribeInstanceTypeOfferings",
        "ec2:DescribeInstanceTypes",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeSubnets",
        "ec2:DescribeVpcEncryptionControls"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:RunInstances",
        "ec2:CreateNetworkInterface"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:subnet/*",
        "arn:aws:ec2:*:*:security-group/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:RunInstances"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:image/*"
      ],
      "Condition": {
        "StringEquals": {
          "ec2:Owner": "amazon"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup"
      ],
      "Resource": "arn:aws:logs:*:*:log-group:*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": "arn:aws:logs:*:*:log-group:*:log-stream:*"
    }
  ]
}

신뢰 정책

신뢰 정책은 Lambda가 운영자 역할을 수임할 수 있게 해요:

{
  "Version": "2012-10-17",		 		 	
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Lambda Managed Instances용 서비스 연결 역할(Service-Linked Role)

Lambda Managed Instances의 수명 주기를 책임 있게 관리하려면 Lambda가 계정에서 관리 인스턴스를 종료할 수 있는 지속적 접근이 필요해요. Lambda는 AWS Identity and Access Management(IAM) 서비스 연결 역할(SLR)을 사용해 이러한 작업을 수행해요.

자동 생성: 서비스 연결 역할은 처음 용량 공급자(capacity provider)를 만들 때 자동으로 생성돼요. 첫 번째 용량 공급자를 만드는 사용자는 lambda.amazonaws.com 보안 주체에 대한 iam:CreateServiceLinkedRole 권한이 있어야 해요.

권한: 서비스 연결 역할은 관리 인스턴스에 대해 다음 권한을 Lambda에 부여해요:

  • ec2:TerminateInstances – 수명 주기 끝에 인스턴스를 종료
  • ec2:DescribeInstances – 관리 인스턴스 열거

삭제: 계정의 모든 Lambda Managed Instances 용량 공급자를 삭제한 후에만 이 서비스 연결 역할을 삭제할 수 있어요.

서비스 연결 역할에 대한 자세한 내용은 Lambda용 서비스 연결 역할 사용을 참고하세요.

더 알아보기 (Learn more)

  • 운영자 역할의 권한 정책과 신뢰 정책을 구성하고, 관리 인스턴스 수명 주기 관리를 위한 서비스 연결 역할 자동 생성을 익혀 보세요.