jetalog.net

최근 AWS Lambda(이하 Lambda)를 활용해 API Backend를 개발하고 있습니다.

처음하는 일은 늘 어려운 법이지만 이틀 내내 어두운 터널에서 벽을 짚으며 걷는 느낌을 줬던 이슈를 정리해봅니다.

 

만약 지금 바로 AWS Lambda에 고정 IP를 연결하는 방법이 필요하다면 이 글을 참고해주세요.

만약 수동으로 생성하고 싶거나, 기존 VPC를 활용해서 구성해야 한다면 이 글을 참고해주세요.

 

DB에 접속해야 되는데…

가장 기본이 되는 로그인 기능 구현부터 막혔습니다.
DB로부터 사용자 정보를 불러와야하는데 DB에 접속할 수 없었습니다.
원인은 금방 찾을 수 있었는데, DB 서버에 설정한 방화벽에서 차단되기 때문이었습니다.

 

몇 가지 방법을 검토했지만 공통적으로 VPC 설정이 필요했습니다.
그래서 VPC 설정을 변경해보았더니,

개소리야…

대충 VPC 설정을 변경했을 때 인터넷을 사용하려면 별도의 설정이 필요하다고 이해했습니다.

무시하고 넘어가기엔 앞으로 개발해야 하는 API 중에는 인터넷 접속이 필요한 경우도 있었습니다.


결국 Lambda 함수가 고정 IP를 사용하도록 제대로 구성하기로 했습니다.

 

VPC가 뭐지

먼저 막연하게만 알고 있던 VPC에 대한 이해가 필요했습니다. Amazon에서는 VPC를 이렇게 정의합니다.

Amazon Virtual Private Cloud(Amazon VPC)에서는 사용자가 정의한 가상 네트워크로 AWS 리소스를 시작할 수 있습니다. 이 가상 네트워크는 AWS의 확장 가능한 인프라를 사용한다는 이점과 함께 고객의 자체 데이터 센터에서 운영하는 기존 네트워크와 매우 유사합니다.

Amazon VPC란 무엇인가? - Amazon Virtual Private Cloud

아주 간단하게 이해하면 AWS 클라우드에 있는 인스턴스들의 VPN이라고 생각할 수 있습니다.

 

구성은 어떻게 해야하는거지

Amazon은 VPC 구성 예시도 제공해주고 있습니다.

Lambda에 고정 IP를 연결하기 위해서는 아래 구성이 가장 적합했습니다.

이건 또 뭔 개소리야…

온갖 문서를 뒤져본 끝에 VPC 설정에 필요한 개념들을 현실에 빗대어 생각해보기로 했습니다.

 

VPC를 사옥이라고 생각해본다면 아래처럼 이해할 수 있습니다.

물론 각 Amazon에서 제공하는 구성 요소가 현실에 완벽하게 대응하는 것은 아니기 때문에 유의해야 합니다.

 

AWS 구성요소 현실
VPC 사옥
Subnet 건물의 각 층
Internet Gateway 인터넷 전용선
NAT 공유기
Routing Table 공유기 설정
Security Group 방화벽

 

이 비유를 통해 위 이미지를 다시 그려본다면 이렇게 이해할 수 있습니다.

 

 

이렇게 비유를 했을 때, AWS 문서의 이미지가 이해되기 시작했습니다.

 

*

이 글은 총 3편에 걸쳐 작성할 예정입니다.

이번 편은 AWS Lambda에 고정 IP를 연결하기 위한 배경 지식을 정리했습니다.

2편에서는 위 이미지의 구성을 실제로 진행하는 단계를 정리했습니다,

3편에서는 이번 글 작성 중 발견한 '마법사' 기능을 이용해 구성하는 과정을 정리했습니다.

 

 

참고 문서