-
AWS 를 사용한 서버리스 아키텍쳐 적용기(삽질기) (5) - serverless 프레임워크 1Web Study/Server 2019. 5. 14. 18:03
0. serverless framework란?
serverless framework는 서버없는 아키텍쳐를 배치하고 운영하기 위한 프레임워크 입니다.
-> serverless architecture를 쉽게 설계, 운영하도록 도와주는 툴킷.
1. serverless 설치
공식 홈페이지인 https://serverless.com/ 에 들어가면 아래와 같은 메인 화면이 보입니다.
오른쪽에 커맨드를 보고 따라해보겠습니다!
그전에! npm을 사용하기 때문에 기본적으로 nodejs와 npm이 설치되어 있어야 합니다.
제 기준으로 nodejs는 현재 10.15.0, npm은 6.8.0 입니다.
람다에서 요구하는 노드 버전이 8.10 이므로 최소 8.10 이상으로 설치해야 되겠죠 ?!
준비를 끝낸 뒤에 보이는 것과 같이
npm i -g serverless
명령을 커맨드라인에 입력해줍니다.
serverless 공홈 메인 그 후 바로 밑에 명령어를 타이핑해줘도 되지만 aws-nodejs 라는 다른 템플릿을 사용하도록 하겠습니다.
2. aws-nodejs 템플릿 생성
잠깐 서버리스에서 제공하는 템플릿들이 무엇이 있는지 알아보도록 하겠습니다!
아래와 같은 명령어를 입력하면 어떤 템플릿들이 제공되는지 확인할 수 있습니다.
추가 옵션들도 확인 가능합니다.
serverless create --help
sls create -t aws-nodejs -p sls-sample
sls = serverless, -t = --template 의 줄임말 입니다. aws-nodejs 는 서버리스에서 제공하는 템플릿 중에 하나입니다.
-p sls-sample 명령어는 sls-sample 폴더 안에 해당 템플릿으로 생성하겠다는 뜻입니다.
명령어를 실행하면 다음과 같은 결과를 보실 수 있습니다.
create 입력 후 템플릿 생성.... 완료!
3. 배포
이제
sls deploy
명령어를 실행하면 아래와 같은 결과가 뜹니다.. Error ?!
aws credential 관련 에러내요.
IAM 을 통해 키를 발급받아야 됩니다.
deploy 에러 일단 에러를 해결하기 전에 템플릿으로 생성한 함수를 실행시켜 보겠습니다.
sls invoke local --function hello
명령어 실행 시
로컬에서 함수 실행 와 같은 결과화면을 볼 수 있습니다.
잘되네요 :)
다시 에러로 돌아가서...
공식 홈페이지를 통해 에러를 해결하겠습니다.
https://serverless.com/framework/docs/providers/aws/guide/credentials/ 에서 어떻게 해야되는지 자세하게 나와 있습니다.
그런데 영어를 읽으니까 토할꺼 같다고요??
https://www.youtube.com/watch?v=KngM5bfpttA 에서 영상보시고 편하게 하세요 :)
아무튼 알려주는 대로 따라하면 iam을 통해 자격증명을 생성하고 키를 발급받을 수 있습니다.
그럼 아래와 같이 명령어를 통해 credetial 등록을 해줍니다.
sls config credentials --provider aws --key <키> --secret <비밀키>
*** 만약 이전에 등록했던 aws credential 이 있다면 기본적으로 '~/.aws/credentials' 파일에 [default] 값으로 세팅이 되어있어 새로운 credential 등록이 되지 않습니다.
이 때, 2가지 방법이 있습니다. 덮어 씌우거나 다른 이름으로 credential 생성을 해주거나.
1번의 경우 -o 옵션을 붙여서 위의 명령어를 실행시켜주면 덮어씌워줍니다.
2번의 경우 직접 credentials 파일을 수정해서 아래와 같이 [default] 밑에 넣어주시면 됩니다. 그 후, sls deploy --aws-profile othercredential 옵션을 줘서 배포를 하시면 됩니다!! :)
[othercredential] aws_access_key_id = <키> aws_secret_access_key = <비밀키>
그리고 다시 sls deploy... 를 하기 전에!! region하고 rest api 세팅을 해줘야 합니다. (안그러면 default region인 버지니아에 생성됩니다.)
아까 템플릿 생성할 때 생성된 serverless.yml 파일을 수정해줍니다.
저는 서울인 ap-northeast-2 로 설정해 줬습니다.
stage는 개발 버전으로 만들지, 배포 버전으로 만들지 설정해주는 부분입니다. (dev, prod)
events - http 에서 정말 쉽게 API Gateway를 통해 rest api를 만들 수 있습니다.
service: sls-sample # NOTE: update this with your service name provider: name: aws runtime: nodejs8.10 stage: dev region: ap-northeast-2 functions: hello: handler: handler.hello events: - http: path: hello method: get
위의 과정을 다 끝낸 후 다시 한번
sls deploy
를 입력합니다.
deploy 결과 짜잔!! 자동으로 모든게 생성됐습니다.
API Gateway, S3, lambda, cloudformation .... 이렇게 쉽게?!
직접하려면 이것저것 세팅하고 만들어주기 정말 힘듭니다ㅠㅜ (직접 해봐서 앎.. 프레임워크 짱!)
화면에 보이는 엔드포인트로 콜을 날려서 테스트 해보겠습니다.
4. 테스트
curl https://jyw45r6pjk.execute-api.ap-northeast-2.amazonaws.com/dev/hello
아래와 같은 리턴 값이 돌아옵니다.
api call GET 실행 결과 끝... 너무 쉽네요.
이제 본격적으로 사용해보기 위해 다음 글에선 POST method와 기회가 되면 db 까지 연결해 보겠습니다.
'Web Study > Server' 카테고리의 다른 글
AWS 를 사용한 서버리스 아키텍쳐 적용기(삽질기) (7) - IAM role 세팅 (1) 2019.06.11 AWS 를 사용한 서버리스 아키텍쳐 적용기(삽질기) (6) - serverless 프레임워크 2 (2) 2019.05.22 AWS 를 사용한 서버리스 아키텍쳐 적용기(삽질기) (3) - API Gateway 1 (0) 2019.05.09 AWS 를 사용한 서버리스 아키텍쳐 적용기(삽질기) (2) - 람다함수 2 (0) 2019.05.07 AWS 를 사용한 서버리스 아키텍쳐 적용기(삽질기) (1) - 람다함수 1 (0) 2019.05.07