Serverless Framework
- 필요한 AWS 인프라 리소스와 함께 AWS Lambda 기능을 개발하고 배포하는데 도움이 된다.
- 즉시 사용 가능한 구조, 자동화 및 모범 사례를 제공하는 CLI
- 기능 및 이벤트로 구성된 정교한 이벤트 중심의 서버리스 아키텍처를 구축하는데 집중 가능
- Functions
- 서버리스의 애플리케이션 코드 - AWS Lambda 함수에서 배포 및 실행
- 데이터베이스에 사용자 저장, 데이터베이스에서 파일 처리, 예약된 작업 수행 등..
- https://www.serverless.com/framework/docs/providers/aws/guide/functions
- 서버리스의 애플리케이션 코드 - AWS Lambda 함수에서 배포 및 실행
- Events
- 다른 AWS 리소스에서 이벤트를 가져와 트리거
- API Gateway URL에 대한 HTTP 요청, S3 버킷에 업로드 된 새 파일, CW 알림, SNS 토픽 메시지 ...
- https://www.serverless.com/framework/docs/providers/aws/guide/events
- 다른 AWS 리소스에서 이벤트를 가져와 트리거
- Resources
- AWS 인프라 구성 요소
- DynamoDB table, S3 bucket, SNS topic, ..
- https://www.serverless.com/framework/docs/providers/aws/guide/resources
- AWS 인프라 구성 요소
- Services
- Framework의 구성 단위
- serverless.yml (배포할 함수, 이벤트 및 AWS 리소스를 정의하는 파일) 을 통해 구성
- https://www.serverless.com/framework/docs/providers/aws/guide/services
- 대체 형식: JSON, JavaScript, TypeScript로도 정의 가능
- Plugins
- 서버리스 프레임워크의 기능을 덮어쓰거나 확장 가능 (사용자 지정 JavaScript 코드)
- https://www.serverless.com/framework/docs/guides/plugins
나의 cloud 환경은 AWS 이며, Windows 환경에서 테스트 했다.
(현재 내 windows는 AWS CLI 설치가 완료되었고, npm도 설치되어 있음)
Serverless Framework 설정
# serverless framework 설치
npm install -g serverless
# 새로운 서버리스 프로젝트 생성
serverless
serverless framework에 로그인하고 들어가보면,
위와 같이 생성되어 있음을 알 수 있다.
후에 deploy now의 질문에 yes로 대답하면..
이렇게 뜨는데 현재 내가 설정해둔 default region과 serverless에서 제공해주는 리전이 달라서 그러는 것 같다..
(현재는 테스트용이라 AWS 계정의 region을 us-east-1으로 변경할꺼고 나중에 프로젝트를 제대로 하려면 내가 원하는 리전으로 설정하는 방향으로 진행해야겠다.)
AWS 자격증명 설정
https://www.serverless.com/framework/docs/providers/aws/guide/credentials/
serverless-test user를 추가하자(IAM)
테스트니까 일단 Admin으로 박자.(프로덕션이나 중요한 프로젝트의 경우 권한을 자세히 설정하는게 좋다.)
Serverless Deploy
위와 같이 잘 실행됨을 알 수 있다..!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Test
serverless invoke -f hello
# 로그 호출 및 표시:
serverless invoke -f hello -- log
serverless logs -f hello
# Tail logs
serverless logs -f hello --tail
# serverless 제거
serverless remove
해당 serverless framework GUI 상에서 모니터링도 가능하다.
serverless remove를 사용하면 알아서 또 다 지워준다.
생성된 프로젝트를 까보면..
이런 느낌이고 사용자가 작성해야하는 파일의 경우 handler.js, serverless.yml 정도 인듯?
handler.js는 lambda에 들어가야할 함수고 (사용자 지정 함수 느낌)
serverless.yml의 경우 아래와 같이 생성되었다.
org: realyun99
app: test-nodejs-serverless
service: test-nodejs-serverless
frameworkVersion: '3'
provider:
name: aws
runtime: nodejs14.x
functions:
hello:
handler: handler.hello
위의 테스트 환경은 예제이고 직접 내가 템플릿을 만들어보고 사용자의 입장에서 무엇을 해야하는지 파악하려 한다.
# 어떤 명령어 옵션이 있는지 확인
serverless create --help
serverless create --template aws-go --path "C:\Users\HP\test-go"
go언어의 템플릿으로 해당 경로에 test-go 폴더를 생성하고 넣어라의 느낌!
serverless.yml 안에 어떻게 AWS 환경 구성하고 싶은지 적는 것 같다... 아무래도...? ㅋㅋㅋㅋ
https://www.serverless.com/framework/docs/providers/aws/guide/serverless.yml
(serverless.yml)
- AWS 인프라와 Serverless Framework로 배포할 Lambda 함수의 정보 및 설정을 담은 파일
- CloudFormation의 문법 사용 가능
- 다양한 Serverless Framework 플러그인 사용 가능
- ex) 500개 리소스 제한인 CloudFormation 스택을 Nested Stack으로 만들어주는 플러그인
❗ 결론적으로 serverless.yml 파일이랑 lambda 함수에 들어갈 코드만 잘 작성하면 된다! serverless 파일이 관건일 듯! ❗
'Cloud' 카테고리의 다른 글
Cloud Service Providers (0) | 2021.05.08 |
---|