AWS CLI는 AWS Command Line Interface(AWS CLI)의 줄일말로 명령줄 셸의 명령을 사용하여 AWS 서비스와 상호 작용할 수 있는 오픈 소스 도구입니다. 최소한의 구성으로 AWS CLI를 사용하면 터미널 프로그램에 있는 명령 프롬프트에서 브라우저 기반 AWS Management Console에서 제공하는 것과 동일한 기능을 구현하는 명령을 실행할 수 있습니다.
Linux 셸 - bash, zsh, tcsh 등의 일반적인 셸 프로그램을 사용하여 Linux 또는 macOS에서 명령을 실행합니다.
Windows 명령줄 - Windows의 경우 PowerShell 또는 Windows 명령 프롬프트에서 명령을 실행합니다.
원격 – PuTTY 또는 SSH와 같은 원격 터미널 프로그램이나 AWS Systems Manager를 통해 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 명령을 실행합니다.
AWS Management Console의 모든 IaaS(서비스로의 인프라) AWS 관리, 관리 및 액세스 함수는 AWS API 및 AWS CLI에서 사용 가능합니다.
AWS CLI를 사용하면 AWS 서비스의 퍼블릭 API를 직접 액세스할 수 있습니다. AWS CLI를 사용하여 서비스의 기능을 살펴보고 리소스를 관리할 셸 스크립트를 개발할 수 있습니다. 하위 수준 API와 상응한 명령 외에 여러 AWS 서비스에서도 AWS CLI에 대한 사용자 지정 기능을 제공합니다. 사용자 지정에는 복잡한 API와 서비스의 사용을 간소화하는 상위 수준 명령이 포함될 수 있습니다.
1) Linux
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
2) MacOS
$ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
$ sudo installer -pkg AWSCLIV2.pkg -target /
# 확인
$ which aws
/usr/local/bin/aws
$ aws --version
aws-cli/2.7.24 Python/3.8.8 Darwin/18.7.0 botocore/2.4.5
3) windows
C:\> msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi
C:\> aws --version
aws-cli/2.7.24 Python/3.8.8 Windows/10 exe/AMD64 prompt/off
명령 구조
AWS CLI는 다음 순서로 지정되어야 하는 명령줄에서 멀티파트 구조를 사용합니다.
$ aws <command> <subcommand> [options and parameters]
대용량 객체 업로드
aws s3 명령을 사용하여 Amazon S3 버킷에 대용량 객체를 업로드하면 AWS CLI에서 자동으로 멀티파트 업로드를 수행합니다. 이러한 aws s3 명령을 사용할 때는 실패한 업로드를 재개할 수 없습니다.
시간 초과로 인해 멀티파트 업로드가 실패하거나 AWS CLI에서 수동으로 취소할 경우 AWS CLI는 업로드를 중지하고 생성된 모든 파일을 정리합니다. 이 프로세스는 몇 분 정도 걸릴 수 있습니다.
1) 버킷 만들기
aws s3 mb s3://bucket-name
2) 버킷 및 객체 나열
aws s3 ls s3://bucket-name
3) 버킷 삭제
aws s3 rb s3://bucket-name
4) 객체 삭제
aws s3 rm s3://bucket-name/example/filename.txt
# 모든 객체 삭제
aws s3 rm s3://bucket-name/example --recursive
5) 객체 이동
aws s3 mv s3://bucket-name/example s3://my-bucket/
6) 객체 복사
aws s3 cp s3://bucket-name/example s3://my-bucket/
7) 객체 동기화
aws s3 sync . s3://my-bucket/path