AWS CLI를 사용하여 Amazon EC2 인스턴스에 대한 Amazon EBS 볼륨 또는 스냅샷 정보를 나열하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 1월 18일

AWS 명령줄 인터페이스(CLI)를 사용하여 Amazon Elastic Compute Cloud(Amazon EC2)에 대한 Amazon Elastic Block Store(Amazon EBS) 볼륨 또는 스냅샷 정보를 나열하려면 어떻게 해야 합니까?

해결 방법

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.

참고: 명령을 실행하기 전에 jq 프로세서를 설치합니다.

Amazon Linux 및 Amazon Linux 2:

$ sudo wget -O jq https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64
$ sudo chmod +x ./jq
$ sudo cp jq /usr/bin

다른 배포에 대한 다운로드 및 설치 지침은 GitHub 웹 사이트의 jq 명령줄 프로세서를 참조하세요.

1개월보다 오래된 모든 스냅샷 찾기

다음 명령은 describe-snapshots 작업을 사용하여 모든 EBS 스냅샷을 나열합니다. 여기서, 타임스탬프는 1개월보다 더 오래된 시점입니다(--date='-1 month').

$ aws ec2 describe-snapshots --owner self --output json | jq '.Snapshots[] | select(.StartTime < "'$(date --date='-1 month' '+%Y-%m-%d')'") | [.Description, .StartTime, .SnapshotId]'

모든 리전에서 1개월보다 오래된 스냅샷 나열

다음 예제 명령은 첫 번째 예제와 동일한 명령을 사용합니다. 또한, describe-regions 작업을 사용하여 모든 리전에서 스냅샷을 반복하여 찾습니다.

$ for REGION in $(aws ec2 describe-regions --output text --query 'Regions[].[RegionName]') ; do echo $REGION && aws ec2 describe-snapshots --owner self --region $REGION --output json | jq '.Snapshots[] | select(.StartTime < "'$(date --date='-1 month' '+%Y-%m-%d')'") | [.Description, .StartTime, .SnapshotId]' ; done

모든 리전에서 AWS 계정에 대해 공개적으로 사용 가능한 모든 스냅샷 찾기

다음 예제 명령은 모든 리전에 대해 CreateVolumePermission Groupall과 같은 모든 스냅샷을 나열합니다.

$ for REGION in $(aws ec2 describe-regions --output text --query 'Regions[].[RegionName]') ; do echo "$REGION:"; for snap in $(aws ec2 describe-snapshots --owner self --output json --region $REGION --query 'Snapshots[*].SnapshotId' | jq -r '.[]'); do aws ec2 describe-snapshot-attribute --snapshot-id $snap --region $REGION --output json --attribute createVolumePermission --query '[SnapshotId,CreateVolumePermissions[?Group == `all`]]' | jq -r '.[]'; done; echo; done

모든 리전에서 볼륨 수정 후 현재 최적화 단계에 있는 모든 볼륨 상태 가져오기

다음 예제 명령은 describe-volumes-modifications 작업을 사용하여 모든 볼륨을 나열합니다. 여기서, modification-state 값은 모든 리전에 대해 optimizing으로 설정됩니다.

$ for REGION in $(aws ec2 describe-regions --output text --query 'Regions[].[RegionName]') ; do echo $REGION && aws ec2 describe-volumes-modifications --query 'VolumesModifications[].{VolumeID:VolumeId,TargetSize:TargetSize,OriginalSize:OriginalSize,Progress:Progress,OriginalIops:OriginalIops,TargetIops:TargetIops}' --output json --filter 'Name=modification-state,Values=optimizing' --region $REGION; done

모든 리전에서 인스턴스에 연결되지 않은 모든 볼륨 찾기

이 예제 명령은 모든 리전에 대해 statusavailable로 설정된 볼륨을 나열합니다.

$ for REGION in $(aws ec2 describe-regions --output text --query 'Regions[].[RegionName]') ; do echo $REGION && aws ec2 describe-volumes --filter "Name=status,Values=available" --query 'Volumes[*].{VolumeID:VolumeId,Size:Size,Type:VolumeType,AvailabilityZone:AvailabilityZone}' --region $REGION; done

모든 리전에서 "error" 상태의 모든 볼륨 찾기

다음 예제 명령은 모든 리전에서 statuserror인 모든 볼륨을 설명합니다.

$ for REGION in $(aws ec2 describe-regions --output text --query 'Regions[].[RegionName]') ; do echo $REGION && aws ec2 describe-volumes --filter "Name=status,Values=error" --query 'Volumes[*].{VolumeID:VolumeId,Size:Size,Type:VolumeType,AvailabilityZone:AvailabilityZone}' --region $REGION; done

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?