Json aws cli查询以查找上次拍摄的快照、拍摄日期、使用的标记(如果有)、实例的名称标记和实例ID

Json aws cli查询以查找上次拍摄的快照、拍摄日期、使用的标记(如果有)、实例的名称标记和实例ID,json,amazon-web-services,command-line-interface,aws-cli,Json,Amazon Web Services,Command Line Interface,Aws Cli,我需要从awscli那里得到5列报告。例如,最后一次拍摄的快照、拍摄日期、使用的标记(如果有)、实例的名称标记和实例ID 下面将列出所有快照和花费的时间,并报告一个“null”名称 aws ec2 describe-snapshots --query 'Snapshots[*].{ID:SnapshotId,Time:StartTime,Name:Tags[?Key==`Name`]|[0].Value}' 这将为我提供快照、快照id和日期的描述: aws ec2 describe-snap

我需要从awscli那里得到5列报告。例如,最后一次拍摄的快照、拍摄日期、使用的标记(如果有)、实例的名称标记和实例ID

下面将列出所有快照和花费的时间,并报告一个“null”名称

aws ec2 describe-snapshots --query 'Snapshots[*].{ID:SnapshotId,Time:StartTime,Name:Tags[?Key==`Name`]|[0].Value}'
这将为我提供快照、快照id和日期的描述:

 aws ec2 describe-snapshots --owner self --output json | jq '.Snapshots[] | select(.StartTime < "'$(date --date='-1 month' '+%Y-%m-%d')'") | [.Description, .StartTime, .SnapshotId]'
aws ec2描述快照--所有者自己--输出json | jq'.snapshots[]|选择(.StartTime<“$(日期--日期='-1个月'+%Y-%m-%d')”)|[.Description、.StartTime、.SnapshotId]'
所以基本上我有一些东西可以给我快照数据,查询日期并告诉我它是什么时候拍的,但是我一下子就错过了完整的要求

我想我的主要障碍是如何只报告为实例拍摄的最后一张快照。有人可以帮忙吗?

您可以使用获取最新快照

aws ec2 describe-snapshots  --query "sort_by(Snapshots, &StartTime)[-1].{SnapshotId:SnapshotId,StartTime:StartTime}"
输出

{
    "SnapshotId": "snap-123456", 
    "StartTime": "2020-07-07T13:57:05.982Z"
}

或者如果你只是在寻找属于你的

MY_ACCOUNT_ID=1234567 aws ec2 describe-snapshots  --filter "Name=owner-id,Values=$MY_ACCOUNT_ID" --query "sort_by(Snapshots, &StartTime)[-1].{SnapshotId:SnapshotId,StartTime:StartTime}"

更新:

由于上面的查询不包含实例信息,所以可以通过反向查询获取实例信息。首先查找快照,然后使用附加的卷ID查找实例ID

VOLUME_ID=$(aws ec2 describe-snapshots --filter "Name=owner-id,Values=$MY_ACCOUNT_ID"  --query "sort_by(Snapshots, &StartTime)[-1].VolumeId" --output text)
aws ec2 describe-volumes --filter "Name=volume-id,Values=$VOLUME_ID" --query 'Volumes[?Attachments != `null`].Attachments[].InstanceId'

嗨,谢谢你!它似乎只返回整个帐户拍摄的最新快照。。。我希望得到的是每个实例的最新快照。。。所以-列出所有100个实例,然后每个实例在10天内可能有10个快照,但我只希望找到每个实例的最新快照添加一个星号,像这样显示所有实例的所有快照?aws ec2描述快照--查询“sort_by(snapshots,&StartTime)[*]。{SnapshotId:SnapshotId,StartTime:StartTime}”,然后您肯定需要其他查询,它不包含实例信息。谢谢您,第一行不会产生任何输出。VOLUME_ID=$(aws ec2 description snapshots--filter“Name=owner ID,Values=$MY_ACCOUNT_ID”--query“sort_by(snapshots,&StartTime)[-1].VolumeId”--输出文本)我正在按原样复制和粘贴,而且我正在硬编码我的帐户ID。我也在使用*而不是-1,仍然没有返回任何输出。我有很多快照,这很奇怪。输出被分配到变量,您需要回显变量。或者尝试使用aws ec2描述快照--筛选“名称=所有者id,值=123456788”--查询“排序依据(快照和开始时间)