회사에 AWS Lambda가 거의 110개 정도되는데 이 소스코드를 GitHub에 모두 올려서 보고싶었다.(그냥 생각만 했었어야했는데) 하나하나 하다가 결국 찾는다 shell script 만든다 shell script
일단 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 레포로 만든 후 푸쉬해보자!
#!/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에 들어가면 정상적으로 레포가 들어간것을 볼수있다.