[AWS/Git] aws lambda all export 한 zip 파일 모두 레포 생성 후 push 하기

리미·2020년 10월 15일
0

노가다 장인 ^*^

회사에 AWS Lambda가 거의 110개 정도되는데 이 소스코드를 GitHub에 모두 올려서 보고싶었다.(그냥 생각만 했었어야했는데) 하나하나 하다가 결국 찾는다 shell script 만든다 shell script

AWS Lambda all export

일단 AWS CLI를 설치 해야한다
설치 하는 방법은 아래 링크를 참고
https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-cliv2-mac.html

그리고 aws configue로 output을 text로 맞춰준 후 아래링크의 shell script를 돌린다.
저기 명령어 모두 설치되어있는지 한줄씩 테스트해보고 돌리길바람
https://gist.github.com/nemani/defdde356b6678352bcd4af69b7fe529

저걸 돌리면 특정폴더에 zip파일로 생성되어있을것이다!
자 이제 저걸 github 레포로 만든 후 푸쉬해보자!

Zip파일로 레포 생성 후 푸쉬하기

#!/bin/zsh
dir="$HOME/lambda_functions"
commit_message="[ADD] AWS lambda function, README files"

for file in $dir/*
do
    base=$(basename -s ".zip" $file)
    sed -i "" "1s/.*/# $base/" README.md
    gh repo create rimi-dev/$base -y --private -d "[AWS Lambda  _Virginia] $base"
    unzip -o $file -d $HOME/$base
    cp -rp README.md $HOME/$base/
    cd $HOME/$base
    git add . -A
    git commit -m "$commit_message"
    git push --set-upstream origin master
    cd $HOME
done
  • #!/bin/zsh : 나는 zsh말고도 sh 등으로도 변경가능하다
  • dir="$HOME/lambda_functions" : lambda 함수 zip파일이 모여있는 디렉토리 경로를 잡는다
  • commit_message="[ADD] AWS lambda function, README files" : github에 commit할때 적을 commit message를 적는다
  • for file in $dir/* : for문을 해당 디렉토리에 파일 모두 차례대로 돌림. 쓰면서 생각난건데 $dir/*.zip라고 걸어도 될것같다.
  • base=$(basename -s ".zip" $file) : 확장자 zip를 제외한 순수한 파일 이름만 base변수에 할당한다
  • sed -i "" "1s/.*/# $base/" README.md : 이미 해당 경로에 생성되어있는 README.md 파일 첫번째 줄에 # 파일이름을 추가한다. 보통 리눅스 명령어엔 이런식으로 나오는데, sed -i "1s/.*/# $base/" README.md 현재 MAC에선 작동하지않는다. -i 옵션 뒤에 파라미터가 필수값이라서 ""을 꼭 넣어주도록한다
  • gh repo create rimi-dev/$base -y --private -d "[AWS Lambda] $base" : 해당경로rimi-dev/$base에 파일이름으로 GitHub에 Repo를 생성한다. 이때 -y로 이미 같은이름이 있는 레포엔 현재로 덮어써주고, private하고, description이 [AWS Lambda] 파일이름 레포를 생성한다. GitHub CLI가 설치되어야한다.(설치링크)
  • unzip -o $file -d $HOME/$base : zip파일을 $HOME/$base경로에 압축을 푼다. 같은 이름이 있을경우 강제로 덮어쓴다. (github 레포를 적용할 경로가 될것임)
  • cp -rp README.md $HOME/$base/ : 작성된 README.md를 압축을 푼 경로에 복제한다.

그 이후는 해당 경로로 들어가서 github에 푸쉬하는 거니까 설명 생략

그러고 github에 들어가면 정상적으로 레포가 들어간것을 볼수있다.

profile
Python이 하고싶은데 자꾸 Flutter 시켜서 빡쳐서 만든 블로그

0개의 댓글