[AWS] cloudfront 사용자 인증 lambda@edge 말고 cloudfront function 도입

개발者·2022년 11월 14일
1

AWS

목록 보기
1/2

이 글을 읽고 있는 사람들은 기본적으로 cloudfront 즉 CDN에 대해서 알고 있음을 가정하고 이야기를 진행한다.

cloudfront를 사용하면서 사용자 인증을 위해 lambda@edge와 cloudfront function를 고려하면서
사용한 후기를 남기고자 한다.

이후 내용은 주말에 적도록 하겠다


도입배경

cloudfront 를 통해서 s3에 접근할 때 인증을 위해 토큰 인증을 하려고 하였고, 그 방법으로 처음에는 lambda@edge를 도입하려고 했다.


lambda@edge

lambda@edge는 cloudfront의 기능 중 하나로서 사용자에게 더 가까운 위치에서 코드를 실행하여 성능을 개선하고 지연시간을 단축할 수 있게 해준다고 한다.

특징

  • lambda@edge는 아직(22년 11월 기준)은 버지니아 북부(us-east-1) 리전에서만 만들 수 있다.
  • 버지니아 북부 리전에서 lambda@edge용으로 함수를 작성하고 배포하면 전세계의 리전으로 배포된다.
  • 전세계에 배포되기에 CDN과 같은 리전에서 동작하기 때문에 지연시간이 적다.
  • lambda와 마찬가지로 코드가 실행되지 않을 떄는 요금이 부과되지 않는다.
  • node 혹은 python으로 작성할 수 있다.
  • request viewer, response viewer, request origin, response origin 모두 사용할 수 있다.

사용법은 아래와 같다.

  1. 버지니아 북부(us-east-1) 리전에 코드를 작성한다.
  2. 코드를 배포해서 버전을 얻는다.
  3. cloudfront -> 배포 -> [원하는 CF ID] -> 동작 -> [원하는 동작 체크 후 편집] -> 맨 아래로 내려가서 [함수 연결 - 선택사항] -> 원하는 요청 응답에서 함수 유형 [Lambda@Edge] + 함수 ARN/이름 입력 -> 변경 사항 저장

사용법은 간단하다. 하지만 아래 표를 보고 cloudfront function으로 갈아타기로 마음 먹었다.

더 찾아본 결과 현재 케이스에서 더 좋은 이유는 다음과 같다.

  1. Lambda@Edge 보다 지연시간이 짧다.
  2. Lambda@Edge 대비 비용이 1/6 밖에 안된다.

이 두가지 이유가 가장 컷다.

현재 사용에 있어서 단점은 ECMA 5.1을 사용해야 한다는게 개인적으로 흠이라면 흠이였다.


cloudfront function

사용법은 다음과 같다.

  1. cloudfront 콘솔에서 좌측의 함수를 클릭하고 함수생성을 누른다.
  2. 이름과 설명(선택사항)을 작성하고 함수 생성을 누른다.
  3. 생성된 함수 아래에서 함수 코드를 작성하고 3번째 탭 게시에 가서 [함수 게시를 누른다]

4-1. Lambda@Edge처럼 [원하는 CF ID] -> 동작에 가서 lambda@edge 선택 대신 cloudfront function을 선택할 수 있다.
4-2. 아니면 해당 함수 게시 아래에서 연결 추가를 통해 지정해줄 수 있다.


느낀점

지연시간이 매우 짧아서 도입했을 때 성능 차이를 느낄 수 없어서 좋은것 같다.
lambda@egde는 버지니아 북부에 들어가서 관리해야하는데 cloudfront 콘솔에서 바로바로 확인할 수 있으니 더 간편한 것 같다.

- 끝 -


reference

profile
solrasido

0개의 댓글