AWS CLI 명령을 사용하여 특정 Amazon EBS 볼륨의 첨부 파일 또는 분리 기록을 나열하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 11월 5일

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를 사용하여 첨부 파일 및 분리 로그를 가져올 수 있습니다.

RunInstancesTerminateInstances API 호출을 사용하여 연결 및 분리된 Amazon EBS 볼륨에는 개별 CloudTrail 이벤트가 없습니다. 이러한 이벤트는 CloudTrail lookup-events API 출력에 표시되지 않습니다.

​해결 방법

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[?EventName == `DetachVolume` || EventName == `AttachVolume`].{EventTime:EventTime,EventName:EventName,InstanceID:(Resources[1].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 Event 값을 JSON 친화적 레이아웃으로 변환하는 데 사용됩니다. 대부분의 Linux 배포판에는 sed 유틸리티가 이미 설치되어 있습니다. 설치되어 있지 않은 경우 GNU sed 웹 사이트에서 유틸리티를 다운로드할 수 있습니다.

jq 프로세서는 EventName, InstanceIDEventTime 값을 검색하고 반환하는 데 사용됩니다. 설치되어 있지 않은 경우 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 볼륨으로 바꾸고 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에서 고유한 Trail을 생성합니다.

2.    Amazon Simple Storage Service(Amazon S3) 버킷에 로그를 저장합니다.

3.    Amazon Athena를 사용하여 Amazon S3 버킷의 로그를 쿼리합니다.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?