AWS CLI 명령을 사용하여 특정 Amazon EBS 볼륨의 연결 또는 분리 기록을 나열하려면 어떻게 해야 하나요?

3분 분량
0

AWS Command Line Interface(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 조회 이벤트 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 Event 값을 JSON 호환 레이아웃으로 변환할 수 있습니다. 대부분의 Linux 배포판에는 sed 유틸리티가 이미 설치되어 있습니다. 설치되어 있지 않은 경우 GNU 운영 체제 웹 사이트에서 유틸리티를 다운로드합니다.

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 볼륨 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 버킷의 로그를 쿼리합니다.

관련 정보

Lookup-events

AWS CLI를 사용하여 CloudTrail 이벤트 보기

AWS 공식
AWS 공식업데이트됨 8달 전