티스토리 뷰

 

이전 글들에서 람다와 람다를 사용하기 위해서 Serverless 프레임워크를 사용해봤다.

 

이 상태로도 사용할 수 있지만 사용 편의를 위해서 Serverless에서는 더 다양한 기능을 제공한다.

 

진짜 많은 기능들이 있는데, 내가 사용했던 기능들을 순차적으로 알아보려고 한다.

1. yarn 설정
2. 스테이지 설정 가져와서 쓰기
3. 파일 정보 읽어오기(yaml)
4. 환경변수 설정
5. tag 설정
6. 이미 존재하는 API Gateway 가져와서 사용하기

 

하나씩 알아보자.

1. yarn 설정

가장 첫 글에서 serverless를 설치하면서 yarn도 같이 설치했었는데, 여기서 사용하기 위해서다.

 

package.json에 yarn설정을 해뒀다.

{
  "name": "serverless-options",
  "version": "1.0.0",
  "license": "MIT",
  "private": true,
  "scripts": {
    "deploy function1 dev": "sls deploy -s dev function -f function1",
    "deploy function1 prod": "sls deploy -s prod function -f function1",
    "deploy all dev": "sls deploy -s dev",
    "deploy all prod": "sls deploy -s prod"
  },
  "devDependencies": {
    "serverless": "^3.32.2"
  }
}

$ yarn deploy function1 dev

 

이러면 stage 별로 실행 할 수 있다. -s 옵션이 스테이지 옵션인데, 이 스테이지 옵션도 yml파일에서 사용할 수 있다.

 

2. 스테이지 정보 가져다 쓰기

${sls:stage}

위와 같이 사용하면 -s 로 전달한 파라미터 값을 가져와서 사용할 수 있다.

 

3. 파일 정보 읽어오기

 

대부분의 AWS 리소스들은 dev/prod(혹은 그이상으로 분류)해서 관리할 것이다.

 

그래서 각각의 정보를 config 파일에 나워서 관리하도록 했다.

 

config.[stage명].yml 파일의 정보를 읽어오고 싶을 때 사용하는 방법이다.

${file(./config.${sls:stage}.yml):ddb_table}

 

파일은 별 내용은 없다.

 

config.dev.yml

stage: dev
apigw_id: wopz466br0
logRetentionInDays: 180
account_id: 301591718339
apigw_url: apigw.polarishare-testbed.com 
ddb_table: serverless-ddb-dev

depth도 줄 수 있는데, 여기서는 따로 활용하지는 않았다.

 

depth가 들어가면 .으로 구분자를 주면서 작성하면 된다.

${file(./config.${sls:stage}.yml):ddb_table.name} // 뭐 이런식으로

 

4. 환경 변수 설정

람다의 세부정보를 보다보면 환경변수가 존재한다.

 

위와 같이 설정하면, 람다 코드 내에서 사용할 수 있다.

const { APIGW_URL, DDB_TABLE, STAGE } = process.env;

 

serverless에서 이 변수들을 관리할 수 있는데, serverless.yml 파일에 아래와 같이 작성하면 된다.

functions:
  function1:
    handler: index.handler
    environment:
      STAGE: ${sls:stage}
      APIGW_DOMAIN: ${file(./config.${sls:stage}.yml):apigw_url}
      DDB_TABLE: ${file(./config.${sls:stage}.yml):ddb_table}

 

5. 이미 존재하는 API Gateway를 가져와서 사용하기

HttpApi 설정을 사용하고 별도의 설정을하지 않았다면, 람다 함수와 같은 이름을 갖는 API Gateway가 생성된다.

 

하지만, 이미 사용하고 있는 API Gateway를 재활용 할 수 있다면, 굳이 새로운 리소스를 만들 필요가 없다.

 

serverless에서는 따로 Api Gateway의 id를 지정해서 새로운 리소스의 생성을 막을 수 있다.

 

serverless.yml 파일에 아래와 같이 작성하면 된다.

provider:
  ....
  httpApi:
    id: ${file(./config.${sls:stage}.yml):apigw_id}

 

6. tag 설정

AWS에서는 태그 기반으로 리소스를 제어할 수 있다.

 

정책을 넣을 수도 있고, 엑세스를 제어할 수도 있다.

 

아직 이런 기능까지는 사용해보지 못 했지만, 팀이나 리소스 오너, 작성자를 넣어둬서 관리하기도 한다고한다.

 

 

초기 작성할 때는 태그를 넣지않고 만들어서인지, 중복된 정보나 디폴트로 들어가는 태그들이 지정된 것 같다. 이 태그도 serverless에서 남길 수 있다.

 

GitHub

https://github.com/imsosleepy/serverless-lambda/tree/main/serverless-options

 

마치며

일단은 여기까지 serverless와 람다를 어느정도 써본 것 같다.

 

serverless 프레임워크는 엄청나게 많은 옵션과 기능을 제공하기 때문에 알아보면 더 많은 기능이 있지 싶다.

https://www.serverless.com/framework/docs/getting-started 

 

재밌는건 Serverless 웹사이트에는 AWS 리소스에 대해서도 정리해뒀는데, 여기보다 AWS 리소스에 대해 자세히 써놓은 곳을 못본 것 같다. https://www.serverless.com/aws-lambda/ (람다 외에도 많다)

 

다음 단계는 terraform을 이용해서 리소스를 생성하고 관리해볼 것 같다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함