본문 바로가기
Web development/Infra

[AWS] SAM Local, CodeStar를 사용해 Lambda 로컬테스트 및 자동배포환경 만들기

by 자몬다 2020. 4. 9.

본인 및 협업할 멤버는 이미 AWS 가입이 되어 있고, AWS Management Console Access 권한이 있다고 가정한다.

 

준비물

  • AWS 계정 및 콘솔 액세스 권한
  • Docker
  • Homebrew
  • Sourcetree(선택)

aws-sam-cli

우선 aws-sam-cli 설치가 필요한데, npm package는 deprecated 되었으므로 Homebrew로 설치한다.

$ brew tap aws/tap
$ brew install aws-sam-cli
$ sam —v // 설치 확인

혹시.. 버전 확인을 했을때 최신 버전을 설치했는데도 아래와 같은 알림이 뜬다면

moro-test-lambda-API ateam$ sam --version
A newer version of the AWS SAM CLI is available!
Your version:   0.2.11
Latest version: 0.47.0
See https://github.com/awslabs/aws-sam-local for upgrade instructions

sam version 0.2.11

link가 필요하다. brew link aws-sam-cli로 링크를 만들어주자.

moro-test-lambda-API ateam$ brew link aws-sam-cli
Linking /usr/local/Cellar/aws-sam-cli/0.47.0... 1 symlinks created

 

그룹 만들고 사용자 추가하기

Resource Grops>Groups>Create New Group 버튼 클릭
생성할 그룹 이름을 입력하고 다음을 누른다.
권한을 검색해서 AWSCodeStarFullAccess를 선택하고 다음을 누른다.
그룹이 생성된 것을 볼 수 있다. 그룹 이름을 클릭해서 상세정보 화면으로 들어간다.
Users탭을 눌러 Add Users to Group 버튼을 클릭한다.
추가할 멤버를 체크해서 그룹 멤버로 추가해준다.

 

Git credential & git clone

Git credential을 얻어보자.

IAM>유저 검색>이름 클릭>Security Credentials탭>HTTPS Git credentials for AWS CodeCommit>Generate Credentials 클릭
생성되면 알림창이 뜬다. Download credentials로 저장해두자. 잘 보관해야 한다!

 

CodeStar 프로젝트 생성

CodeStar 서비스로 이동해 Create a new project를 누른다. 프로젝트가 아직 하나도 없다면 다른 화면이 뜰 수 있다.
Node.js를 선택했다.
프로젝트 이름을 입력하고, AWS CodeCommit을 선택한다(default). 다음을 누른다.
적당히 읽어보고 Create Project를 누른다.
Command line tools를 이용할 것이다. 조금 기다리면 하단에 Clone repository URL이 나타난다. 나타날때까지 좀 기다려준다.

프로젝트가 생성중이므로 완료될때까지 조금 기다린다.

위 화면에서 벗어났다면, CodeStar>상단 connect tools를 클릭하면 다시 주소를 확인할 수 있다.

 

git clone [주소]로 받아도 되지만, 소스트리를 사용해보자.

소스트리 New...>Clone from URL 선택
Source URL에 아까 복사해준 주소를 입력하자. 앞에 git clone이 붙어있는 경우 지워줄 것.                 (나는 이미 추가한 상태라 not valid가 떴다.)

붙여넣기 하고 나면 username과 password를 입력하라고 하는데, 아까 얻은 Git credential정보를 입력하면 된다.

그러면 clone이 완료된다.

 

로컬에서 실행하기

이제 받은 코드를 로컬에서 실행시켜보자.

도커가 켜져있어야 한다. 

터미널에서 프로젝트 디렉토리로 가서 명령어를 실행한다.

참고로 npm install은 할 필요 없다..

$ sam local start-api -p 4000

 

실행하는데 조금 걸린다. 

성공적으로 실행됐을 때의 로그

이제 http://localhost:4000 으로 접속하면 아래와 같은 페이지를 만날 수 있다.

Congratulations! 근데 저 파랑새 로고 낯익은 것 같다.

혹시나.. 아래와 같은 ERROR: None of the Serverless function in your SAM template were able to be mounted 에러가 뜬다면

SAM이 제대로 설치되지 않을 걸 수 있다. 

$ sam -v 했을때 최신버전을 설치했는데도 최신버전이 있으니 설치하라고 뜬다면... 내가 겪은 문제와 같은 문제일 듯?

$ brew link aws-sam-cli 해주면 된다.

다시 $ sam local start-api -p 4000 하면 정상 화면을 확인할 수 있다.

 

배포하기

코드를 약간 수정해보자. 변화를 알 수 있도록 public/index.html의 Congratulations! 옆에 "moro"라는 문자열을 추가했다.

localhost:4000 에서 잘 바뀌었는지 확인해보자.

이제 master 브랜치에 커밋후 푸시한다.

그후 마스터에 푸시하고 Codestar로 가보자.

우측 화면을 보면 어떤 단계가 in progress 파란색으로 변하면서 배포 진행상황을 알수있다.

생각보다 꽤 걸리더라...

Succeeded되면 endpoint로 가서 변경사항이 적용되었는지 확인해보자. 

정상이라면 로컬에서와 같이 코드 변경사항이 적용되어 있을 것이다.

 

댓글