AWS CLI는 AWS 콘솔에서 수행할 수 있는 대부분의 작업을 명령 줄에서 수행할 수 있는 오픈 소스 도구이다. CLI를 사용하면 EC2 인스턴스를 시작하고 중지하며, S3 버킷을 관리하고, IAM 사용자를 만들고, CloudFormation 스택을 배포하고, 다양한 AWS 서비스에 대한 쿼리를 수행하고, API Gateway를 설정하는 등 다양한 작업을 자동화할 수 있다. CLI를 사용하면 쉘 스크립트나 배치 파일에서 작업을 자동화하거나 AWS 서비스를 다른 자동화 도구와 통합하는 데도 유용하다.
brew install awscli
기존에 빌드된 파일을 삭제하고 새로 빌드 된 파일을 업로드해 자동화를 진행하는 과정이다
AWS 프로그래밍 방식으로 사용할 때, API 호출을 할 때 Access Key를 이용해 로그인하는 과정
Access Key - 로그인 아이디라고 생각하면 된다
Secret Access Key - 비밀번호라고 생각하면 된다. Secret Access Key는 유출 되면 안되는 정보이다. 완료 버튼을 누르게 되면 다시 확인이 불가하기 때문에 .csv파일로 저장을 하는 방법을 추천한다.
이 명령은 액세스 키, 비밀 액세스 키, 기본 리전 및 출력 형식을 입력할 수 있는 프롬프트를 연다. 정보를 입력하면 기본 프로필이 설정되며 프로필을 지정하지 않고도 aws
명령을 사용할 수 있게 된다.
aws configure
저장한 access key를 입력 //예시)AKIAXZD43NC6JGUY3A6C
저장한 Secret Access Key를 입력 // 중요한 정보이므로 유출되지 않도록 한다.
ap-northeast-2 //서울서버
엔터로 넘어간다
// 엔터를 입력하면 기본 출력 형식이 지정되지 않아, AWS CLI에서는 응답을 기본값인 JSON 형식으로 출력
aws s3 ls s3://<버킷이름> //예시)aws s3 ls s3://quzi
aws s3 sync
명령은 로컬 디렉토리와 Amazon S3 버킷 간의 동기화를 수행 즉, 로컬 디렉토리와 S3 버킷 간의 파일 또는 폴더 구조가 동기화되는 것이다.
aws s3 sync <source> <destination> [options]
<source>는 로컬 디렉토리의 경로
<destination>은 S3 버킷의 경로
[options]은 선택적으로 추가 설정을 지정할 수 있는 옵션
즉 나의 경우는 아래와 같이 작성하면 실행된다
aws s3 sync build/ s3://quzi --delete
-acl
: 복사한 객체에 대한 S3 객체 ACL(Access Control List) 설정-delete
: <source>
에는 없지만 <destination>
에 있는 객체 삭제-exclude
: 특정 파일 또는 폴더를 동기화에서 제외-include
: 특정 파일 또는 폴더를 동기화에 포함-dryrun
: 동기화를 시도하지 않고 동기화 작업의 결과만 출력-size-only
: 파일 크기만 확인하고 변경된 파일을 동기화하지 않음-no-sign-request
: 요청에 서명하지 않고 전송-profile
: 사용할 AWS 프로필 지정-region
: 사용할 AWS 리전 지정--delete 옵션을 이용해 기존 파일을 삭제한 후 재 업로드하여 정상적으로 실행된 경우이다.
이제 AWS S3에서 파일을 삭제하고 업로드하는 과정을 명령어로 간단하게 처리할 수 있게 됐다.
추가로 package.json
에 명령어를 추가해 React 프로젝트에서 바로 처리할 수 있다.
"deploy": "npm run build && aws s3 sync build/ s3://quzi --delete"
위의 명령어를 실행하면 npm run build
명령어로 React 프로젝트를 빌드한 후, aws s3 sync
명령어를 사용하여 빌드된 파일들을 S3 버킷으로 업로드하고, 이전 버전 파일들은 --delete
옵션을 이용해 삭제하는 과정이다.
원티드 프리온보딩 9차 참여 과정