Serverless Framework의 변수 참조와 IAM 권한 설정

H_M·2024년 11월 14일
post-thumbnail

Serverless Framework의 변수 참조

Serverless Framework에서는 opt와 self를 통해 변수를 참조 가능

1. opt

  • 커맨드 라인 옵션을 참조
  • serverless deploy --stage prod 처럼 실행할 때 전달된 옵션값을 가져옴
  • 옵션이 없으면 기본값('dev') 사용
provider:
  stage: ${opt:stage, 'dev'} # 기본값 dev로 설정
# stage가 prod로 설정됨
serverless deploy --stage prod

# stage가 기본값 dev로 설정됨 
serverless deploy

2. self

  • 현재 serverless.yml 파일 내의 다른 속성을 참조
provider:
  stage: ${opt:stage, 'dev'}  # 먼저 정의
  environment: 
    STAGE: ${self:provider.stage}  # 위에서 정의한 stage 값 참조

3. file

  • 환경 변수 설정을 외부 yaml 파일 내 속성을 참조
project/
├── serverless.yml
├── package.json
├── requirements.txt
│
├── src/
│   ├── handlers/
│   ├── services/
│   ├── clients/
│   └── utils/
│
├── tests/
│
└── config/
    ├── dev.yml
    ├── prod.yml
    └── test.yml
# serverless.yml
provider:
  name: aws
  runtime: python3.9
  environment: ${file(./config/${opt:stage}.yml)}
# config/dev.yml
STAGE: dev
API_URL: http://dev-api.example.com
KAKAO_API_KEY: ${ssm:/dev/kakao/api-key}

# config/prod.yml
STAGE: prod
API_URL: http://api.example.com
KAKAO_API_KEY: ${ssm:/prod/kakao/api-key}

Parameter Store 접근을 위한 IAM 권한 설정

Resource: "arn:aws:ssm:${self:provider.region}:*:parameter/${self:provider.stage}/*"

ARN 구조 분석

  • arn:aws:ssm : AWS Systems Manager 서비스 지정
  • ${self:provider.region} : 설정된 AWS 리전
  • '*' : 모든 AWS 계정 ID
  • parameter : Parameter Store 서비스
  • ${self:provider.stage}/* : 특정 stage의 모든 파라미터

실제 변환 예시

# stage: dev, region: ap-northeast-2인 경우
arn:aws:ssm:ap-northeast-2:*:parameter/dev/*

# 접근 가능한 파라미터 예시
/dev/kakao/api-key
/dev/naver/client-id
/dev/google/api-key

이 설정을 통해 Lambda 함수는 지정된 stage에 해당하는 Parameter Store의 값들을 읽기 가능

0개의 댓글