我如何使用 AWS CLI 命令列出特定 Amazon EBS 卷的附加或分离历史记录?

2 分钟阅读
0

我想使用 AWS 命令行界面(AWS CLI)列出 Amazon Elastic Block Storage(Amazon EBS)的附加或分离历史记录。

简短描述

Amazon Elastic Compute Cloud(Amazon EC2)和 Amazon EBS 资源不存储附加或分离历史记录。要获取附加或分离历史记录,请使用 AWS CloudTrail。CloudTrail 是一项记录 AWS 账户的 AWS API 调用和事件的服务。您可以通过 AWS CLI 使用 AWS CloudTrail API 来获取附加和分离日志。

如果您使用 RunInstances 和 **TerminateInstances ** API 调用来附加和分离 Amazon EBS 卷,则这些卷没有单独的 CloudTrail 事件。这些事件不会出现在 CloudTrail 查找事件 API 输出中。

解决方法

**注意:**如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI

运行 CloudTrail lookup-events API。此命令使用 AWS CLI JSON 处理器 JMESPath 来搜索附加分离事件。

您可以使用以下任一方法来获取数据:

  • 打印 Unix Epoch 时间戳
  • 以 UTC 时区格式打印人类可读的时间戳

打印 Unix Epoch 时间戳

1.运行以下命令:

$ aws cloudtrail lookup-events \--lookup-attributes AttributeKey=ResourceName,AttributeValue=VOLUME_ID \
--max-results 3 \
--region REGION_ID \
--query 'Events[?EventName == `DetachVolume` || EventName == `AttachVolume`].{EventTime:EventTime,EventName:EventName,InstanceID:(Resources[1].ResourceName)}'

**注意:**将 VOLUME\ _ID 替换为您的 Amazon EBS 卷 ID,将 REGION_ID 替换为您的 AWS 区域。使用 max-results 变量设置要返回的 Amazon EBS 卷事件的数量。50 是返回的默认最大结果数。

2.CloudTrail 以 Unix Epoch 时间显示时间戳。要将时间戳转换为 UTC,请使用以下方法之一:

macOS

从时间戳中删除小数点,然后运行以下命令:

$ date -r 1571065747 -uMon Oct 14 15:09:07 UTC 2019

Linux

运行以下命令:

$ date -d @1571065747.0 -uMon Oct 14 15:09:07 UTC 2019

Windows

使用转换器。要选择转换器,请参阅 EpochConverter 网站上的 Epoch 和 Unix 时间戳转换工具

以 UTC 时区格式打印人类可读的时间戳

**注意:**此方法使用 sed 实用程序和 jq 处理器。仅在 Linux 上使用 jq。

sed 实用程序可以将 CloudTrail 事件值转换为兼容 JSON 的布局。大多数 Linux 发行版都已安装了 sed 实用程序。如果尚未安装,请从 GNU 操作系统网站下载该实用程序

jq 处理器可以搜索并返回 EventNameInstanceIDEventTime 的值。如果未安装,请从 jq 网站下载处理器

运行以下命令:

$ aws cloudtrail lookup-events \--lookup-attributes AttributeKey=ResourceName,AttributeValue=VOLUME_ID \
--max-results 3 \
--region REGION_ID \
--query 'Events[?EventName == `DetachVolume` || EventName == `AttachVolume`].CloudTrailEvent' | \sed 's/\\//g' | sed 's/"}"/"}/g' |
sed 's/"{"/{"/g' | \
jq '.[] | {EventName:.eventName, InstanceID:.requestParameters.instanceId, EventTime:.eventTime}'

**注意:**将 VOLUME\ _ID 替换为您的 Amazon EBS 卷 ID,将 REGION_ID 替换为您的 AWS 区域。使用 max-results 变量设置要返回的 Amazon EBS 卷事件的数量。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 桶中的日志

相关信息

查找事件

使用 AWS CLI 查看 CloudTrail 事件

AWS 官方
AWS 官方已更新 8 个月前