본문 바로가기
CLOUD/AWS

로컬에서 프로젝트 실행(SAM)

by Rainbound-IT 2021. 8. 23.
반응형

이제 SAM 응용 프로그램이 있습니다. AWS SAM CLI를 사용하여 로컬에서 실행하고 테스트하는 방법을 배우게 됩니다. 이는 일상적인 개발 워크플로의 일부이기 때문에 중요합니다. 애플리케이션이 예상대로 작동하는지 확인하고, 무엇이 잘못되었는지 디버그하고, 변경 사항을 중앙 저장소로 푸시하기 전에 문제를 수정하는 데 도움이 됩니다.

 

 

애플리케이션을 로컬에서 실행하기 전에 애플리케이션에서 사용할 수 있는 타사 라이브러리 또는 종속성을 설치하는 것이 일반적입니다. 이러한 종속성은 런타임에 따라 다른 파일에 정의됩니다(예: NodeJS 프로젝트의 경우 package.json 또는 Python 프로젝트의 경우 requirements.txt).

 

cd sam-app/hello-world
npm install

 

 

 

 

SAM CLI를 통한 실행

 

서버리스 앱을 로컬에서 실행하는 방법에는 1) 개별 Lambda 함수를 호출하는 방법 또는 2) API 게이트웨이를 시뮬레이션하는 로컬 HTTP 서버를 실행하는 방법이 있습니다. 이 워크샵에서는 숫자 2에 중점을 둘 것이지만 SAM Local Invoke 참조에서 개별 함수 호출에 대해 배울 수 있습니다.

 

docker를 실행 시키고 sam-app 경로에서 다음 명령어를 입력합니다.

sam local start-api --port 8080

 

그러면 로컬 서버가 실행될텐데 테스트를 위해 HTTP 요청을 보낼 수 있습니다.

 

브라우저에서 로컬로 들어가면 이상하게 안되는데

curl로 하니까 됐다.

 

 

SAM이 Docker 컨테이너 이미지 lambci/lambda:nodejs12.x를 자동으로 가져오는 방법에 유의하십시오. 이것이 SAM이 Lambda 런타임을 로컬로 시뮬레이션하고 그 안에서 함수를 실행할 수 있는 방법입니다. 첫 번째 호출은 docker pull 명령으로 인해 몇 초가 걸릴 수 있지만 후속 호출은 훨씬 빨라야 합니다.

 

코드 변경하기

앱이 실행되는 동안 sam-app/hello-world/app.js 파일을 열고 간단한 코드 변경을 수행합니다. 예를 들어 hello world 대신 hello my friend를 반환하도록 응답 메시지를 변경합니다. 변경 후 Lambda 핸들러는 다음과 같아야 합니다.

 

참고: 파일을 변경한 후 파일을 저장해야 합니다.

sam 로컬 프로세스를 다시 시작할 필요가 없습니다. 브라우저 탭을 새로 고치거나 CURL 명령을 다시 트리거하여 엔드포인트에 반영된 변경 사항을 확인하십시오.

 

문구를 실행중에 바꾸어 보았다.

 

반영이 바로됐다.

template.yaml을 변경하는 경우에만 sam local을 다시 시작하면 됩니다.

 

 

Unit 테스트 실행

 

일반적으로 소프트웨어 프로젝트와 마찬가지로 단위 테스트를 로컬에서 실행하는 것은 서버리스 애플리케이션에서도 다르지 않습니다. 개발자는 코드 저장소에 변경 사항을 푸시하기 전에 이를 실행합니다. 따라서 프로젝트에 대한 단위 테스트를 실행하십시오.

터미널의 sam-app/hello-world 폴더에서 다음 명령을 실행하여 단위 테스트를 실행합니다.

 

npm run test

오류가 나는것을 볼 수 있습니다.

이유는 우리가 메세지를 바꿧지만 테스트는 업데이트 하지 않았기 때문입니다.

 

sam-app/hello-world/tests/unit/test-handler.js 파일을 열고 새 메시지와 일치하도록 응답에 대한 예상 값을 업데이트합니다. 업데이트 후 단위 테스트는 다음과 같아야 합니다.

 

test-handler.js 파일에서 수정한다.

 

다시 돌려보면 성공하는것을 볼수 있다.

반응형

댓글