AWS CLI を使用して Amazon EC2 インスタンスの Amazon EBS ボリュームまたはスナップショット情報を一覧表示する方法を教えてください。

最終更新日: 2019 年 12 月 12 日

AWS コマンドラインインターフェイス (AWS CLI) を使用して Amazon Elastic Compute Cloud (Amazon EC2) インスタンスの Amazon Elastic Block Store (Amazon EBS) ボリュームまたはスナップショット情報を一覧表示する方法を教えてください。

解決方法

注: コマンドを実行する前に 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 Command Line Processor」をご参照ください。

1 か月以上経過したすべてのスナップショットを検索する

次のコマンドは describe-snapshots オペレーションを使用して、タイムスタンプが 1 か月以上経過した (--date='-1 month') すべての EBS スナップショットを一覧表示します。

$ 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-stateoptimizing の値に設定されている全ボリュームをリストします。 

$ 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

すべてのリージョン「エラー」状態にあるすべてのボリュームを検索する

次のコマンド例では、すべてのリージョンで 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

この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合