본문으로 건너뛰기
버전: 4.6.1-saas

CloudFront Agent

개요

NetFUNNEL CloudFront 에이전트는 AWS Lambda@Edge에서 NetFUNNEL 서버와 통신하는 NetFUNNEL 전용 클라이언트입니다.

IAM 설정

IAM 역할 생성

  • AWS의 IAM 콘솔로 이동하세요.
  • [역할]을 클릭한 다음 [역할 생성]을 클릭합니다.
  • 신뢰할 수 있는 엔터티로 AWS 서비스를 선택하고 사용 사례로 Lambda를 선택합니다.
  • [다음: 권한]을 클릭하세요.

Trust Entity 설정

  • 역할을 생성한 후 [Trust Entity] 탭으로 이동합니다.
  • Trust Entity를 편집하고 아래의 JSON을 붙여넣습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"edgelambda.amazonaws.com",
"lambda.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}

정책 첨부

  • 역할의 [권한] 탭으로 이동하세요.
  • [권한 추가]를 클릭한 다음 [인라인 정책 만들기]를 클릭합니다.
  • JSON 탭에 아래의 정책을 붙여넣습니다. (이 정책을 사용하면 Lambda 함수가 CloudWatch 로그를 생성하고 쓸 수 있습니다.)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "*"
}
]
}

Lambda 함수 생성

경고

Lambda 함수는 us-east-1(N. Virginia) 리전에서 만들어야 합니다. 이는 AWS의 요구 사항으로, 이 리전은 함수를 전 세계적으로 복제하기 위한 중앙 위치 역할을 하기 때문입니다.

  • us-east-1 지역의 Lambda 콘솔로 이동합니다.
  • [함수 생성]을 클릭하세요.
  • [처음부터 작성]을 선택하세요.
  • 함수에 이름을 지정합니다. (예: "netfunnel-agent")
  • 런타임으로 Node.js를 선택하세요.
  • Step 1에서 위에서 생성한 IAM 역할을 선택하세요.
  • [함수 생성]을 클릭하세요.

Lambda 함수 설정

정보

CLIENT_ID는 NetFUNNEL 콘솔에서 확인하세요.

import handleEvent from './netfunnel-cloudfront-agent.js';
const config = {
clientID: "{{CLIENT_ID}}",
}
export const handler = async (event) => {
return await handleEvent(event, config)
};
  • package.json 파일을 생성하고 아래 코드를 붙여넣습니다.
{
"name": "cloudfront-agent",
"type": "module",
"dependencies": {}
}
  • 작성을 완료하면 [Deploy] 버튼을 눌러주세요.
  • [버전] 탭으로 가서 [새 버전 발행]을 눌러주세요.

CloudFront 설정

CloudFront에 Lambda@Edge 연결

  • Lambda@Edge를 적용할 CloudFront ID를 선택합니다.
  • [동작] 탭에서 항목을 선택하고 [편집]을 누릅니다.
  • 제일 하단의 함수 연결에서 뷰어 요청과 뷰어 응답에 위에서 생성한 람다 함수의 arn를 입력하세요. 뒤에 버전명을 꼭 넣어주세요. (버전이 1일 경우 :1 을 추가하면 됩니다.)
  • [변경 사항 저장]을 클릭합니다.

CloudFront 무효화

  • [무효화] 탭으로 이동하여 [무효화 생성]을 클릭합니다.
  • 객체 경로에 /* 을 입력하고 [무효화 생성]을 클릭합니다.
  • 무효화가 완료되면 CloudFront에 Lambda@Edge의 연결이 적용됩니다.

부가 기능

Good Bot 예외 처리

Lambda 설정을 통해 특정 User-Agent 값이 포함되어 있을 경우 에이전트 동작으로부터 예외 처리할 수 있습니다.

Lambda 설정

  • NetFUNNEL 에이전트를 적용한 Lambda 함수를 엽니다.
  • index.mjs 파일을 엽니다.
  • 아래 코드를 참고하여 config 객체의 goodBots에 추가하고자 하는 굿 봇의 User-Agent 값을 배열로 넣습니다.
정보

Google, Microsoft, Yahoo, Apple, Facebook 봇을 예외 처리한 예시 코드입니다.

const config = {
...
goodBots: ["Googlebot", "Bingbot", "Slurp", "Applebot", "facebookexternalhit"],
}
  • 작성을 완료하면 [Deploy] 버튼을 눌러주세요.
  • [버전] 탭으로 가서 [새 버전 발행]을 눌러 버전을 업데이트해주세요.

CloudFront 설정

  • Lambda@Edge를 적용한 CloudFront ID를 선택합니다.
  • [동작] 탭에서 항목을 선택하고 [편집]을 누릅니다.
  • 하단의 함수 연결에서 뷰어 요청과 뷰어 응답을 새 버전으로 수정해주세요.
  • [변경 사항 저장]을 클릭합니다.

진입 키 자동 반납 처리

NetFUNNEL CloudFront 에이전트는 진입 후 넷퍼넬 키를 자동으로 반납하여 다음 대기자가 진입할 수 있도록 처리하고 있습니다. 만약, 넷퍼넬 키를 바로 반납하지 않고 세그먼트에서 설정한 타임아웃 시간에 넷퍼넬 키를 반납하고 싶은 경우에 사용할 수 있는 기능입니다.

Lambda 설정

  • NetFUNNEL 에이전트를 적용한 Lambda 함수를 엽니다.
  • index.mjs 파일을 엽니다.
  • 아래 config 객체의 returnKey에 진입 키 자동 반납 여부를 입력합니다.
const config = {
...
returnKey: true,
}
정보

true(기본값)로 할 경우, 대기 완료 및 진입 후 에이전트에서 넷퍼넬 키를 자동으로 반납합니다. false로 할 경우 세그먼트에서 설정한 타임아웃 시간에 키가 반납 처리됩니다.

  • 작성을 완료하면 [Deploy] 버튼을 눌러주세요.
  • [버전] 탭으로 가서 [새 버전 발행]을 눌러 버전을 업데이트해주세요.

CloudFront 설정

  • Lambda@Edge를 적용한 CloudFront ID를 선택합니다.
  • [동작] 탭에서 항목을 선택하고 [편집]을 누릅니다.
  • 하단의 함수 연결에서 뷰어 요청과 뷰어 응답을 새 버전으로 수정해주세요.
  • [변경 사항 저장]을 클릭합니다.

대기실 도메인 변경

NetFUNNEL 대기실 페이지의 도메인은 agent-lib.stclab.com입니다. 해당 도메인을 서비스 중인 도메인에 맞게 변경하려면 NetFUNNEL 서비스팀을 통해 원하는 도메인을 알려주시고, Lambda 설정을 변경해야 합니다.

Lambda 설정

  • viewer-request에 적용한 Lambda 함수를 엽니다.
  • index.mjs 파일을 엽니다.
  • config 객체의 vwrPageDomain에 변경하고자 하는 대기실의 주소를 입력합니다.
정보

대기실 도메인을 wait.stclab.com으로 변경하는 예시 코드입니다.

const config = {
...
vwrPageDomain: "https://wait.stclab.com",
}
  • 작성을 완료하면 [Deploy] 버튼을 눌러주세요.
  • [버전] 탭으로 가서 [새 버전 발행]을 눌러 버전을 업데이트해주세요.

CloudFront 설정

  • Lambda@Edge를 적용한 CloudFront ID를 선택합니다.
  • [동작] 탭에서 항목을 선택하고 [편집]을 누릅니다.
  • 하단의 함수 연결에서 뷰어 요청과 뷰어 응답을 새 버전으로 수정해주세요.
  • [변경 사항 저장]을 클릭합니다.

쿠키 도메인 설정

NetFUNNEL 서버에서 발급한 키를 쿠키에 저장할 때 현재 페이지의 도메인을 기준으로 저장합니다. 만약 서로 다른 서브도메인 간에 키를 공유해야할 경우 메인 도메인이 쿠키에 저장되도록 설정합니다.

정보

develop.stclab.comstaging.stclab.com와 같이 서브도메인이 서로 다른 페이지에서 쿠키를 공유하도록 .stclab.com으로 설정합니다.

Lambda 설정

  • viewer-request에 적용한 Lambda 함수를 엽니다.
  • index.mjs 파일을 엽니다.
  • 아래 config 객체의 cookieDomain.MAIN_DOMAIN 형식으로 입력합니다.
정보

쿠키 도메인을 .stclab.com으로 변경하는 예시 코드입니다.

const config = {
...
cookieDomain: ".stclab.com",
}
  • 작성을 완료하면 [Deploy] 버튼을 눌러주세요.
  • [버전] 탭으로 가서 [새 버전 발행]을 눌러 버전을 업데이트해주세요.

CloudFront 설정

  • Lambda@Edge를 적용한 CloudFront ID를 선택합니다.
  • [동작] 탭에서 항목을 선택하고 [편집]을 누릅니다.
  • 하단의 함수 연결에서 뷰어 요청과 뷰어 응답을 새 버전으로 수정해주세요.
  • [변경 사항 저장]을 클릭합니다.