[번역] AWS Lambda를 VPC를 통해 인터넷 연결하기
본 내용은 Gist에 올라온 하단의 포스팅을 번역하였습니다. 전체 내용을 인용으로 붙이고싶지만 Gist의 경우 차꾸 코드로 인식하여… ㅠㅠ 가져오는 관계로 링크 형식으로만 남겨드립니다.
AWS람다를 VPC를 통해 인터넷에 연결하는 방법에 대해 설명하고자합니다. 그럼 시작하겠습니다.
다소 어려울 수 있지만, 람다는 세가지 상태를 가질 수 있습니다.
- VPC가 없는 상태 — 웹에 자유롭게 접속할 수 있지만 로컬 네트워크로 AWS 서비스들과 연결할 수 없음
- VPC가 있는 상태 — 기본적인 설정으로 로컬 네트워크에 연결이 가능하지만 웹에는 접속할 수 없음
- VPC와 NAT이 있는 상태 — 가장 좋은 케이스로 AWS 서비스와 웹 둘 다 접속이 가능
이번 내용에서는 3번의 케이스에 대해 설명하겠습니다.
참조: 본 튜토리얼의 모든 단계를 따라갈 필요는 없습니다. 서브넷이 이미 존재할수도 있고 테이블이 이미 세팅되어있을수도 있으니 기존에 세팅된 내용을 수정하여 진행하여도 무방합니다.
서브넷만들기
먼저 할일은 서브넷을 만드는 것입니다. 먼저 4개의 서브넷을 만들어보겠습니다. 아래는 제가 앞서 세팅을 한 서브넷 리스트이며 아이피는 예시를 들어 적용하였으므로 각자에 맞추어 설정을 해주세요. 패턴은 16씩 증가하는 테이블입니다.
IGW는 Internet Gateway의 약자이며 NAT은 Network Address Translatation Gateway의 약자입니다.
3개의 서브넷은 Nat 게이트웨이로 연결하고 1개는 인터넷 게이트로 연결해야합니다. 우선 라우팅 테이블을 만들어보겠습니다.
라우팅 테이블 만들기
VPC 대시보드 -> 라우팅 테이블
먼저 두개의 라우팅 테이블을 만들어보겠습니다.
하나는 nat의 연결을 위한 테이블로 lambda-rt-to-nat으로 이름지어줍니다.
다른 하나는 인터넷 게이트웨이로의 연결을 위한 lambda-rt-to-igw로 이름지어줍니다.
람다 설정하여주기
람다에서 함수를 클릭한 경우 나오는 네트워크탭에서 nat으로 설정한 서브넷을 3개 설정하여줍니다.
NAT 게이트웨이 만들기
이제 Nat Gateway를 만들겠습니다. NAT 게이트웨이로 들어간 후 NAT게이트웨이 생성을 누릅니다. 그 후 서브넷을 lambda-subnet-point-to-igw로 설정하여주고 EIP를 생성하여줍니다.
역주추가
조금 전 만들었던 lambda-table-to-nat 라우팅 테이블을 수정하여야합니다. 라우팅 테이블 메뉴로 이동 후 lambda-table-to-nat를 선택한 후 하단에 나오는 메뉴 중 라우팅을 누릅니다. 그 후 편집버튼을 누른 후 0.0.0.0/0을 대상주소로 조금 전 연결해주었던 nat게이트웨이와 연결하여줍니다.
다음은 인터넷 게이트웨이 메뉴로 들어간 후 igw로 시작하는 인터넷 게이트가 없을경우 인터넷 게이트웨이를 만들어줍니다. 이름 형식은 되도록 igw를 subfix로 갖는것이 좋습니다. 그 후 lambda-table-to-igw로 이동한 후 라우팅 테이블에서 편집 그 후 0.0.0.0/0을 igw로 연결하여줍니다.
마치며
이제 동작이 될 것입니다. 여러분이 만든 람다 함수는 NAT을 통해 VPS와 웹에 연결할 수 있습니다.
참조
- Essentials: Introducing VPC Support for AWS Lambda
- AWS Lambda: How to setup a NAT gateway for a lambda function with VPC access
- New — Access Resources in a VPC from Your Lambda Functions
- Configuring a Lambda Function to Access Resources in an Amazon VPC
- February 2016 Webinar Series — Introducing VPC Support for AWS Lambda