AWS Lambda 출력 IP 고정하기

zunzero·2023년 5월 12일
0

AWS

목록 보기
1/7

A 서비스에서 B 서비스로 특정 요청을 보내는데, B 서비스에는 IP white-list가 있다.
A 서비스의 요청이 특정 ec2 혹은 로드밸런서를 통한다면, B 서비스의 Ip white-list에 A 서비스의 IP 주소를 추가하면 간단히 해결된다.

하지만 A 서비스가 특정 요청을 AWS Lambda를 통해 실행한다면?
가장 우선적으로 고민해볼 사항은, AWS Lambda는 고정 Ip 주소를 사용하여 요청을 보내는지 확인해보아야 한다.
하지만 전혀 그렇지 않다. 간단히 생각해보아도 그럴 리가 없다.

따라서 우리는 AWS Lambda의 Ip를 고정할 방법을 찾아보아야 한다.

  1. NAT Gateway 생성
    AWS Management Console에서 NAT Gateway를 생성합니다. NAT Gateway를 생성할 때는, NAT Gateway가 연결될 VPC와 서브넷, NAT Gateway의 고정 IP 주소 등을 구성해야 합니다. NAT Gateway의 고정 IP 주소는 이후 Lambda 함수에서 요청을 보낼 때 사용됩니다.

  2. 라우팅 구성
    Lambda 함수에서 NAT Gateway를 통해 요청을 보내도록 라우팅을 구성합니다. 이를 위해서는 Lambda 함수와 연결된 VPC의 라우팅 테이블에서, 목적지 IP 주소를 NAT Gateway로 설정합니다. 이렇게 하면 Lambda 함수에서 요청을 보낼 때, 요청의 목적지 IP 주소가 NAT Gateway의 고정 IP 주소로 변경됩니다.

  3. 보안 그룹 구성
    Lambda 함수와 NAT Gateway를 연결하는 보안 그룹을 구성합니다. 이를 위해서는 Lambda 함수와 NAT Gateway가 동일한 VPC에서 실행되고 있어야 하며, Lambda 함수에서 NAT Gateway로 향하는 트래픽을 허용하는 보안 그룹을 구성해야 합니다.

  4. Lambda 함수에서 요청 보내기
    Lambda 함수에서 요청을 보낼 때는, NAT Gateway의 고정 IP 주소를 사용하여 요청을 보냅니다. Lambda 함수에서 요청을 보낼 때는 NAT Gateway의 IP 주소를 목적지 IP 주소로 설정하면 됩니다. NAT Gateway는 Lambda 함수에서 보낸 요청을 받아 인터넷으로 전달하므로, Lambda 함수의 IP 주소는 요청의 출발지 IP 주소로 나타나지 않습니다.

참고
아래 링크를 참고하면 쉽게 해결할 수 있다.

https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html

https://matthewleak.medium.com/aws-lambda-functions-with-a-static-ip-89a3ada0b471

위 링크를 참고해서 작업을 하다보면, lambda가 보내고자 하는 모든 요청 (0.0.0.0/32)이 NAT Gateway를 통하게 된다.
하지만 NAT Gateway는 비싸다.

따라서 프라이빗 서브넷의 라우팅 테이블에서 특정 destination 주소로의 요청만 NAT Gateway를 통하도록 설정해주어야 한다.

profile
나만 읽을 수 있는 블로그

0개의 댓글