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

최종 업데이트 날짜: 2022년 4월 27일

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 yum install jq

다른 Linux 배포판 설치 지침 및 구문 명령에 대해서는 해당 Linux 배포판의 설명서를 참조하세요.

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

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

aws ec2 describe-snapshots \
    --owner-ids self \
    --query "Snapshots[?(StartTime<='$(date --date='-1 month' '+%Y-%m-%d')')].{ID:SnapshotId,Time:StartTime,Details:Description}"

모든 리전에서 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 --query "Snapshots[?(StartTime<='$(date --date='-1 month' '+%Y-%m-%d')')].{ID:SnapshotId,Time:StartTime,Details:Description}" ; 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 text --region $REGION --query 'Snapshots[*].SnapshotId'); do aws ec2 describe-snapshot-attribute --snapshot-id $snap --region $REGION --output text --attribute createVolumePermission --query '[SnapshotId,CreateVolumePermissions[?Group == `all`]]'; 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

이 문서가 도움이 되었습니까?


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