[AWS] EC2 - Set Alias To Deploy

1 minute read

OS-macOS AWS-EC2


Intro

EC2 인스턴스에 scp 명령어를 통해서 파일을 업로드하는 방법은

[AWS] EC2 - Connect To Instance 에 정리해두었다.

하지만, 로컬에서 파일을 새롭게 변경하고 (업데이트 | 업그레이드 | 버그수정 등) scp 를 통해 파일을 업로드하면 기존의 파일을 덮어씌우는 형태가 된다.

이 때 배포하는 입장에서 고려해야할 것이 있다.
로컬의 새로운 버전에서 기존의 파일 중에 제거한 것이 있을 경우
EC2 인스턴스에는 해당 파일이 그대로 남고, 나머지 파일이 덮어씌워지는 형태가 된다.

의도치않게 잔재된 파일에 의해서 오류가 발생할 수 있으므로, EC2 인스턴스의 업로드된 파일과 로컬의 파일을 동일하게 하는 것이 좋을 것이다.

그러기 위해서는 EC2 인스턴스에 이미 업로드 되어있던 구버전의 파일들을 모두 제거하고,
새로운 버전의 파일을 업로드해야한다.

Process Summary

EC2 인스턴스의 구버전 파일 모두 제거 → 새로운 버전의 모든 파일 EC2 인스턴스에 업로드


문제점은 ssh 명령어, scp 명령어의 경우 반복적으로 작성하는 것이 번거로울 정도로 길이가 상당히 길다.
따라서, 이러한 명령어를 단순화 시킬 필요가 있다.



Make Abbreviated Command

셸 명령어인 alias 를 통해 ssh 접속, scp 명령어를 통한 업로드를 간단하게 할 수 있다.

본인의 셸 프로필 파일을 열어보자. (zsh 사용자는 ~/.zshrc 파일이 해당된다.)


Shell(셸) 에서의 변수선언 및 할당

alias 명령어를 사용하기 전에 변수를 먼저 할당하는 것이 직관성과 코드를 작성하는 과정에서도 편리함을 제공한다.

EC2_PrivateKey='<Path>'
EC2_ADDR='<UserName>@<PublicDNS>'
EC2_ProjectPath='<Path>'
LOCAL_ProjectPath='<Path>'
  • EC2_PrivateKey : 본인의 PrivateKeyFile .pem 파일의 경로를 입력
  • EC2_ADDR : <UserName>@<PublucDNS>
  • EC2_ProjectPath : 로컬 프로젝트 디렉토리를 업로드할 EC2 인스턴스의 경로
  • LOCAL_ProjectPath : 로컬 프로젝트 디렉토리의 경로

위와 같이 할당한 변수들은 Shell 에서 $ 을 앞에붙일 경우 호출이 가능하다. (ex. $EC2_ADDR)


alias

위에 할당한 변수들과 alias 명령어를 통해 단축 커맨드를 만들어보자.

  • Shell 에서 && 의 의미 : && 이전 명령어 실행(Enter) 후, 이후 명령어 실행

  • "' 사용에 주의를 해야한다. (변수선언시에 ' 을 사용했음을 잊지말자)

alias ec2_connect="ssh -i $EC2_PrivateKey $EC2_ADDR"
alias ec2_delete="ec2_connect rm -rf $EC2_ProjectPath"
alias ec2_upload="scp -i $EC2_PrivateKey -r $LOCAL_ProjectPath $EC2_ADDR:$EC2_ProjectPath"
alias ec2_deploy="ec2_delete && ec2_upload"

이제 터미널에서 ec2_connect 라는 명령어만 작성해도 본인의 EC2 인스턴스에 접속이 가능하며,
ec2_deploy 명렁어를 통해서 EC2 인스턴스의 프로젝트 파일을 제거하고, 로컬의 프로젝트 파일을 업로드할 수 있다.
(즉 ec2_deploy 는 Intro 에서 설명한 지우고 업로드하는 과정을 한번에 처리해준다고 볼 수 있다.)

upload 와 delete 과정이 이해가 가지 않을 경우
[AWS] EC2 - Connect To Instance : Upload files to instance 참고

위에 작성한 변수와 alias 코드는 예시에 불과하다. 사용자가 편한대로 여러가지를 작성하여 생산성을 증가시켜보자.

Leave a comment