serverless framework 환경 설정 serverless.yml
이전편 : serverless framework 시작하기
목표
- serverless.yml 파일 수정으로 AWS 배포 환경 설정을 한다.
- 배포 리전, IAM Role부여, vpc 설정, lambda 함수 설정
- 배포 리전 : 서울 리전
- 사용 언어 : python3.8
- 필요 IAM Role : ssm get, s3 put/get
- project 이름 : sncr-data-collectors
- lambda 함수 이름 : naverBand
- 매일 아침 9시에 한번씩 이 함수가 동작해야한다.
프로젝트 디렉토리
코드
serverless.yml
service: sncr-data-collectors
frameworkVersion: "2"
provider:
name: aws
runtime: python3.8
stage: dev
region: ap-northeast-2
iamRoleStatements:
- Effect: "Allow"
Action:
- "ssm:GetParameter"
- "ssm:GetParameters"
- "ssm:GetParametersByPath"
Resource:
Fn::Join:
- ":"
- - "arn:aws:ssm"
- Ref: AWS::Region
- Ref: AWS::AccountId
- "parameter/sncr/*"
- Effect: "Allow"
Action: "s3:PutObject"
Resource:
- "arn:aws:s3:::senior-creator/naver-band/*" # 버킷 이름/폴더이름/*
vpc: # db접속을 위한 vpc 설정
securityGroupIds:
- sg-********************
subnetIds:
- subnet-********************
- subnet-********************
- subnet-********************
package:
individually: true
functions:
naverBand: # 함수명
handler: naver_band.handler.collect #실제 동작하는 함수는 naver_band폴더의 handler.py의 함수 collect()이다.
memorySize: 1024
timeout: 300
environment:
API_TOKEN_PATH: /sncr/api/naver-band/token # 환경변수 경로는 AWS AppConfig의 ParameterStore에 저장한 경로를 사용한다. 다음편에 설명.
CONN_CONFIG_PATH: /sncr/db/data/connection
BUCKET_NAME: senior-creator
package:
include:
- "commons/**"
- "naver_band/**"
exclude:
- "**"
layers:
- Ref: PythonRequirementsLambdaLayer
events:
- schedule:
name: sncr-naver-band-coll-event
rate: cron(0 16 * * ? *) # every 01:00+09:00에 이 함수가 작동할 수 있도록 cloudwatch event를 작성한다.