jetalog.net


최근 AWS Lambda(이하 Lambda)를 활용해 API Backend를 개발하고 있습니다.
처음하는 일은 늘 어려운 법이지만 이틀 내내 어두운 터널에서 벽을 짚으며 걷는 느낌을 줬던 이슈를 정리해봅니다.

 

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

 

마법사를 이용해 빠르게 시작하기

Elastic IP 발급하기

먼저 고정 IP로 사용할 Elastic IP가 필요합니다.

좌측 메뉴에서 탄력적 IP를 선택하고, 새 주소 할당을 눌러서 Elastic IP를 발급받습니다.

빨갛게 강조했는데 '새 주소 할당'보다 눈에 안 들어오는 것 같습니다.

 

이번 예제에서는 52.78.137.222를 발급받았습니다.

 

정보 입력하기

좌측 최상단에 있는 대시보드를 선택하면 우측에 VPC 마법사 시작 버튼이 표시됩니다.
해당 버튼을 눌러서 마법사를 시작합니다.

왜 처음 삽질할 땐 눈에 안 들어왔을까요.

 

'퍼블릭 및 프라이빗 서브넷이 있는 VPC'를 선택합니다.
우측에 표시되는 이미지를 보면 우리가 원했던 그 구성입니다.

아니까 보입니다.

 

표시되는 항목들을 취향에 맞게 입력합니다.
탄력적 IP 할당 ID에는 앞서 발급받았던 IP를 선택합니다.

모든 항목을 입력하고나면 우측 하단에 VPC 생성을 누릅니다.

가만 보면 수동으로 생성하던 그것들입니다.

 

구성이 완료될 때까지 잠시 기다립니다.

이 과정은 네트워크 환경과 무관하게 몇 분 정도 걸립니다.

며칠 전엔 인터넷 게이트웨이도 직접 생성했는데...

 

생성이 완료되면 아래 화면이 표시됩니다.

이 화면을 보고 실소를 금할 수 없었습니다.

 

VPC 구성이 완료되었습니다!

 

AWS Lambda 설정 변경

함수 생성

지난번처럼 내 IP를 확인할 수 있는 함수를 생성하여 확인해보겠습니다.
테스트를 위한 Node.js 코드는 아래와 같습니다.

const http = require('https');

exports.handler = (event, context, callback) => {
    const options = {
        method: 'GET',
        hostname: 'jsonip.com',
    };

    const req = http.request(options, (res) => {
        const chunks = [];

        res.on('data', (chunk) => chunks.push(chunk));

        res.on('end', () => {
            const body = Buffer.concat(chunks);
            const results = body.toString();
            
            console.log(results);
            
            callback(null, {
                statusCode: 200,
                body: results,
            });
        });
    });

    req.end();
};

 

 역시나 제 멋대로 할당된 IP가 출력됩니다.


권한 추가

VPC와 연결을 위해서 함수에 권한을 추가합니다.

 

관리 화면 하단 실행 역할 박스의 역할 편집 링크를 선택합니다.

"~ 역할을 확인"에 링크가 걸려있습니다.

 

하단에 정책 연결을 선택합니다.

표시되는 정책은 다를 수 있습니다.

 

표시되는 정책 중 'AWSLambdaVPCAccessExecutionRole' 권한을 선택하고 정책 연결을 선택합니다.

눈치껏 정책명을 복사하면 편합니다.

 

VPC 설정 변경

이제 함수를 VPC와 연결합니다.
함수 관리 화면 하단의 네트워크 박스로 이동해서 아래와 같이 설정합니다.

 

* VPC는 앞서 생성한 VPC로 지정합니다.
* 서브넷은 반드시 Private 서브넷을 선택합니다.
* 보안 그룹은 외부 연결이 허용되도록 합니다.

Private 서브넷을 2개 이상 선택하는건 '권장 사항'입니다.

 

최종 테스트

다시 테스트를 돌려보면 아래와 같이 발급 받은 EIP, 52.78.137.222가 표시되는 것을 확인할 수 있습니다.

다시 테스트를 돌려보면 아래와 같이 발급 받은 EIP, 52.78.137.222가 표시되는 것을 확인할 수 있습니다.

 

왜 두 번 써지지?

왜 두 번 써지지?

우리가 원했던 그 결과입니다.

 

*

이 글은 총 3편에 걸쳐 작성되었습니다.
1편에서는 AWS Lambda에 고정 IP를 연결하기 위한 배경 지식을 정리했습니다.
2편에서는 VPC 구성을 실제로 진행하는 단계를 정리했습니다.
이번 글에서는 '마법사' 기능을 이용해 빠르게 구성하는 과정을 정리했습니다.