Lambda@Edge에 대한 IAM 권한 및 역할 설정 - 아마존 CloudFront

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Lambda@Edge에 대한 IAM 권한 및 역할 설정

Lambda@Edge를 구성하려면 특정 IAM 권한과 IAM 실행 역할을 설정해야 합니다. 또한 Lambda @Edge 는 서비스 연결 역할을 생성하여 Lambda CloudFront 함수를 지역에 복제하고 로그 파일을 사용할 수 있도록 합니다. CloudWatch CloudFront

Lambda @Edge 함수를 배포와 연결하는 데 필요한 IAM 권한 CloudFront

사용자가 사용해야 AWS Lambda 하는 IAM 권한 외에도 Lambda 함수를 배포에 연결하려면 다음과 같은 IAM 권한이 필요합니다. CloudFront

  • lambda:GetFunction

    사용자는 Lambda 함수가 포함된 .zip 파일을 다운로드하기 위한 미리 서명된 URL과 Lambda 함수에 대한 구성 정보를 가져올 수 있습니다.

    리소스의 경우 다음 예와 같이 CloudFront 이벤트 발생 시 실행하려는 함수 버전의 ARN을 지정합니다.

    arn:aws:lambda:us-east-1:123456789012:function:TestFunction:2

  • lambda:EnableReplication*

    함수 코드 및 구성을 가져올 수 있는 Lambda 복제 서비스 권한을 부여하는 리소스 정책에 권한을 추가합니다.

    중요

    권한 끝부분의 별표(*)는 필수입니다(lambda:EnableReplication*).

    리소스의 경우 다음 예와 같이 CloudFront 이벤트 발생 시 실행하려는 함수 버전의 ARN을 지정합니다.

    arn:aws:lambda:us-east-1:123456789012:function:TestFunction:2

  • lambda:DisableReplication*

    리소스 정책에 Lambda 복제 서비스에 함수를 삭제할 수 있는 권한을 부여하는 권한을 추가합니다.

    중요

    권한 끝부분의 별표(*)는 필수입니다(lambda:DisableReplication*).

    리소스의 경우 다음 예와 같이 CloudFront 이벤트 발생 시 실행하려는 함수 버전의 ARN을 지정합니다.

    arn:aws:lambda:us-east-1:123456789012:function:TestFunction:2

  • iam:CreateServiceLinkedRole

    사용자가 Lambda @Edge 에서 Lambda 함수를 복제하는 데 사용하는 서비스 연결 역할을 생성할 수 있습니다. CloudFront Lambda@Edge에서 사용하는 첫 번째 배포에서 이 역할이 생성되고 나면 Lambda@Edge에서 사용하는 다른 배포에 대한 권한을 추가할 필요가 없습니다.

  • cloudfront:UpdateDistribution 또는 cloudfront:CreateDistribution

    cloudfront:UpdateDistribution을 사용하여 배포를 업데이트하거나 cloudfront:CreateDistribution을 사용하여 배포를 생성합니다.

자세한 내용은 다음 설명서를 참조하십시오.

서비스 보안 주체에 대한 함수 실행 역할

서비스 보안 주체 lambda.amazonaws.comedgelambda.amazonaws.com가 수임할 수 있는 IAM 역할을 생성해야 합니다. 이 역할은 서비스 보안 주체가 사용자의 함수를 실행할 때 수임합니다. 자세한 내용은 IAM 사용 설명서역할 생성 및 정책 연결(콘솔)을 참조하세요.

IAM의 신뢰 관계 탭 아래에 이 역할을 추가합니다(권한 탭 아래에는 추가하지 마십시오).

다음은 역할 신뢰 정책의 예입니다.

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

실행 역할에 부여해야 하는 권한에 대한 자세한 내용은 AWS Lambda 개발자 안내서Manage Permissions: Using an IAM Role(Execution Role)을 참조하세요. 다음을 참고합니다.

  • 기본적으로 CloudFront 이벤트가 Lambda 함수를 트리거할 때마다 데이터가 Logs에 기록됩니다. CloudWatch 이러한 로그를 사용하려면 실행 역할에 Logs에 데이터를 쓸 수 있는 권한이 필요합니다. CloudWatch 사전 정의를 사용하여 실행 역할에 권한을 AWSLambdaBasicExecutionRole 부여할 수 있습니다.

    CloudWatch 로그에 대한 자세한 내용은 을 참조하십시오엣지 함수 로그.

  • Lambda 함수 코드가 S3 버킷에서 객체를 읽는 것처럼 다른 AWS 리소스에 액세스하는 경우 실행 역할에는 해당 작업을 수행할 수 있는 권한이 필요합니다.

Lambda@Edge의 서비스 연결 역할

Lambda@Edge에서는 AWS Identity and Access Management(IAM) 서비스 연결 역할을 사용합니다. 서비스 연결 역할은 서비스에 직접 연결된 고유한 유형의 IAM 역할입니다. 서비스 연결 역할은 해당 서비스에서 사전 정의하며 서비스에서 사용자를 대신하여 다른 AWS 서비스를 호출하기 위해 필요한 모든 권한을 포함합니다.

Lambda@Edge는 다음 IAM 서비스 연결 역할을 사용합니다.

  • AWSServiceRoleForLambdaReplicator - Lambda@Edge에서는 이 역할을 사용해 Lambda@Edge가 AWS 리전에 함수를 복제하도록 합니다.

  • AWSServiceRoleForCloudFrontLogger— 이 역할을 CloudFront 사용하여 로그 파일을 사용자 CloudWatch 계정으로 푸시하여 Lambda @Edge 검증 오류를 디버깅하는 데 도움이 됩니다.

CloudFront에서 Lambda @Edge 트리거를 처음 추가하면 Lambda @Edge 가 함수를 복제할 수 있도록 AWSServiceRoleForLambdaReplicator 이름이 지정된 역할이 자동으로 생성됩니다. AWS 리전 Lambda@Edge 함수를 사용하려면 이 역할이 필요합니다. AWSServiceRoleForLambdaReplicator 역할의 ARN의 모양은 다음과 같습니다.

arn:aws:iam::123456789012:role/aws-service-role/replicator.lambda.amazonaws.com/AWSServiceRoleForLambdaReplicator

이름이 지정된 AWSServiceRoleForCloudFrontLogger 두 번째 역할은 Lambda @Edge 오류 로그 파일을 푸시할 수 있도록 Lambda @Edge 함수 연결을 CloudFront 추가할 때 자동으로 생성됩니다. CloudWatch AWSServiceRoleForCloudFrontLogger 역할의 ARN의 모양은 다음과 같습니다.

arn:aws:iam::account_number:role/aws-service-role/logger.cloudfront.amazonaws.com/AWSServiceRoleForCloudFrontLogger

서비스 연결 역할이 있으면 필요한 권한을 수동으로 추가할 필요가 없으므로 Lambda@Edge를 설정 및 사용하기가 쉽습니다. 서비스 연결 역할의 권한은 Lambda@Edge에서 정의하며, Lambda@Edge만이 그 역할을 맡을 수 있습니다. 정의된 권한에는 신뢰 정책과 권한 정책이 포함됩니다. 권한 정책은 다른 어떤 IAM 엔터티에도 연결할 수 없습니다.

서비스 연결 역할을 삭제하려면 먼저 관련 리소스 CloudFront 또는 Lambda @Edge 리소스를 모두 제거해야 합니다. 그러면 활성 리소스에 액세스하는 데 필요한 서비스 연결 역할을 제거할 필요가 없어 Lambda@Edge 리소스를 보호할 수 있습니다.

서비스 연결 역할을 지원하는 기타 서비스에 대한 자세한 내용은 IAM으로 작업하는 AWS 서비스를 참조하고 서비스 연결 역할(Service-Linked Role) 열에 예(Yes)가 있는 서비스를 찾으세요.

Lambda@Edge의 서비스 연결 역할 권한

Lambda@Edge는 AWSServiceRoleForLambdaReplicatorAWSServiceRoleForCloudFrontLogger이라는 서비스 연결 역할을 사용합니다. 다음 단원에서는 이러한 각 역할에 대한 권한을 설명합니다.

Lambda Replicator의 서비스 연결 역할 권한

이 서비스 연결 역할을 통해 Lambda는 Lambda@Edge 함수를 AWS 리전에 복제할 수 있습니다.

AWSServiceRoleForLambdaReplicator 서비스 연결 역할은 그 역할을 수임하기 위해 다음 서비스를 신뢰합니다. replicator.lambda.amazonaws.com

역할 권한 정책에서는 Lambda@Edge가 지정된 리소스에서 다음 작업을 완료할 수 있도록 허용합니다.

  • 작업: lambda:CreateFunction에 대한 arn:aws:lambda:*:*:function:*

  • 작업: arn:aws:lambda:*:*:function:*에 대한 lambda:DeleteFunction

  • 작업: arn:aws:lambda:*:*:function:*에 대한 lambda:DisableReplication

  • 작업: all AWS resources에 대한 iam:PassRole

  • 작업: all AWS resources에 대한 cloudfront:ListDistributionsByLambdaFunction

로거에 대한 서비스 연결 역할 권한 CloudFront

이 서비스 연결 역할을 사용하면 로그 파일을 CloudWatch 계정으로 CloudFront 푸시하여 Lambda @Edge 검증 오류를 디버깅하는 데 도움이 됩니다.

AWSServiceRoleForCloudFrontLogger 서비스 연결 역할은 그 역할을 수임하기 위해 다음 서비스를 신뢰합니다. logger.cloudfront.amazonaws.com

역할 권한 정책에서는 Lambda@Edge가 지정된 리소스에서 다음 작업을 완료할 수 있도록 허용합니다.

  • 작업: logs:CreateLogGroup에 대한 arn:aws:logs:*:*:log-group:/aws/cloudfront/*

  • 작업: arn:aws:logs:*:*:log-group:/aws/cloudfront/*에 대한 logs:CreateLogStream

  • 작업: logs:PutLogEvents에 대한 arn:aws:logs:*:*:log-group:/aws/cloudfront/*

IAM 엔터티(예: 사용자, 그룹 또는 역할)가 Lambda@Edge 서비스 연결 역할을 삭제할 수 있도록 권한을 구성해야 합니다. 자세한 내용은 IAM 사용 설명서서비스 연결 역할 권한을 참조하십시오.

Lambda@Edge의 서비스 연결 역할 생성

일반적으로 Lambda@Edge에 대한 서비스 연결 역할은 수동으로 생성하지 않습니다. 다음 시나리오에서 서비스는 역할을 자동으로 생성합니다.

  • 트리거를 처음으로 생성할 때, 이 서비스에 AWSServiceRoleForLambdaReplicator(이)라는 역할이 없는 경우 해당 역할을 생성합니다. 이 역할은 Lambda에서 AWS 리전 리전으로 Lambda@Edge 함수를 복제하도록 합니다.

    서비스 연결 역할을 삭제하는 경우, 배포에서 Lambda@Edge의 새 트리거를 추가할 때 이 역할이 다시 생성됩니다.

  • Lambda @Edge 연결이 있는 CloudFront 배포를 업데이트하거나 생성하면 서비스가 역할을 생성합니다. 역할이 AWSServiceRoleForCloudFrontLogger 아직 없는 경우 로그 파일을 CloudFront 푸시할 수 있는 역할을 생성합니다. CloudWatch

    서비스 연결 역할을 삭제하면 Lambda @Edge 연결이 있는 CloudFront 배포를 업데이트하거나 생성할 때 역할이 다시 생성됩니다.

이러한 서비스 연결 역할을 수동으로 만들어야 하는 경우 AWS CLI를 사용하여 다음 명령을 실행합니다.

AWSServiceRoleForLambdaReplicator 역할을 만들려면

aws iam create-service-linked-role --aws-service-name replicator.lambda.amazonaws.com

AWSServiceRoleForCloudFrontLogger 역할을 만들려면

aws iam create-service-linked-role --aws-service-name logger.cloudfront.amazonaws.com

Lambda@Edge 서비스 연결 역할 편집

Lambda@Edge에서는 AWSServiceRoleForLambdaReplicator 또는 AWSServiceRoleForCloudFrontLogger 서비스 연결 역할을 편집할 수 없습니다. 서비스에서 서비스 연결 역할을 만든 후에는 다양한 개체가 역할을 참조할 수 있기 때문에 역할 이름을 변경할 수 없습니다. 그러나 IAM을 사용하여 역할의 설명을 편집할 수 있습니다. 자세한 내용은 IAM 사용 설명서서비스 연결 역할 편집을 참조하십시오.

서비스 연결 역할이 지원됩니다. AWS 리전 CloudFront

CloudFront 는 다음에서 Lambda @Edge 에 대한 서비스 연결 역할 사용을 지원합니다. AWS 리전

  • 미국 동부(버지니아 북부) – us-east-1

  • 미국 동부(오하이오) – us-east-2

  • 미국 서부(캘리포니아 북부) – us-west-1

  • 미국 서부(오레곤) – us-west-2

  • 아시아 태평양(뭄바이) – ap-south-1

  • 아시아 태평양(서울) – ap-northeast-2

  • 아시아 태평양(싱가포르) – ap-southeast-1

  • 아시아 태평양(시드니) – ap-southeast-2

  • 아시아 태평양(도쿄) – ap-northeast-1

  • 유럽(프랑크푸르트) – eu-central-1

  • 유럽(아일랜드) – eu-west-1

  • 유럽(런던) – eu-west-2

  • 남아메리카(상파울루) – sa-east-1