메뉴 닫기

[Tech]AWS Lambda 함수에 고정 IP(Elastic IP) 설정하기

안녕하세요.

서버리스 환경에서 외부 서비스와 통신할 때, IP를 고정해야 하는 상황이 종종 발생합니다. 예를 들어, 방화벽이 등록된 IP만 허용할 경우, Lambda 함수가 외부와 통신할 때 사용하는 IP를 고정해야 하죠.

이번 글에서는 AWS Lambda 함수에 고정 IP(Elastic IP)를 부여하는 방법을 하나하나 단계별로 설명드리겠습니다.


목표

  • AWS Lambda 함수가 외부로 나가는 요청에 대해 고정 IP(Elastic IP) 사용
  • 이를 위해 VPC, 프라이빗 서브넷, NAT Gateway, EIP 구성

1️⃣ Lambda 함수 준비하기

먼저 테스트용 Lambda 함수를 생성하겠습니다.

  • 런타임: Python 3.12
  • 함수 이름: 자유롭게 설정

▶️ 예제 코드 (IP 확인용)

import json

import urllib.request

def lambda_handler(event, context):

try:

with urllib.request.urlopen("<https://api.ipify.org?format=json>") as response:

ip_data = response.read().decode("utf-8")

return {

'statusCode': 200,

'body': json.dumps({

'message': 'Success',

'public_ip': json.loads(ip_data)['ip']

})

}

except Exception as e:

return {

'statusCode': 500,

'body': json.dumps({

'message': 'Error fetching IP',

'error': str(e)

})

}

이 코드는 Lambda 함수가 외부에 요청을 보내고, 어떤 IP로 요청이 나가는지 확인하는 테스트용 함수입니다.


2️⃣ Lambda를 VPC에 연결하기

Lambda 함수 → 구성 탭VPC → 편집

  • VPC: 기존 또는 새로 만든 VPC
  • 서브넷: 프라이빗 서브넷 선택 (중요!)
  • 보안 그룹: 아웃바운드 80/443 허용

❓ 왜 프라이빗 서브넷인가요?

  • Lambda는 퍼블릭 IP를 자동으로 할당받지 않기 때문에, 퍼블릭 서브넷에 연결해도 외부와 통신할 수 없습니다.
  • 외부와 통신하려면 프라이빗 서브넷 + NAT Gateway + EIP 구조를 통해 나가야 합니다.

3️⃣ IAM 역할 설정 (네트워크 권한 추가)

Lambda 함수가 VPC 내에서 동작하려면 ENI(Network Interface)를 만들 수 있는 권한이 필요합니다.

  • Lambda → 구성 → 권한 → 연결된 IAM 역할 클릭

  • 권한 추가 → 정책 연결

  • AmazonEC2FullAccess (또는 ec2:CreateNetworkInterface 등 최소 권한 정책) 추가


4️⃣ VPC 네트워크 구성

이제 Lambda 함수가 나갈 수 있는 네트워크 출구를 만들어야 합니다.

① Elastic IP (EIP) 생성

  • VPC → 탄력적 IP → 새 주소 할당

② NAT Gateway 생성

  • VPC → NAT 게이트웨이 → 생성

  • 퍼블릭 서브넷에 NAT Gateway 생성
  • 위에서 만든 EIP 연결

NAT Gateway는 반드시 퍼블릭 서브넷에 있어야 하고, EIP를 연결해야 고정 IP가 부여됩니다.

③ 서브넷 라우팅 테이블 구성

  • 프라이빗 서브넷의 라우팅 테이블을 열고
    • 0.0.0.0/0 → 대상: NAT Gateway

  • 퍼블릭 서브넷의 라우팅 테이블에는
    • 0.0.0.0/0 → 대상: 인터넷 게이트웨이(IGW)

5️⃣ 테스트

Lambda 함수로 돌아가서 Test를 실행해봅니다.

정상 동작 시, 반환된 IP가 Elastic IP와 동일해야 합니다.

✨ 이제 Lambda 함수가 항상 고정된 IP를 통해 외부와 통신하게 됩니다!

 


이처럼 AWS Lambda에서도 VPC, NAT Gateway, EIP를 적절히 활용하면

고정 IP를 사용할 수 있습니다.

이 방법은 외부 서비스에서 IP 허용 목록(Whitelist)을 적용해야 할 때 매우 유용합니다.

감사합니다

 


📚 참고 자료

https://repost.aws/ko/knowledge-center/lambda-static-ip