AWS Lambda 실행 역할 - AWS Lambda

AWS Lambda 실행 역할

Lambda 함수의 실행 역할은 AWS 서비스 및 리소스에 액세스할 수 있는 권한을 함수에 부여하는 AWS Identity and Access Management(IAM) 역할입니다. 함수를 만들 때 이 역할을 제공하면 함수를 호출할 때 Lambda가 이 역할을 수임합니다. 개발 작업을 위해 Amazon CloudWatch에 로그를 전송하고, AWS X-Ray에 추적 데이터를 업로드하는 권한을 가진 실행 역할을 만들 수 있습니다.

함수의 실행 역할을 보려면

  1. Lambda 콘솔에서 함수 페이지(Functions page)를 엽니다.

  2. 함수를 선택합니다.

  3. 구성(Configuration)을 선택한 다음 권한(Permissions)을 선택합니다.

  4. 리소스 요약(Resource summary)에서 함수가 액세스할 수 있는 서비스와 리소스를 확인합니다. 다음 예제에서는 Lambda 콘솔에서 실행 역할을 만들 때 Lambda가 실행 역할에 추가하는 CloudWatch Logs 권한을 보여 줍니다.

    
          Lambda 콘솔에서의 실행 역할.
  5. 드롭다운 목록에서 서비스를 선택하여 해당 서비스와 관련된 권한을 확인합니다.

언제든지 함수의 실행 역할에서 원한을 추가하거나 제거할 수 있으며, 다른 역할에 사용하도록 함수를 구성할 수 있습니다. 함수가 AWS SDK를 사용하여 호출하는 서비스 및 Lambda가 선택적 기능을 활성화하기 위해 사용하는 서비스에 대해 권한을 추가합니다.

함수에 권한을 추가할 때 코드나 구성도 함께 업데이트하십시오. 그러면 자격 증명이 오래된 함수의 인스턴스 실행이 중지 및 대체됩니다.

IAM 콘솔에서 실행 역할 생성

기본적으로 Lambda는 Lambda 콘솔에서 함수를 작성할 때 최소한의 권한으로 실행 역할을 생성합니다. IAM 콘솔에서 실행 역할을 생성할 수도 있습니다.

IAM 콘솔에서 실행 역할을 생성하려면

  1. IAM 콘솔에서 역할 페이지(Roles page)를 엽니다.

  2. 역할 생성을 선택합니다.

  3. 일반 사용 사례(Common use cases)에서 Lambda를 선택합니다.

  4. Next: Permissions(다음: 권한)를 선택합니다.

  5. 권한 정책 연결(Attach permissions policies)에서 AWS 관리형 정책 AWSLambdaBasicExecutionRoleAWSXRayDaemonWriteAccess를 선택합니다.

  6. 다음: 태그를 선택합니다.

  7. 다음: 검토를 선택합니다.

  8. Role name(역할 이름)lambda-role을 입력합니다.

  9. 역할 생성을 선택합니다.

자세한 지침은 IAM 사용 설명서AWS 서비스에 대한 역할 생성(콘솔)을 참조하세요.

Lambda 실행 역할에 최소 액세스 권한 부여

개발 단계에서 Lambda 함수에 대한 IAM 역할을 처음 생성할 때 필요 이상의 권한을 부여하는 경우가 있습니다. 프로덕션 환경에 함수를 게시하기 전에 필요한 권한만 포함하도록 정책을 조정하는 것이 가장 좋습니다. 자세한 내용은 최소 권한 부여를 참조하세요.

IAM Access Analyzer을 사용하여 IAM 실행 역할 정책에 필요한 권한을 식별합니다. IAM Access Analyzer은 지정한 날짜 범위에 대한 AWS CloudTrail 로그를 검토하고 해당 시간 동안 함수가 사용한 권한만 포함된 정책 템플릿을 생성합니다. 템플릿을 사용하여 세분화된 권한을 가진 관리형 정책을 생성한 다음 IAM 역할에 연결할 수 있습니다. 이렇게 하면 특정 사용 사례에 따라 역할이 AWS 리소스와 상호 작용하는 데 필요한 권한만 부여할 수 있습니다.

자세한 내용은 IAM 사용 설명서에서 액세스 활동을 기반으로 정책 생성을 참조하세요.

IAM API를 사용한 역할 관리

AWS Command Line Interface(AWS CLI)를 사용하여 실행 역할을 생성하려면 create-role 명령을 사용합니다.

aws iam create-role --role-name lambda-ex --assume-role-policy-document file://trust-policy.json

다음 결과가 표시됩니다:

{ "Role": { "Path": "/", "RoleName": "lambda-ex", "RoleId": "AROAQFOXMPL6TZ6ITKWND", "Arn": "arn:aws:iam::123456789012:role/lambda-ex", "CreateDate": "2020-01-17T23:19:12Z", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } } }

trust-policy.json 파일은 현재 디렉터리에 있는 JSON 파일이며 역할의 신뢰 정책을 정의합니다. 이 신뢰 정책을 통해 Lambda가 서비스 보안 주체에 lambda.amazonaws.com 권한을 제공하여 AWS Security Token Service AssumeRole 작업을 호출하기 위해 역할의 권한을 사용할 수 있습니다.

예 trust-policy.json

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

인라인으로 신뢰 정책을 지정할 수도 있습니다. JSON 문자열의 인용 부호 요구 사항은 셸에 따라 다릅니다.

aws iam create-role --role-name lambda-ex --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}'

역할에 권한을 추가하려면 attach-policy-to-role 명령을 사용하십시오. 먼저 AWSLambdaBasicExecutionRole 관리형 정책을 추가합니다.

aws iam attach-role-policy --role-name lambda-ex --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

Lambda 기능에 대한 AWS 관리형 정책

다음 AWS 관리형 정책은 Lambda 기능을 사용하는 데 필요한 권한을 제공합니다.

  • AWSLambdaBasicExecutionRole – CloudWatch에 로그를 업로드할 수 있는 권한.

  • AWSLambdaDynamoDBExecutionRole – Amazon DynamoDB 스트림에서 레코드를 읽을 수 있는 권한.

  • AWSLambdaKinesisExecutionRole – Amazon Kinesis 데이트 스트림 또는 소비자의 이벤트를 읽을 수 있는 권한.

  • AWSLambdaMQExecutionRole – Amazon MQ 브로커의 레코드를 읽을 수 있는 권한.

  • AWSLambdaMSKExecutionRole – Amazon Managed Streaming for Apache Kafka(Amazon MSK) 클러스터의 레코드를 읽을 수 있는 권한.

  • AWSLambdaSQSQueueExecutionRole – Amazon Simple Queue Service(Amazon SQS) 대기열에서 메시지를 읽을 수 있는 권한.

  • AWSLambdaVPCAccessExecutionRole – 함수를 Virtual Private Cloud(VPC)에 연결하기 위해 탄력적 네트워크 인터페이스를 관리하는 권한.

  • AWSXRayDaemonWriteAccess – 추적 데이터를 X-Ray에 업로드하는 권한.

  • CloudWatchLambdaInsightsExecutionRolePolicy – CloudWatch Lambda Insights에 런타임 지표를 작성할 수 있는 권한.

일부 기능의 경우 Lambda 콘솔은 고객 관리형 정책의 실행 역할에 누락된 권한을 추가하려고 시도합니다. 이러한 정책은 많아질 수 있습니다. 추가 정책을 만들지 않도록 기능을 활성화하기 전에 실행 역할에 관련된 AWS 관리형 정책을 추가합니다.

이벤트 소스 매핑을 사용하여 함수를 호출할 경우 Lambda는 실행 역할을 사용해 이벤트 데이터를 읽습니다. 예를 들어 Kinesis에 대한 이벤트 소스 매핑은 데이터 스트림의 이벤트를 읽고 이를 함수에 배치(batch)로 전송합니다. 다음과 같은 서비스에 이벤트 소스 매핑을 사용할 수 있습니다.

AWS 관리형 정책 외에도 Lambda 콘솔은 추가 사용 사례와 관련된 권한을 가진 사용자 지정 정책을 생성하는 템플릿을 제공합니다. Lambda 콘솔에서 함수를 생성할 때 하나 이상의 템플릿의 권한을 사용하여 새로운 실행 역할을 만들 수 있습니다. 블루프린트에서 함수를 생성하거나, 다른 서비스에 액세스해야 하는 옵션을 구성할 때 이러한 템플릿도 자동으로 적용됩니다. 예제 템플릿은 이 설명서의 GitHub 리포지토리에서 구할 수 있습니다.