Notice
Recent Posts
Recent Comments
관리 메뉴

즐겁게, 코드

AWS CLI & Lambda 로 서버리스 백엔드 구축하기 본문

☁️ 클라우드/AWS

AWS CLI & Lambda 로 서버리스 백엔드 구축하기

Chamming2 2021. 1. 6. 14:43

이번 글에서는 AWS Lambda 서비스를 활용하는 방법을 다룬다.

바닥부터 배포를 경험해보기 위해 serverless 프레임워크나 AWS 웹 콘솔을 사용하는 대신 aws-cli를 활용하는 방법을 정리한다.

1. aws-cli 설치

실습을 위해 AWS 계정과 aws-cli를 설치해준다.

설치 방법은 운영체제마다 상이하니 AWS 문서 에서 본인 OS에 맞게 설치하자.

aws-cli 설치가 끝나면 터미널에서 aws --version 커맨드를 통해 설치가 완료되었는지 확인한다.

2. 사용자 계정 연동하기

다음은 aws-cli와 AWS 계정을 연동하기 위해 [내 보안 자격 증명] 메뉴에 들어간다.

이곳이 IAM 대시보드인데, 사용자 인증 및 권한 부여 등의 기능을 모두 여기서 관리한다.

aws-cli와의 연동을 위해 IAM 대시보드 좌측의 [사용자] 메뉴에서 새로운 사용자를 추가한다.

액세스 유형은 cli에 최적화된 [프로그래밍 방식 엑세스]를 선택한다.  

 

다음은 사용자 권한을 부여해줘야 하는데, 내 코드를 람다에 업로드하기 위해 [기존 정책 직접 연결] 에 들어가 'AWSLambdaBasicExecutionRole'  권한을 사용한다. (AWSLambdaFullAccess 권한을 사용해도 된다.)

다음 단계의 태그는 무시하고 사용자 생성을 완료하면 액세스 키 묶음이 나온다.

여기서 절대 바로 넘어가지 말고 터미널로 돌아가 aws configure 커맨드를 입력해 발급받은 액세스 키와 비밀 키를 입력해준다. (리전명과 output format은 아래 스크린샷대로 하지 말고 각각 ap-northeast-2json으로 지정한다.)

액세스 키와 비밀키를 입력하고 아래 두 항목은 ap-northeast-2 와 json 으로 수정해준다. 

3. 역할 만들기

IAM 메뉴로 돌아와 [역할] 메뉴에서 역할 만들기를 선택한다.

역할 종류는 AWS 서비스를 선택하고, 사용 사례는 Lambda를 선택한다.

다음으로는 사용자 연동 단계에서처럼 역할의 권한을 지정해줘야 하는데, 사용자와 마찬가지로 람다 사용을 위한 AWSLambdaBasicExecutionRole 권한을 부여한다.

키-값 페어 입력은 무시하고 역할명과 설명을 입력해 역할 생성을 완료한다.

역할이 생성되었다면 생성한 역할을 선택해 역할 ARN을 복사해 두자. (내 코드를 업로드할때 필요하다.)

4. 코드 업로드

이제 내 코드를 AWS에 업로드해보자.

// index.js
exports.handler = async(event, context) => {
    return event.name;
}

event 매개변수에는 요청 내용 등 이벤트 정보가 들어가는데, POST 메서드로 전송받은 이름을 리턴하는 코드다.

코드를 작성했다면 파일을 zip 파일로 압축한다.

 

그리고 아래 커맨드를 터미널에 입력한다.

aws lambda create-function --function-name (설정할 함수 이름) --zip-file fileb://(파일의 절대 경로) --handler index.handler --runtime nodejs12.x --role (역할 ARN 키)

파일의 절대 경로는 파일 탐색기나 파인더에서 압축 파일이 존재하는 경로를 그대로 복사해주면 된다.

성공했다면 이렇게 코드 정보가 JSON으로 출력된다. (여기서 권한 오류가 출력된다면 역할 권한을 AWSLambdaFullAccess 로 바꿔준다.)

이제 업로드한 함수를 사용해보자.

5. 게이트웨이 연결

다시 람다 메뉴로 돌아오면 내가 업로드한 함수가 있을 것이다.

[트리거 추가] 를 클릭해 API 게이트웨이 를 추가해주자.

서버리스로 백엔드를 구성하기 위해 API 유형을 REST API로 설정하고, 보안 유형은 [열기] 를 선택한다.

이제 내 함수를 실행할 수 있는 엔드포인트까지 생성되었다.

하지만 엔드포인트에 접속하면 아직 내부 서버 오류를 출력하는데, 아직 요청 응답을 지정하지 않았기 때문이다.

상단의 게이트웨이명을 선택해 API 설정 메뉴에 진입한다.

API 설정 메뉴에서는 메서드 생성을 클릭해 HTTP 메서드 중 'POST' 요청에 대한 응답을 지정해보자.

이제 POST 요청을 수신할 경우 수행할 함수를 지정할 수 있다.

aws-cli를 통해 업로드한 함수명을 입력해주자. (만약 기억나지 않는다면 AWS Lambda 메뉴로 돌아가 생성된 함수 목록을 확인할 수 있다.)

 

이제 함수를 테스트해보자.

[테스트] 를 클릭한 후 나타나는 화면에서 응답 본문을 지정할 수 있다.

본문을 사진처럼 구성하고 응답이 어떻게 돌아오는지 보자. 

REST api 중 POST 요청이 정상적으로 처리되는 것을 확인할 수 있다.

이제 AWS 콘솔 밖에서도 사용할 수 있도록 API를 배포하자.

배포 스테이지는 default 로 지정하고, 좌측의 스테이지 메뉴에 진입하면 서버의 엔드포인트를 확인할 수 있다.

이제 첫 번째 서버리스 API 서버가 배포된 것을 확인할 수 있다.

반응형
Comments
소소한 팁 : 광고를 눌러주시면, 제가 뮤지컬을 마음껏 보러다닐 수 있어요!
와!! 바로 눌러야겠네요! 😆