본문 바로가기
IT 정보

AWS Lambda와 API Gateway 연결하기

by 완기 2022. 2. 24.
728x90
반응형

우리 회사에서 사용하는 서비스에 백엔드 서버에 몰리는 트래픽을 일부 분리하기 위해

람다로 일부를 분리했다.

 

이를 적용하면서 사용했던 방법을 정리한다.

 

일단 개발 환경은 이렇다.

 

AWS Lambda (node.js 14.x)

Elastic Cache(Memcache)

API Gateway

 

이렇게 사용했고, 이 3가지는 다 같은 VPC에 속해야 하며, 람다를 제외하곤 생성 과정을 생략한다.

 


1. 람다 생성

 

 

람다 페이지에 들어가서 함수 생성을 클릭하면 함수 생성을 클릭한다.

간단하게 작성할 것이기에, 위와 같이 함수를 생성했다.

 

현재 계정에 람다 함수 삭제 권한이 없어 이미 생성된 람다로 예제를 대체함.

 

람다 함수가 잘 생성됐다면,

상단에 간단하게 테스트를 누르고 이후 등장하는 팝업창에 확인을 누른다.

 

 

이후 테스트를 눌러보면 결과가 위 이미지와 같이 뜨면 잘 생성된 것이다.

 


2.API Gateway 생성

 

 

API Gateway에 가서 생성을 누르면

HTTP API로 구축을 선택했다.

 

통합을 누르고 람다를 선택한 다음 리전을 본인에 맞는 리전으로 선택한다.

 

그리고 리전 우측에 처음에 생성했던 람다를 선택한다.

 

다음을 클릭하면

 

경로를 구성할 수 있는데, HTTP Method를 선택하고 경로를 루트 경로로 설정했다.

우측에는 통합 구성인데, 람다의 이름이다.

 

스테이지는 자동 배포를 활성화한 상태로 기본으로 설정했다.

게이트웨이는 단지 API를 받기 위해서다.

 

그리고 다음을 누른 후, 마지막 내가 입력했던 정보를 확인하고 생성해준다.

 

이후 API 탭에서 내가 생성한 Gateway 가면 URL호출 부분에 해당 API를 호출할 수 있는 주소를 제공한다.

맨 처음에 생성했을 때, 지정했던 경로를 통해 주소를 호출하면 람다를 실행하여 그 리턴 값을 받을 수 있다.

 


3. 람다와 API Gateway 연결

 

 

아까 생성했던 람다로 이동해서 구성 -> VPC로 가면 람다의 VPC를 설정할 수 있다.

 

내가 사용하고자 하는 서비스의 VPC와 일치시켜준다.

 

그다음 트리거 탭으로 이동하여 트리거 추가를 눌러준다.

 

API 게이트웨이를 선택하고 아까 API Gateway 이름을 골라준다.

 

 

이후 엔드포인트 주소에 설정한 경로대로 요청을 보내면 람다의 리턴 값을 받을 수 있다.

 

참고로 API 게이트웨이 연결 중, 권한 관련 오류가 발생한다면 실행 역할에

 

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeNetworkInterfaces",
                "ec2:CreateNetworkInterface",
                "ec2:DeleteNetworkInterface",
                "ec2:DescribeInstances",
                "ec2:AttachNetworkInterface"
            ],
            "Resource": "*"
        }
    ]
}

이 권한을 추가하면 된다.

728x90
728x90

댓글