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

Sco*_*Bob 3 json command-line-interface amazon-web-services aws-cli

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

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

aws ec2 describe-snapshots --query 'Snapshots[*].{ID:SnapshotId,Time:StartTime,Name:Tags[?Key==`Name`]|[0].Value}'
Run Code Online (Sandbox Code Playgroud)

这将为我提供快照的描述、快照 ID 和日期:

 aws ec2 describe-snapshots --owner self --output json | jq '.Snapshots[] | select(.StartTime < "'$(date --date='-1 month' '+%Y-%m-%d')'") | [.Description, .StartTime, .SnapshotId]'
Run Code Online (Sandbox Code Playgroud)

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

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

Adi*_*iii 5

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

aws ec2 describe-snapshots  --query "sort_by(Snapshots, &StartTime)[-1].{SnapshotId:SnapshotId,StartTime:StartTime}"
Run Code Online (Sandbox Code Playgroud)

输出

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

Run Code Online (Sandbox Code Playgroud)

或者如果您只是寻找您所拥有的

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}"
Run Code Online (Sandbox Code Playgroud)

我的 aws 快照

更新:

由于上面的查询不包含实例信息,因此可以通过反向查询来获取实例信息。首先查找快照,然后使用附加卷 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'
Run Code Online (Sandbox Code Playgroud)