기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Lambda 함수, Amazon VPC 및 서버리스 아키텍처를 사용하여 정적 아웃바운드 IP 주소 생성
Thomas Scott, Amazon Web Services
요약
이 패턴은 서버리스 아키텍처로 Amazon Web Services(AWS) 클라우드에서 고정 아웃바운드 IP 주소를 생성하는 방법을 설명합니다. 조직에서 Secure File Transfer Protocol(SFTP)을 사용하여 별도의 사업체에 파일을 보내려는 경우 이 접근 방식을 활용할 수 있습니다. 즉, 비즈니스 엔터티는 방화벽을 통해 파일을 허용하는 IP 주소에 액세스할 수 있어야 합니다.
이 패턴의 접근 방식은 Elastic IP 주소를 아웃바운드 IP 주소로 사용하는 AWS Lambda 함수를 생성하는 데 도움이 됩니다. 이 패턴의 단계를 따르면 고정 IP 주소를 사용하는 인터넷 게이트웨이를 통해 아웃바운드 트래픽을 라우팅하는 Lambda 함수와 Virtual Private Cloud(VPC)를 생성할 수 있습니다. 고정 IP 주소를 사용하려면 Lambda 함수를 VPC와 서브넷에 연결합니다.
사전 조건 및 제한 사항
사전 조건
활성 상태의 AWS 계정.
Lambda 함수를 생성 및 배포하고 VPC 및 서브넷을 생성할 수 있는 AWS Identity and Access(IAM) 권한. 이에 대한 자세한 내용은 AWS Lambda 설명서의 실행 역할 및 사용자 권한을 참조하십시오.
코드형 인프라(IaC)를 사용하여 이 패턴의 접근 방식을 구현하려면 AWS Cloud9와 같은 통합 개발 환경(IDE)이 필요합니다. 이에 대한 자세한 내용은 AWS Cloud9 설명서의 AWS Cloud9란 무엇인가요?를 참조하세요.
아키텍처
다음 다이어그램은 이 패턴의 서버리스 아키텍처입니다.
이 다이어그램은 다음 워크플로를 보여줍니다.
아웃바운드 트래픽은 NAT gateway 1를 Public subnet 1에 남깁니다.
아웃바운드 트래픽은 NAT gateway 2를 Public subnet 2에 남깁니다.
Lambda 함수는 Private subnet 1 또는 Private subnet 2에서 실행할 수 있습니다.
Private subnet 1 및 Private subnet 2는 퍼블릭 서브넷의 NAT 게이트웨이로 트래픽을 라우팅합니다.
NAT 게이트웨이는 퍼블릭 서브넷에서 인터넷 게이트웨이로 아웃바운드 트래픽을 전송합니다.
아웃바운드 데이터는 인터넷 게이트웨이에서 외부 서버로 전송됩니다.
기술 스택
자동화 및 규모 조정
서로 다른 가용 영역에서 두 개의 퍼블릭 서브넷과 두 개의 프라이빗 서브넷을 사용하여 고가용성(HA)을 보장할 수 있습니다. 하나의 가용 영역을 사용할 수 없게 되더라도 패턴의 솔루션은 계속 작동합니다.
AWS Lambda - AWS Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다. Lambda는 필요 시에만 코드를 실행하며, 일일 몇 개의 요청에서 초당 수천 개의 요청까지 자동으로 규모를 조정합니다. 사용한 컴퓨팅 시간만큼만 비용을 지불하고, 코드가 실행되지 않을 때는 요금이 부과되지 않습니다.
Amazon VPC – Amazon Virtual Private Cloud(VPC)를 사용하면 정의한 가상 네트워크에서 AWS 리소스를 시작할 수 있도록 클라우드의 논리적으로 격리된 섹션을 프로비저닝할 수 있습니다. 이 가상 네트워크는 AWS의 확장 가능한 인프라를 사용한다는 이점과 함께 고객의 자체 데이터 센터에서 운영하는 기존 네트워크와 매우 유사합니다.
에픽
| 작업 | 설명 | 필요한 기술 |
|---|
| 새 VPC를 생성합니다. | AWS Management Console에 로그인하고 Amazon VPC 콘솔을 연 다음 IPv4 CIDR 범위로 10.0.0.0/25를 가진 Lambda VPC 이름의 VPC를 생성합니다. VPC 생성에 대한 자세한 내용은 Amazon VPC 설명서의 Amazon VPC 시작하기를 참조하십시오. | AWS 관리자 |
| 작업 | 설명 | 필요한 기술 |
|---|
| 첫 번째 퍼블릭 서브넷을 생성합니다. | Amazon VPC 콘솔에서 서브넷을 선택한 다음 서브넷 생성을 선택합니다. 이름 태그에 public-one을 입력합니다. VPC에 Lambda VPC를 선택합니다. 가용 영역을 선택하고 기록하십시오. IPv4 CIDR 블록의 경우 10.0.0.0/28을 입력하고 서브넷 생성을 선택합니다.
| AWS 관리자 |
| 두 번째 퍼블릭 서브넷을 생성합니다. | Amazon VPC 콘솔에서 서브넷을 선택한 다음 서브넷 생성을 선택합니다. 이름 태그에 public-two을 입력합니다. VPC에 Lambda VPC를 선택합니다. 가용 영역을 선택하고 기록하십시오. public-one 서브넷이 포함된 가용 영역을 사용할 수 없습니다. IPv4 CIDR 블록의 경우 10.0.0.16/28을 입력하고 서브넷 생성을 선택합니다.
| AWS 관리자 |
| 작업 | 설명 | 필요한 기술 |
|---|
| 첫 번째 프라이빗 서브넷을 생성합니다. | Amazon VPC 콘솔에서 서브넷을 선택한 다음 서브넷 생성을 선택합니다. 이름 태그에 private-one을 입력합니다. VPC에 Lambda VPC를 선택합니다. 이전에 생성한 public-one 서브넷이 포함된 가용 영역을 선택합니다. IPv4 CIDR 블록의 경우 10.0.0.32/28을 입력하고 서브넷 생성을 선택합니다.
| AWS 관리자 |
| 두 번째 프라이빗 서브넷을 생성합니다. | Amazon VPC 콘솔에서 서브넷을 선택한 다음 서브넷 생성을 선택합니다. 이름 태그에 private-two을 입력합니다. VPC에 Lambda VPC를 선택합니다. 이전에 생성한 public-two 서브넷이 포함된 동일한 가용 영역을 선택합니다. IPv4 CIDR 블록의 경우 10.0.0.64/28을 입력하고 서브넷 생성을 선택합니다.
| AWS 관리자 |
| 작업 | 설명 | 필요한 기술 |
|---|
| 첫 번째 Elastic IP 주소를 생성합니다. | Amazon VPC 콘솔에서 Elastic IP를 선택한 다음 새 주소 할당을 선택합니다. 할당을 선택하고 새로 만든 Elastic IP 주소의 할당 ID를 기록합니다.
이 Elastic IP 주소는 첫 번째 NAT 게이트웨이에 사용됩니다. | 관리자 |
| 두 번째 Elastic IP 주소를 생성합니다. | Amazon VPC 콘솔에서 Elastic IP를 선택한 다음 새 주소 할당을 선택합니다. 할당을 선택하고 이 두 번째 Elastic IP 주소의 할당 ID를 기록합니다.
이 Elastic IP 주소는 두 번째 NAT 게이트웨이에 사용됩니다. | 관리자 |
| 작업 | 설명 | 필요한 기술 |
|---|
| 인터넷 게이트웨이를 만듭니다. | Amazon VPC 콘솔에서 인터넷 게이트웨이를 선택한 후 인터넷 게이트웨이 생성을 선택합니다. 이름으로 Lambda internet gateway를 입력한 다음 인터넷 게이트웨이 생성을 선택합니다. 인터넷 게이트웨이 ID를 기록했는지 확인하십시오.
| AWS 관리자 |
| 인터넷 게이트웨이를 VPC에 연결합니다. | 방금 생성한 인터넷 게이트웨이를 선택한 후 Actions, Attach to VPC(작업, VPC에 연결)을 선택합니다. | AWS 관리자 |
| 작업 | 설명 | 필요한 기술 |
|---|
| 첫 번째 NAT 게이트웨이를 생성합니다. | Amazon VPC 콘솔에서 NAT 게이트웨이를 선택한 다음 NAT 게이트웨이 생성을 선택합니다. NAT 게이트웨이의 이름으로 nat-one을 입력합니다. NAT 게이트웨이를 생성할 서브넷으로 public-one을 선택합니다. 연결 유형으로는 퍼블릭을 선택합니다. Elastic IP 할당 ID에서 앞서 만든 Elastic IP 주소를 선택하고 이 주소를 NAT 게이트웨이와 연결합니다. NAT 게이트웨이 생성을 선택합니다.
| AWS 관리자 |
| 두 번째 NAT 게이트웨이를 생성합니다. | Amazon VPC 콘솔에서 NAT 게이트웨이를 선택한 다음 NAT 게이트웨이 생성을 선택합니다. NAT 게이트웨이의 이름으로 nat-two를 입력합니다. NAT 게이트웨이를 생성할 서브넷으로 public-two를 선택합니다. 연결 유형으로는 퍼블릭을 선택합니다. Elastic IP 할당 ID에서 앞서 만든 두 번째 Elastic IP 주소를 NAT 게이트웨이와 연결합니다. NAT 게이트웨이 생성을 선택합니다.
| AWS 관리자 |
| 작업 | 설명 | 필요한 기술 |
|---|
| 퍼블릭 1 서브넷의 라우팅 테이블을 생성합니다. | Amazon VPC 콘솔에서 라우팅 테이블을 선택한 다음 라우팅 테이블 생성을 선택합니다. 라우팅 테이블 이름으로 public-one-subnet을 입력한 다음 라우팅 테이블 생성을 선택합니다. public-one-subnet 라우팅 테이블을 선택하고, 라우팅 편집을 선택한 다음 라우팅 추가를 선택합니다.
대상란에서 0.0.0.0을 지정한 다음 대상 목록에서 인터넷 게이트웨이 ID를 선택합니다. 서브넷 연결 탭에서 서브넷 연결 편집을 선택하고, 10.0.0.0/28 CIDR 범위가 있는 public-one 서브넷을 선택한 다음 연결 저장을 선택합니다. 변경 사항 저장(Save Changes)을 선택합니다.
| AWS 관리자 |
| 퍼블릭 2 서브넷의 라우팅 테이블을 생성합니다. | Amazon VPC 콘솔에서 라우팅 테이블을 선택한 다음 라우팅 테이블 생성을 선택합니다. 라우팅 테이블 이름으로 public-two-subnet을 입력한 다음 라우팅 테이블 생성을 선택합니다. public-two-subnet 라우팅 테이블을 선택하고, 라우팅 편집을 선택한 다음 라우팅 추가를 선택합니다.
대상란에서 0.0.0.0을 지정한 다음 대상 목록에서 인터넷 게이트웨이 ID를 선택합니다. 서브넷 연결 탭에서 서브넷 연결 편집을 선택하고, CIDR 10.0.0.16/28 범위가 있는 public-two 서브넷을 선택한 다음 연결 저장을 선택합니다. 변경 사항 저장(Save Changes)을 선택합니다.
| AWS 관리자 |
| 프라이빗 1 서브넷의 라우팅 테이블을 생성합니다. | Amazon VPC 콘솔에서 라우팅 테이블을 선택한 다음 라우팅 테이블 생성을 선택합니다. 라우팅 테이블 이름으로 private-one-subnet을 입력한 다음 라우팅 테이블 생성을 선택합니다. private-one-subnet 라우팅 테이블을 선택하고, 라우팅 편집을 선택한 다음 라우팅 추가를 선택합니다.
대상란에서 0.0.0.0을 지정한 다음 대상 목록의 public-one 서브넷에서 NAT 게이트웨이를 선택합니다. 서브넷 연결 탭에서 서브넷 연결 편집을 선택하고, 10.0.0.32/28 CIDR 범위가 있는 private-one 서브넷을 선택한 다음 연결 저장을 선택합니다. 변경 사항 저장(Save Changes)을 선택합니다.
| AWS 관리자 |
| 프라이빗 2 서브넷의 라우팅 테이블을 생성합니다. | Amazon VPC 콘솔에서 라우팅 테이블을 선택한 다음 라우팅 테이블 생성을 선택합니다. 라우팅 테이블 이름으로 private-two-subnet을 입력한 다음 라우팅 테이블 생성을 선택합니다. private-two-subnet 라우팅 테이블을 선택하고, 라우팅 편집을 선택한 다음 라우팅 추가를 선택합니다.
대상란에서 0.0.0.0을 지정한 다음 대상 목록의 public-two 서브넷에서 NAT 게이트웨이를 선택합니다. 서브넷 연결 탭에서 서브넷 연결 편집을 선택하고, 10.0.0.64/28 CIDR 범위가 있는 private-two 서브넷을 선택한 다음 연결 저장을 선택합니다. 변경 사항 저장(Save Changes)을 선택합니다.
| AWS 관리자 |
| 작업 | 설명 | 필요한 기술 |
|---|
| 새 Lambda 함수를 생성합니다. | AWS Lambda 콘솔을 열고 함수 생성을 선택합니다. 기본 정보에서 함수 이름에 Lambda test를 입력한 다음 런타임에서 원하는 언어를 선택합니다. 함수 생성을 선택합니다.
| AWS 관리자 |
| Lambda 함수를 VPC에 추가합니다. | AWS Lambda 콘솔에서 함수를 선택한 다음 앞서 생성한 함수를 선택합니다. 구성을 선택한 다음 VPC를 선택합니다. 편집을 선택한 다음 Lambda VPC 및 두 개의 프라이빗 서브넷을 모두 선택합니다. 테스트용 기본 보안 그룹을 선택한 다음 저장을 선택합니다.
| AWS 관리자 |
| 외부 서비스를 직접적으로 호출하기 위한 코드를 작성합니다. | 선택한 프로그래밍 언어로 IP 주소를 반환하는 외부 서비스를 직접적으로 호출하는 코드를 작성하십시오. 반환된 IP 주소가 Elastic IP 주소 중 하나와 일치하는지 확인하십시오.
| 관리자 |
관련 리소스