一千萬個為什麽

搜索

如何獲取在AWS CLI上運行的實例的加密磁盤列表?



在這裏有一個很好的問題,就是如何獲得。我目前使用描述卷命令。

對於我目前使用的記錄:

aws ec2 describe-volumes --region us-east-1 --filters Name=encrypted,Values=false Name=attachment.status,Values=attached --query "length(Volumes[])"

我想要的是進一步將其過濾到正在運行的實例。 (即排除停止的那些)。

My question is: How can I get a list of encrypted disks for instances that are running on the AWS CLI?

轉載註明原文: 如何獲取在AWS CLI上運行的實例的加密磁盤列表?

一共有 2 個回答:

我不確定你是否可以在沒有循環的情況下做到這一點。但是你應該能夠在bash中運行下面的代碼並獲得正確的結果:

instances=`aws ec2 describe-instances --region us-east-1 --filters Name=instance-state-name,Values=running --query "Reservations[*].Instances[0].InstanceId" --output text`

for instance in $instances; 
do  
   aws ec2 describe-volumes --region us-east-1 --filters Name=encrypted,Values=true Name=attachment.status,Values=attached Name=attachment.instance-id,Values=$instance --query "Volumes[]"; 
done

這將返回卷上的所有信息。對於ID,您可以將 describe-volumes 行更改為:

aws ec2 describe-volumes --filters Name=encrypted,Values=false Name=attachment.status,Values=attached Name=attachment.instance-id,Values=$instance --query "Volumes[].Attachments[].VolumeId"

這是我最終使用的。請享用。

for instance in $instances;
do
  count=`aws ec2 describe-volumes --filters Name=attachment.status,Values=attached Name=attachment.instance-id,Values=$instance --query "Volumes[]"  | jq  -r '. | length';`
  name=`aws ec2 describe-tags --filters Name=resource-id,Values=$instance Name=key,Values=Name --query Tags[].Value | jq -r '.[0]'`
  if [ $count -gt 0 ]; then
    START=0
    END=$count
    for ((i=START; i