CloudFront Embedder 가이드
본 문서에서는 Amazon CloudFront CDN을 사용하는 서비스 사이트를 위해 CloudFront용 워터마크 임베딩 모듈을 Lambda@Edge로 적용하는 방법에 대하여 설명합니다.
sequenceDiagram
participant A as 최종 사용자
participant B as CloudFront CDN
A ->> B: 세션 URL 재생 시작 (세그먼트 요청)
Note right of B: CloudFront Embedder
B -->> B: 세션 URL에 따른 0/1 세그먼트 조합
B ->> A: 조합된 세그먼트 전달
Note right of A: 조홥된 콘텐츠 재생
AWS CDK를 이용한 CloudFront Embedder 세팅
AWS CloudFront 와 lambda@edge 연동 하는데 필요한 리소스 등을 한번를 생성할 수 있는 CDK 샘플 소스가 제공됩니다. CloudFront Embedder CDK 샘플
직접 CloudFront Embedder 세팅
Lambda@Edge 설정에 필요한 CloudFront Embedder 파일은 샘플 다운로드 페이지에서 다운로드 받을 수 있습니다.
동영상 튜토리얼
CloudFront Embedder를 통한 포렌식 워터마킹 임베딩 방법을 설명하는 영상입니다.
Lambda@Edge 사용 가이드
Amazon CloudFront CDN에서의 Lambda@Edge 사용에 대해 익숙하지 않은 경우, 다음 단계로 진행하기 전에 아래 AWS 온라인 문서를 참고해 사용법을 숙지해 주실 것을 권장합니다.
IAM 권한 및 역할 생성
Lambda@Edge를 구성하기 위해서는 우선 해당 기능에 필요한 IAM 권한과 실행 역할을 생성해야 합니다. AWS 콘솔의 IAM
서비스 화면에서 해당 가이드를 참고해 다음과 같이 권한 및 역할을 생성합니다.
lambda:GetFunction
,lambda:EnableReplication*
,iam:CreateServiceLinkedRole
,cloudfront:UpdateDistribution
,cloudfront:CreateDistribution
권한을 추가하여 역할을 생성합니다.
권한 추가를 위해서는 우선 대상 서비스(Lambda)를 지정해야 합니다. 또한
lambda:EnableReplication*
권한을 추가하려면 우선lambda:EnableReplication
권한 추가 후 JSON 코드를 수정해야 합니다.
-
Lambda access log를 cloudwatch logs로 수집하기 위해 logs 관련 권한을 추가합니다.
{ "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" }
-
생성한 role의
Trust Relationship
탭에 아래 역할을 추가합니다.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com", "edgelambda.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
Lambda@Edge 함수 생성
- AWS 콘솔에서
Lambda
서비스로 이동해함수 생성
버튼을 클릭합니다. - 콘솔 우측 상단의 AWS 리전을
미국 동부(버지니아 북부)
로 선택합니다. (Lambda@Edge는 Virginia Region에 생성해야 사용 가능합니다.)
1. 함수 이름 및 Runtime 설정
함수 이름
: 임의의 이름으로 입력합니다. (예: fwm-cf-embedder)런타임
:Node.js 12.x
이후 버전을 선택합니다. (12.x, 14.x, 16.x 등) 본 문서 작성 시점의 기본값은Node.js 16.x
입니다.아키텍처
: 기본값인x86_64
를 사용합니다.
2. 실행 역할 설정
기본 실행 역할 변경
을 클릭 해기존 역할 사용
항목을 선택하고, 이전 단계에서 생성한 IAM 역할을 선택합니다.- 화면 하단의
함수 생성
버튼을 클릭해 Lambda@Edge 함수를 생성합니다.
3. 샘플 코드 업로드 및 수정
-
코드 소스
화면의업로드
버튼을 클릭해 샘플 다운로드 페이지에서 다운받은 CloudFront Embedder zip 파일을 업로드합니다. -
업로드된 샘플 코드 내용을 확인하고 아래와 같은 사항을 수정합니다.
아래 안내된 부분 이외의 소스를 수정할 경우, 오류가 발생할 수 있으니 주의하시기 바랍니다.
config.json
소스에서 아래 테이블에 해당하는 변수의 값을 설정합니다.
Name | Required | Description |
---|---|---|
aesKey |
True | PallyCon 콘솔 사이트에서 제공하는 사이트 키 값을 입력합니다. |
type |
True | 전처리된 A/B 버전 세그먼트가 하나의 폴더에 함께 저장된 콘텐츠인 경우는 unlabeled_a_variant 를 입력하고, 각각 0 과 1 폴더로 나뉘어 패키징된 경우는 directory_prefix 를 입력합니다. 최신 버전의 FWM CLI 패키져를 이용하거나 SaaS 패키징 서비스 신규 고객인 경우에는 기본적으로 Unlabeled A Variant 형태로 패키징됩니다. (기본값: unlabeled_a_variant ) |
availableInterval |
True | 워터마크 적용을 위해 요청된 URL에는 timestamp 값이 포함되어 있습니다. 본 항목은 해당 timestamp의 유효 기간을 체크하기 위한 값입니다. 0 으로 설정할 경우 timestamp 유효 기간을 체크하지 않습니다. (단위: 분) |
prefixFolder |
False | A/B 버전 콘텐츠가 저장되어 있는 상위 폴더 명 설정 - 기존 패키징 서비스로 패키징한 경우: dldzkdpsxmdnjrtm - 신규 T&P 서비스로 패키징한 경우: wm-contents 기본 값은 ["dldzkdpsxmdnjrtm", "wm-contents"] 로, 위 두 가지 경우를 모두 지원합니다. |
wmPublicKey | False | 세션 발급시 wmt 토큰 유형을 사용할 때 설정합니다. PallyCon 사이트에서 발급된 Akamai 공용 키를 사용하며, 헬프데스크에 요청할 수 있습니다. |
wmPassword | False | 세션 발급시 wmt 토큰 유형을 사용할 때 설정합니다. PallyCon 사이트에서 발급된 Akamai 암호를 사용하며, 헬프데스크에 요청할 수 있습니다. |
-
저장한 후
Action
버튼의Publish new version
을 클릭하여 version을 생성합니다. -
생성된 version이 포함된 ARN을 복사해 놓습니다. 우측 상단에 표시됩니다.
- 예) arn:aws:lambda:us-east-1:{계정넘버}:function:{lambda이름}:{version}
CloudFront 설정
CloudFront는 이미 생성되어 있다는 가정 하에 Lambda@Edge를 적용하는 방법을 가이드 합니다.
Lambda@Edge 적용
AWS console 에 접속하여 CloudFront
메뉴 선택 후 lambda@Edge를 적용시킬 CloudFront를 선택합니다.
1. Behaviors 설정
-
Behaviors
탭을 선택 후 표시된 체크박스에 체크를 한 후에 Edit 버튼을 클릭합니다. -
Lambda Function Associations
항목을 세팅합니다.- EventType :
Viewer Request
선택 - Lambda Function ARN : Lambda@Edge 생성 과정에서 복사해 놓았던 ARN 입력
- EventType :
-
Yes, Edit
버튼을 클릭합니다.
2. 설정 완료
CloudFront의 Status가 InProgress
상태로 변경되며, Lambda@Edge가 적용이 완료되면 Deployed
로 상태가 변경이 되고 모든 설정이 완료됩니다.
자세한 Lambda@Edge 관련 내용은 AWS 에서 제공하는 CloudFront 가이드를 참조하시기 바랍니다.