일상적인 리소스 관리를 위한 필수 AWS CLI 명령어 Top 10
일상적인 S3, EC2 및 IAM 확인, 전송, 인스턴스 작업 및 권한 검토를 위해 이 AWS CLI 치트 시트를 가까이 두세요.
일상적인 리소스 관리를 위한 상위 10가지 필수 AWS CLI 명령어
AWS CLI는 일상적인 운영 질문에 가장 빠르게 답할 수 있는 방법입니다: 어떤 EC2 인스턴스가 실행 중인지, S3 접두사에서 무엇이 변경되었는지, 또는 어떤 정책이 사용자에게 연결되어 있는지 등. 콘솔도 유용하지만, CLI는 런북이나 스크립트에 붙여넣을 수 있는 반복 가능한 명령어를 제공합니다.
이 AWS CLI 치트 시트는 일상적인 점검 및 문제 해결 중에 사용할 가능성이 높은 실용적인 S3, EC2 및 IAM 명령어에 초점을 맞춥니다.
사전 요구 사항
시작하기 전에 시스템에 AWS CLI가 설치 및 구성되어 있는지 확인하십시오. 그렇지 않은 경우 공식 AWS 문서를 따라 설치하고 자격 증명(액세스 키 ID, 비밀 액세스 키 및 기본 리전)을 구성하십시오.
# AWS CLI 버전 확인
aws --version
# 아직 구성하지 않은 경우 AWS CLI 구성
aws configure
Amazon S3를 위한 필수 AWS CLI 명령어
이 명령어를 사용하여 버킷을 검사하고, 객체를 이동하며, 전송 전에 변경 사항을 미리 볼 수 있습니다.
1. aws s3 ls - S3 버킷 및 객체 나열
이 명령어를 사용하면 S3 버킷 또는 특정 버킷 내의 객체를 나열할 수 있습니다. 이는 스토리지 환경을 이해하는 첫 번째 단계인 경우가 많습니다.
목적: S3 버킷 또는 버킷의 내용을 봅니다.
예시:
# 계정의 모든 S3 버킷 나열
aws s3 ls
# 특정 버킷의 객체 나열
aws s3 ls s3://your-bucket-name/
# 사람이 읽을 수 있는 크기와 날짜로 재귀적으로 객체 나열
aws s3 ls s3://your-bucket-name/ --recursive --human-readable --summarize
팁:
--recursive를 사용하여 접두사 아래의 모든 객체를 나열합니다. S3에는 실제 폴더가 아닌 접두사가 있지만, CLI는 폴더 방식으로 표시합니다.--summarize는 총 개수와 크기를 제공합니다.- 버킷 내의 경로를 지정할 수도 있습니다:
aws s3 ls s3://your-bucket-name/prefix/.
2. aws s3 cp - S3로/에서 파일 복사
cp 명령어는 로컬 파일 시스템과 S3 간, 또는 S3 버킷 간에 파일을 전송하는 기본적인 명령어입니다.
목적: 로컬 파일을 S3로, S3 객체를 로컬로, 또는 S3 객체를 버킷 간에 복사합니다.
예시:
# 로컬 파일을 S3 버킷으로 복사
aws s3 cp local-file.txt s3://your-bucket-name/folder/remote-file.txt
# S3에서 로컬 머신으로 객체 복사
aws s3 cp s3://your-bucket-name/folder/remote-file.txt local-copy.txt
# 한 S3 버킷에서 다른 버킷으로 객체 복사
aws s3 cp s3://source-bucket/file.txt s3://destination-bucket/new-file.txt
# 로컬 디렉토리를 S3로 재귀적으로 복사
aws s3 cp --recursive local-folder/ s3://your-bucket-name/remote-folder/
팁:
--recursive는 전체 디렉토리를 복사하는 데 중요합니다.--exclude및--include를 사용하여 재귀 복사 중 파일을 필터링합니다.
3. aws s3 sync - 로컬 디렉토리와 S3 동기화
sync는 디렉토리의 내용을 S3 접두사와 동기화하거나 그 반대로 동기화하는 강력한 명령어입니다. 새 파일이나 수정된 파일만 복사하므로 백업 및 배포에 매우 효율적입니다.
목적: 로컬 디렉토리를 S3 버킷/접두사와 효율적으로 동기화합니다.
예시:
# 로컬 디렉토리를 S3 버킷과 동기화
aws s3 sync local-directory/ s3://your-bucket-name/remote-path/
# S3 버킷을 로컬 디렉토리와 동기화
aws s3 sync s3://your-bucket-name/remote-path/ local-directory/
# 실제로 수행하지 않고 어떤 변경이 이루어질지 미리 보기 위한 드라이 런
aws s3 sync local-directory/ s3://your-bucket-name/remote-path/ --dryrun
모범 사례: 특히 중요한 데이터의 경우 sync 작업을 실행하기 전에 항상 --dryrun을 사용하여 변경 사항을 미리 확인하십시오.
4. aws s3 rm - S3 객체 및 버킷 제거
이 명령어는 S3 버킷에서 객체를 삭제하거나 빈 버킷을 제거하는 데 사용됩니다.
목적: S3에서 객체를 삭제하거나 빈 버킷을 제거합니다.
예시:
# 버킷에서 단일 객체 삭제
aws s3 rm s3://your-bucket-name/path/to/object.txt
# 폴더(접두사)의 모든 객체를 재귀적으로 삭제
aws s3 rm s3://your-bucket-name/folder/ --recursive
# 빈 버킷 삭제
aws s3 rb s3://your-bucket-name/
# 버킷과 모든 내용을 강제로 제거 (매우 주의해서 사용!)
aws s3 rb s3://your-bucket-name/ --force
경고: aws s3 rb --force는 파괴적입니다. 버킷을 삭제하기 전에 객체를 제거하지만, 버전 관리된 버킷은 삭제 전에 하위 수준 S3 API 명령어로 버전 정리가 필요할 수 있습니다.
Amazon EC2(Elastic Compute Cloud)를 위한 필수 AWS CLI 명령어
EC2는 AWS 클라우드에서 확장 가능한 컴퓨팅 용량을 제공합니다. 이 명령어는 가상 서버를 관리하는 데 도움이 됩니다.
5. aws ec2 describe-instances - EC2 인스턴스 세부 정보 가져오기
이 명령어는 EC2 인스턴스의 상태, 공용/개인 IP, 태그 등에 대한 정보를 수집하는 기본 명령어입니다.
목적: 하나 이상의 EC2 인스턴스에 대한 자세한 정보를 검색합니다.
예시:
# 현재 리전의 모든 EC2 인스턴스 설명
aws ec2 describe-instances
# 특정 태그(예: Environment=Production)가 있는 인스턴스 설명
aws ec2 describe-instances \
--filters "Name=tag:Environment,Values=Production"
# 인스턴스 ID로 인스턴스 설명
aws ec2 describe-instances --instance-ids i-0abcdef1234567890
# JMESPath를 사용하여 특정 정보(예: PublicIpAddress)를 필터링하여 인스턴스 설명
aws ec2 describe-instances \
--query "Reservations[*].Instances[*].{InstanceId:InstanceId,PublicIp:PublicIpAddress,State:State.Name}" \
--output table
팁:
--filters는 인스턴스 상태, 태그, 인스턴스 유형 등을 기준으로 결과를 좁히는 데 강력합니다.--query를 사용하면 특정 데이터 필드를 추출하고 출력 형식을 다시 지정할 수 있습니다(예: JMESPath 표현식 사용).
6. aws ec2 start-instances - 중지된 EC2 인스턴스 시작
이 명령어를 사용하여 하나 이상의 중지된 EC2 인스턴스를 시작합니다. 인스턴스는 일반적으로 개인 IPv4 주소를 유지하지만, 탄력적 IP 주소를 사용하지 않는 한 공용 IPv4 주소는 변경될 수 있습니다.
목적: 중지된 EC2 인스턴스의 시작 프로세스를 시작합니다.
예시:
# 단일 EC2 인스턴스 시작
aws ec2 start-instances --instance-ids i-0abcdef1234567890
# 여러 EC2 인스턴스 시작
aws ec2 start-instances --instance-ids i-0abcdef1234567890 i-0fedcba9876543210
7. aws ec2 stop-instances - 실행 중인 EC2 인스턴스 중지
이 명령어는 실행 중인 EC2 인스턴스를 중지합니다. 대부분의 EBS 지원 인스턴스의 경우 인스턴스가 중지된 동안 인스턴스 시간당 요금이 중지되지만, 연결된 EBS 볼륨, 탄력적 IP 주소, 스냅샷 및 일부 관련 리소스에는 여전히 요금이 발생할 수 있습니다.
목적: 실행 중인 EC2 인스턴스를 중지합니다.
예시:
# 단일 EC2 인스턴스 중지
aws ec2 stop-instances --instance-ids i-0abcdef1234567890
# 여러 EC2 인스턴스 중지
aws ec2 stop-instances --instance-ids i-0abcdef1234567890 i-0fedcba9876543210
# 인스턴스 강제 중지 (프로덕션 시스템의 경우 주의해서 사용)
aws ec2 stop-instances --instance-ids i-0abcdef1234567890 --force
경고: 인스턴스를 강제로 중지하면 애플리케이션이 정상적으로 종료되지 않아 데이터 손실이나 파일 시스템 손상이 발생할 수 있습니다.
8. aws ec2 terminate-instances - EC2 인스턴스 종료
인스턴스를 종료하면 인스턴스가 영구적으로 삭제됩니다. 연결된 EBS 볼륨은 DeleteOnTermination 설정이 활성화된 경우에만 삭제됩니다.
목적: EC2 인스턴스를 영구적으로 삭제합니다.
예시:
# 단일 EC2 인스턴스 종료
aws ec2 terminate-instances --instance-ids i-0abcdef1234567890
# 여러 EC2 인스턴스 종료
aws ec2 terminate-instances --instance-ids i-0abcdef1234567890 i-0fedcba9876543210
경고: 종료는 영구적이고 되돌릴 수 없는 작업입니다. 인스턴스를 종료하기 전에 중요한 데이터의 백업 또는 스냅샷이 있는지 확인하십시오.
IAM(Identity and Access Management)을 위한 필수 AWS CLI 명령어
IAM을 사용하면 AWS 서비스 및 리소스에 대한 액세스를 안전하게 제어할 수 있습니다. 이 명령어는 사용자 및 권한을 관리하는 데 도움이 됩니다.
9. aws iam list-users - IAM 사용자 나열
이 명령어는 AWS 계정의 모든 IAM 사용자 목록과 ARN, 생성 날짜 및 사용자 ID를 제공합니다.
목적: AWS 계정에 구성된 모든 IAM 사용자를 봅니다.
예시:
# 모든 IAM 사용자 나열
aws iam list-users
# JMESPath를 사용하여 특정 필드 추출하여 사용자 나열
aws iam list-users --query "Users[*].{UserName:UserName,CreateDate:CreateDate,Arn:Arn}" --output table
모범 사례: 필요한 사용자만 존재하고 오래되고 사용되지 않는 계정은 제거되었는지 확인하기 위해 정기적으로 IAM 사용자 목록을 검토하십시오.
10. aws iam list-attached-user-policies - IAM 사용자에 연결된 정책 나열
IAM 사용자가 가진 권한을 이해하는 것은 보안 및 액세스 문제 해결에 중요합니다. 이 명령어는 특정 사용자에게 직접 연결된 관리형 정책을 나열합니다.
목적: IAM 사용자에게 연결된 관리형 정책을 표시합니다.
예시:
# 특정 IAM 사용자에게 연결된 모든 관리형 정책 나열
aws iam list-attached-user-policies --user-name YourIAMUserName
# 특정 IAM 사용자에게 연결된 인라인 정책 나열
aws iam list-user-policies --user-name YourIAMUserName
팁:
- IAM 사용자는 연결된 관리형 정책, 인라인 정책 및 그룹 구성원으로부터 권한을 받을 수 있습니다. 역할은 별도의 IAM ID입니다. 사용자는 역할을 수임할 수 있도록 허용되지 않는 한 역할 권한을 상속하지 않습니다.
- 특정 정책의 세부 정보를 얻으려면
aws iam get-policy --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess를 사용한 다음aws iam get-policy-version을 사용하십시오.
핵심 요약
aws s3 ls, aws ec2 describe-instances 및 aws iam list-users와 같은 읽기 전용 명령어로 시작하십시오. 계정, 리전, 프로필 및 대상 리소스 ID를 확인한 후에만 sync, stop-instances 및 terminate-instances와 같은 쓰기 작업을 추가하십시오.