티스토리 뷰

 

 

직접 인프라를 구축하고, 개발하면서 고통받았던 사항들 정리한 것이다.

 

공식 가이드 문서를 다 봤어도 놓칠만한게 꽤 있었을 것 같다.

1. Lambda@Edge는 Nodejs, Python으로만 사용가능하다.

AWS 인프라도 정리해볼 겸, Go 사용법도 익힐 겸 Lambda@Edge를 이용해서 이미지 변환을 해보려고 했다.

 

이미지 변환 라이브러리를 이용해서 Go 코드를 다짜놨는데 웬걸? Go는 Lambda@Edge에 사용할 수 없었다.

 

Amazon Linux 2023으로 런타임을 구성하니까 이런 에러가 나타난다.

 

함수를 만들기 전에 Lambda@Egde를 미리 만들어볼걸 그랬다.

2. 아키텍처와 리전의 제한이 있다.

리전은 us-east-1, 아키텍처는 x86_64이 고정이다.

 

리전 고정은 CloudFront와 동일한 리전에 위치하기 위해서 인 것 같고, 아키텍처는 클라우드 호환성 때문이라고는 하는데 정확한 이유는 모르겠다.

 

3. Lambda@Edge를 바로 삭제할 수 없다.

먼저, CloudFront에서 연결된 함수를 해제해야한다.

 

CloudFront > 배포 > 동작 > 편집 맨 아래 > 함수 연결 > 원본 응답에 등록된 Lambda@Edge를 해제

 

 

그리고 생성된 Lambda@Edge 복제본(replica)가 모두 삭제되어야 한다.

 

그러나 복제본은 직접 삭제 할 수 없으니, 자동 삭제 될 때 까지 기다려야한다.

https://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/lambda-edge-delete-replicas.html

 

위 문서에서는 복제본은 일반적으로 몇 시간 내에 삭제된다고 하니 삭제안된다고 나처럼 이상한 짓하지말고 그냥 기다렸다가 지우자.

 

4. Lambda@Edge의 로그 확인하기

조금 어려운 이야기.

 

로그를 확인하기 위해서 일단 가이드문서에서는 와일드카드로 다열라고 되어있다.

 

 

이유는 Lambda@Edge의 동작방식을 어느정도 알게된다면, 알게되는 이야기이다.

 

Lambda@Edge는 CloudFront와 같이 움직인다.

 

CloudFront는 요청을 받으면, 최종 사용자와 인접한 컴퓨터(엣지 서버)를 사용하여 사용자가 콘텐츠를 사용하거나 보고자 할 때 빠르게 전송하는 방식으로 동작한다.

 

그럼 Lambda@Edge도 CloudFront의 엣지서버 쪽에 위치해야한다는 것이다.

 

그래서 Lambda@Edge는 us-esat-1가 기본 리전이지만, 엣지 서버 쪽에 위치해야하기위해 복제본(Replica)를 띄우는 방식으로 동작한다.

 

만약 한국(ap-norttheast-2)에서 요청이 발생하면 cloudwatch log 또한 ap-northeast-2에 생성된다.

 

늘 하던대로 Lambda@Edge가 us-east-1에 있으니까 여기 로그만 열어두면 되겠다 하면, 버지니아 북부의 요청만 로그가 남게 될 것이다.

 

5. Lambda@Edge의 메인 함수가 변경되어도, 복제본이 즉시 갱신되지 않는다.

별도로 명시해주지 않으면, Lambda@Edge의 메인 함수가 변경되어도 복제본이 즉시 갱신되지 않는다.

 

때문에 배포 후 메인 함수에 적용이 되고, 복제본이 갱신될 때까지 잠깐 기다려야할 수도 있다.

 

그리고 메인 함수를 갱신할 때, 코드베이스로 관리하지 않겠다고하면 손이 너무 많이가게 된다.

 

수동으로 메인 함수를 변경하고,  Lambda@Edge의 복제본이 연동된 cloudfront를 재등록하는 걸 반복해야한다.

 

Lambda@Edge를 serverless로 관리하는 주 이유이다.

 

serverless framework에서는 플러그인으로 이 부분이 한방에 처리가 가능하다.

 

6. role에 lambdaedge 신뢰관계를 추가해야한다.

신뢰관계에 Lambda@Edge를 추가하지 않으면, 어차피 생성할때 알려준다.

 

그 때 알아차릴 수 있을거니까 큰 문제는 아니다.

https://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/lambda-edge-permissions.html

 

마치며

진짜 머리박아가면서 배운 팁들이다....

 

이벤트가 어떻게 넘어오는지 확인하기 위해서 로그 확인을 처리하는 부분이 가장 큰 문제였지만 어떻게 해결이 됐다.

 

메트릭은 넘어오는데 로그가 안남아서 ???? 한 상황이 계속 발생했다. 

 

이 블로그에서 가장 큰 도움을 받았다.

https://lotuus.tistory.com/160

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함