AWS CLI(Command-Line Interface)란?
AWS CLI(명령줄 인터페이스)는 AWS 서비스를 관리하는 통합 도구입니다. 도구 하나만 다운로드하여 구성하면 여러 AWS 서비스를 명령줄에서 제어하고 스크립트를 통해 자동화할 수 있습니다.
AWS CLI 시작하기
사전 조건
1) AWS 가입하기
- AWS에 가입하여 Root 계정을 생성합니다.
2) IAM 사용자 계정 생성
- 생성한 Root 계정으로 로그인한 후 IAM 콘솔로 들어가 IAM 사용자를 만들어 줍니다.
과정: 사용자 이름 - Administrator 그룹생성 - Administrators 정책 - AdministratorAccess
3) IAM 사용자의 액세스 키 ID 및 보안 액세스 키 생성 & 저장
- IAM 사용자를 만들면 엑세스키와 보안 액세스 키를 생성할 수 있는데 이는 나중에 AWS CLI에서 로그인할 때 필요하기 때문에 잘 저장해놓습니다.
과정: IAM 사용자 -> Security credentials(보안 자격 증명) 탭 -> Create access key(액세스 키 생성) ->저장
AWS CLI 설치하기
1) window 기준 설치 방법
- AWS CLIWindows 용 MSI 설치 관리자 (64비트) 설치
cmd or window powershell 실행 후 (관리자 권한으로 실행) 아래 명령어 실행
C:\> msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi
- 설치 완료 후 확인
CMD or Window Powershell 실행 후 (관리자 권한으로 실행) aws --version 명령어 실행 및 결과 확인
C:\> aws --version
aws-cli/2.4.5 Python/3.8.8 Windows/10 exe/AMD64 prompt/off <-- 이렇게 나오면 정상 설치
빠른 설정 (사용자 추가)
1) aws에 기본 사용자 등록하기(default)
- CMD or Window Powershell 실행 후 (관리자 권한으로 실행) aws configure 명령어 실행합니다.
저장해 둔 엑세스 키 ID 및 보안 액세스 키 입력하고 기본 리전과 출력 값을 설정해줍니다.
예시 참조
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7 EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2 (본인이 사용하는 리전선택)
Default output format [None]: json (지정하지 않으면 json이 기본값)
2) 추가 사용자 등록
- 설정 모음을 프로파일이라고 합니다. 기본적으로 AWS CLI는 default 프로파일을 사용합니다. --profile 옵션을 지정하고 이름을 할당하여 다양한 자격 증명 및 설정을 통해 명명된 프로파일을 추가로 생성하고 사용할 수 있습니다.
$aws configure --profile produser
AWS Access Key ID [None]: AKIAI44 QH8 DHBEXAMPLE
AWS Secret Access Key [None]: je7 MtGbClwBF/2 Zp9 Utk/h3 yCo8 nvbEXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: text
- 사용자 별로 명령어를 선택해서 저장된 자격 증명 및 설정에 따라서 실행할 수 있습니다.
$aws s3 ls --profile produser
*출력 형식 종류
Default output format은 결과의 형식을 지정하는 방법을 지정합니다. 값은 다음 목록에 있는 값 중 하나일 수 있습니다. 출력 형식을 지정하지 않으면 json이 기본값으로 사용됩니다.
- json - 출력은 JSON 문자열로 형식이 지정됩니다.
- yaml- 출력은 형식이 지정됩니다.YAML문자열
- yaml-stream - 출력은 스트리밍되고 YAML 문자열로 형식이 지정됩니다. 스트리밍을 통해 대용량 데이터 유형을 빠르게 처리할 수 있습니다.
- text - 출력은 여러 줄의 탭으로 구분된 문자열 값으로 형식이 지정됩니다. 출력을 grep, sed 또는 awk와 같은 텍스트 프로세서로 전달하는 데 사용할 수 있습니다.
- table - 출력은 셀 테두리를 형성하기 위해 +|- 문자를 사용하여 표로 형식이 지정됩니다. 일반적으로 읽기는 쉽지만 프로그래밍 방식으로는 유용하지 않은 "인간 친화적" 형식으로 정보를 표시합니다.
사용자 관리
AWS CLI는 aws configure를 사용하여 지정하는 민감한 자격 증명 정보를 홈 디렉터리의 credentials라는 폴더에 있는. aws라는 로컬 파일에 저장합니다. aws configure를 사용하여 지정하는 덜 민감한 구성 옵션은 config라는 로컬 파일에 저장되며, 홈 디렉터리의. aws 폴더에도 저장됩니다.
예를 들어 ~/. aws/credentials를 실행하면 다음과 같은 값을 확인할 수 있습니다. (*cd. aws -> cat credentials)
[default]
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
~/. aws/config (*cd. aws -> cat config)
[default]
region=us-west-2
output=json
사용자 자격 증명 / 구성 설정 변경
aws configure set 명령어를 사용하여 자격증명 또는 구성 설정을 변경할 수 있습니다.
- integ 사용자의 region을 변경할 때
$ aws configure set region us-west-2 --profile integ
- 설정을 제거할 때
$ aws configure set cli_pager "" --profile integ
사용자 자격 증명 / 구성 설정 검색 및 저장
아래 명령어들을 사용하여 설정한 자격 증명 또는 구성 설정을 검색할 수 있습니다.
- aws configure get
integ 사용자의 region을 검색할 때
$ aws configure get region --profile integ
us-west-2
- aws configure list
모든 구성 데이터를 나열
$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************ABCD shared-credentials-file
secret_key ****************ABCD shared-credentials-file
region us-west-2 env AWS_DEFAULT_REGION
- aws configure list-profiles
모든 프로파일 이름을 나열
$ aws configure list-profiles
default
test
-aws cofigure import
CSV 웹 콘솔에서 생성된 AWS 자격 증명을 가져옵니다. IAM 사용자 이름과 일치하는 프로파일 이름을 이용해 CSV 파일을 가져옵니다. CSV 파일에는 다음 헤더가 포함되어야 합니다.
- 사용자 이름
- 액세스 키 ID
- 보안 액세스 키
$ aws configure import --csv file://credentials.csv
AWS CLI로 S3 버킷 생성하기 - 실습
1) 버킷 만들기
다음 예제에서는 s3://bucket-name 버킷을 생성합니다.
$ aws s3 mb s3://bucket-name
2) 버킷 및 객체 나열
버킷, 폴더 또는 객체를 나열하려면 s3 ls 명령을 사용합니다. 대상 또는 옵션 없이 명령을 사용하면 모든 버킷이 나열됩니다.
$ aws s3 ls
2018-12-11 17:08:50 my-bucket
2018-12-14 14:55:44 my-bucket2
3) 버킷 삭제
버킷을 삭제하려면 s3 rb 명령을 사용합니다. (버킷이 비어있을 때)
$ aws s3 rb s3://bucket-name
비어 있지 않은 버킷을 강제로 삭제할 때
$ aws s3 rb s3://bucket-name --force
4) 객체 삭제
버킷이나 로컬 디렉터리의 객체를 삭제하려면 s3 rm 명령을 사용합니다.
*다음 명령어는 s3://bucket-name/example 에서 filename.txt 파일을 삭제합니다.
$ aws s3 rm s3://bucket-name/example/filename.txt --recursive
5) 객체 이동
다음 예제에서는 s3://bucket-name/example에서 모든 객체를 s3://my-bucket/으로 이동합니다.
$ aws s3 mv s3://bucket-name/example s3://my-bucket/
다음 예제에서는 s3 cp 명령을 사용하여 현재 작업 디렉터리에서 Amazon S3 버킷으로 로컬 파일을 이동합니다.
$ aws s3 mv filename.txt s3://bucket-name
다음 예제에서는 Amazon S3 버킷에서 현재 작업 디렉터리로 파일을 이동합니다. 여기서./는 현재 작업 디렉터리를 지정합니다.
$ aws s3 mv s3://bucket-name/filename.txt ./
6) 객체 복사
다음 예제에서는 s3://bucket-name/example에서 s3://my-bucket/으로 모든 객체를 복사합니다.
$ aws s3 cp s3://bucket-name/example s3://my-bucket/
더 자세한 aws s3 명령어를 살펴보고 싶으면 아래 링크를 이용해주세요.
AWS CLI에서 상위 수준(s3) 명령 사용 - AWS Command Line Interface
PowerShell을 사용하는 경우 셸은 CRLF의 인코딩을 변경하거나, 파이프 입력이나 출력 또는 리디렉션된 출력에 CRLF를 추가할 수 있습니다.
docs.aws.amazon.com
댓글