1

我需要从 awscli 报告 5 个列。这些是,例如,上次拍摄的快照、拍摄日期、使用的标签(如果有)、实例的名称标签和实例 ID

下面将列出所有快照和所用时间,并报告“空”名称...

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]'

所以基本上我有一些东西可以给我快照数据,会查询日期并告诉我拍摄的时间,但我缺少一个完整的要求。

我想对我来说主要的绊脚石是如何只报告为实例拍摄的最后一个快照。有人可以帮忙吗?

4

1 回答 1

1

您可以使用sort_by获取最新的快照。

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}"

aws-snapshot-by-me

更新:

由于上述查询不包含实例信息,因此可以通过反向查询获得实例信息。首先查找快照,然后使用附加的卷 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'
于 2020-07-07T14:31:51.167 回答