上次更新日期:2021 年 1 月 22 日
我该如何使用 AWS 命令行界面 (AWS CLI) 列出特定 Amazon Elastic Block Storage (Amazon EBS) 卷的附加或分离历史?
简短描述Amazon Elastic Compute Cloud (Amazon EC2) 和 Amazon EBS 资源不会保存附加或分离的历史。但 AWS CloudTrail 会保留此信息。AWS CloudTrail 是为 AWS 账户记录 AWS API 调用和事件的服务。您可以通过 AWS CLI 使用 AWS CloudTrail API,以提取附加和分离日志。
使用 RunInstances 和 TerminateInstances API 调用进行附加和分离的 Amazon EBS 卷没有单独的 CloudTrail 事件。这些事件不会出现在 CloudTrail lookup-events API 输出中。
解决方法注意:如果在运行 AWS CLI 命令时遇到错误,请确保您使用的是最新版本的 AWS CLI。
运行 CloudTrail lookup-events API。此命令使用 AWS CLI JSON 处理器 (JMESPath) 来搜索 附加和分离事件。
您可以使用两种方法返回数据。
打印 Unix Epoch 时间戳1.运行以下命令:
$ aws cloudtrail lookup-events \
--lookup-attributes AttributeKey=ResourceName,AttributeValue=VOLUME_ID \
--max-results 3 \
--region REGION_ID \
--query 'Events.{EventTime:EventTime,EventName:EventName,InstanceID:(Resources.ResourceName)}'
将VOLUME_ID替换为您的 Amazon EBS 卷,并将REGION_ID替换为适当的区域。使用max-results变量设置返回的 Amazon EBS 卷事件的数量。返回结果的默认数量为 50,可能的最大数量也是 50。
2. CloudTrail 会以 Unix Epoch 时间格式显示时间戳。使用以下一种方法将时间戳转换成 UTC:
macOS:
删除时间戳的小数点,然后运行以下命令:
$ date -r 1571065747 -u
Mon Oct 14 15:09:07 UTC 2019
Linux:
运行以下命令:
$ date -d @1571065747.0 -u
Mon Oct 14 15:09:07 UTC 2019
Windows:
使用转换器对时间戳进行转换,如 epochconverter.com。
以 UTC 时区格式打印人类可读的时间戳注意:此方法使用 sed 实用工具和 jq 处理器,而且推荐仅供 Linux 用户使用。
sed 实用工具用于将 CloudTrail 事件值转换为 JSON 友好布局。大多数 Linux 发行版本均已安装 sed 实用程序。如果未安装,您可以从 GNU sed 网站下载实用程序。
jq 处理器用于搜索与返回 EventName、InstanceID 和 EventTime 的值。如果未安装,您可以前往 jq 处理器网站下载。
运行以下命令:
$ aws cloudtrail lookup-events \
--lookup-attributes AttributeKey=ResourceName,AttributeValue=VOLUME_ID \
--max-results 3 \
--region REGION_ID \
--query 'Events.CloudTrailEvent' | \
sed 's/\\//g' | sed 's/"}"/"}/g' | sed 's/"{"/{"/g' | \
jq '.[] | {EventName:.eventName, InstanceID:.requestParameters.instanceId, EventTime:.eventTime}'
将VOLUME_ID替换为您的 Amazon EBS 卷,并将REGION_ID替换为适当的区域。使用max-results变量设置返回的 Amazon EBS 卷事件的数量。返回结果的默认数量为 50,可能的最大数量也是 50。
请参见以下示例输出:
{
"EventName": "AttachVolume",
"InstanceID": "i-00a49ef5dd45af31b",
"Time": "2019-10-02T15:36:18Z"
}
{
"EventName": "DetachVolume",
"InstanceID": "i-0554d4452aa4cf91b",
"Time": "2019-10-02T14:26:04Z"
}
{
"EventName": "AttachVolume",
"InstanceID": "i-0554d4452aa4cf91b",
"Time": "2019-10-02T14:25:42Z"
}
注意:CloudTrail 的默认搜索历史跨度为 90 天。超过 90 天的任何事件都不会显示。要将您的事件日志保留超过 90 天:
1.在 CloudTrail 中创建您自己的跟踪。
2.将日志存储到 Amazon Simple Storage Service (Amazon S3) 存储桶。
3.使用 Amazon Athena 查询 Amazon S3 存储桶中的日志。