티스토리 뷰

shell script(sh) profile 받아서 없으면 메세지 출력하고 종료 있으면 배포


serverless 프레임웍으로 aws lambda를 개발하고 배포 할 때 각 profile(dev | qa | prod)별로 주소도 다르고 바뀌는게 있는데 이걸 바꿔주는 방법으로 배포 할 때 배포 스크립트를 짜서 배포를 할 수 있다.


deploy.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
profile="$1"
 
if [ "$profile" == "" ]; then
    echo "please enter profile like: sh deploy.sh dev"
    exit 0
fi
 
echo "--------- Start Deploy --------"
echo "AWS_PROFILE: ${profile}"
export AWS_PROFILE=$profile
echo ${AWS_PROFILE}
 
# 작업함
 
sls deploy --stage $profile
 
# 작업 끝나고 AWS_PROFILE 다시 바꿔줌
export AWS_PROFILE=dev
echo ${AWS_PROFILE}
cs

sls가 aws profile을 

sls deploy할 때 profile 설정을 할 수 있다.



serverless.yml

1
2
3
4
5
6
7
8
service: <service_name>
 
provider:
  name: aws
  runtime: nodejs8.10
  stage: ${opt:stage'dev'}
  region: ${file(./${self:provider.stage}.json):region}
  role: ${file(./${self:provider.stage}.json):role}
cs

${opt:stage'dev'}

위와 같이 옵션을 주면

sls deploy --stage qa

이렇게 deploy 명령을 실행 할 때 --stage라는 변수로 serverless.yml 쪽으로 값을 전달 할 수 있다.

, 'dev'이렇게 해놓으면 파라메터를 넣지 않으면 기본값은 'dev'라는 뜻이다.


dev.json

1
2
3
4
5
{
  "region":"us-west-2",
  "role":"arn:aws:iam::<role>",
  "dynamodb_stream_arn":"arn:aws:dynamodb:<stream_arn>"
}
cs

위에서 ${file(./${self:provider.stage}.json):region} 이렇게 file을 읽어서 값을 바인딩하게 해놓으면

예를들어 --stage로 넘긴 값이 dev일 경우 dev.json을 읽어서 그 안에 있는 region, role등의 변수를 읽을 수 있다.



end.


728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함