AWS CloudTrail로 Capacity Blocks API 호출 기록하기
AWS CloudTrail로 Capacity Blocks API 호출 기록하기 (Logging Capacity Blocks API calls with AWS CloudTrail)
Capacity Blocks는 AWS CloudTrail과 통합되어 있어요. CloudTrail은 사용자, 역할, 또는 AWS 서비스가 Capacity Blocks에서 수행한 작업을 기록하는 서비스예요. CloudTrail은 Capacity Blocks에 대한 API 호출을 이벤트로 캡처해요.
출처: 문서
본문
캡처되는 호출에는 Capacity Blocks 콘솔의 호출과 Capacity Blocks API 작업에 대한 코드 호출이 포함돼요. 트레일(trail)을 만들면 CloudTrail 이벤트를 Capacity Blocks 이벤트를 포함해 Amazon S3 버킷으로 지속 전달할 수 있어요. 트레일을 구성하지 않아도 CloudTrail 콘솔의 Event history에서 가장 최근 이벤트를 볼 수 있어요. CloudTrail이 수집한 정보를 사용해 Capacity Blocks에 이루어진 요청, 요청이 이루어진 IP 주소, 요청한 사람, 요청 시점, 추가 세부 정보를 확인할 수 있어요.
CloudTrail에 대해 자세히 알아보려면 AWS CloudTrail User Guide를 참고하세요.
CloudTrail의 Capacity Blocks 정보 (Capacity Blocks information in CloudTrail)
계정을 만들 때 AWS 계정에서 CloudTrail이 활성화돼요. Capacity Blocks에서 활동이 발생하면 그 활동은 Event history의 다른 AWS 서비스 이벤트와 함께 CloudTrail 이벤트로 기록돼요. AWS 계정의 최근 이벤트를 보고, 검색하고, 다운로드할 수 있어요. 자세한 내용은 CloudTrail Event history로 이벤트 보기를 참고하세요.
Capacity Blocks 이벤트를 포함한 AWS 계정의 지속적인 이벤트 기록을 위해 트레일을 만들어요. 트레일은 CloudTrail이 로그 파일을 Amazon S3 버킷으로 전달할 수 있게 해줘요. 기본적으로 콘솔에서 트레일을 만들면 트레일이 모든 AWS 리전에 적용돼요. 트레일은 AWS 파티션의 모든 리전에서 이벤트를 기록하고 로그 파일을 지정한 Amazon S3 버킷으로 전달해요. 또한 다른 AWS 서비스를 구성해 CloudTrail 로그에 수집된 이벤트 데이터를 추가로 분석하고 대응할 수 있어요. 자세한 내용은 다음을 참고하세요.
- Overview for creating a trail
- CloudTrail supported services and integrations
- Configuring Amazon SNS notifications for CloudTrail
- Receiving CloudTrail log files from multiple regions 및 Receiving CloudTrail log files from multiple accounts
모든 Capacity Blocks 작업은 CloudTrail에 기록되며 Amazon EC2 API Reference에 문서화되어 있어요. 예를 들어 CapacityBlockScheduled와 CapacityBlockActive 작업에 대한 호출은 CloudTrail 로그 파일에 항목을 생성해요.
모든 이벤트 또는 로그 항목에는 요청을 생성한 사람에 대한 정보가 포함돼요. 자격 증명 정보는 다음을 판단하는 데 도움을 줘요.
- 요청이 루트 또는 AWS Identity and Access Management(IAM) 사용자 자격 증명으로 이루어졌는지 여부.
- 요청이 역할 또는 페더레이션 사용자의 임시 보안 자격 증명으로 이루어졌는지 여부.
- 요청이 다른 AWS 서비스에 의해 이루어졌는지 여부.
자세한 내용은 CloudTrail userIdentity 요소를 참고하세요.
Capacity Blocks 로그 파일 항목 이해하기 (Understanding Capacity Blocks log file entries)
트레일은 이벤트를 지정한 Amazon S3 버킷에 로그 파일로 전달하는 구성을 가능하게 해줘요. CloudTrail 로그 파일에는 하나 이상의 로그 항목이 포함돼요. 이벤트는 모든 소스의 단일 요청을 나타내며 요청된 작업, 작업 날짜와 시간, 요청 파라미터 등에 대한 정보를 포함해요. CloudTrail 로그 파일은 공개 API 호출의 정렬된 스택 트레이스가 아니므로 특정 순서로 나타나지 않아요.
다음 예시는 다음에 대한 CloudTrail 로그 항목을 보여줘요.
- TerminateCapacityBlocksInstances
- CapacityBlockPaymentFailed
- CapacityBlockScheduled
- CapacityBlockActive
- CapacityBlockFailed
- CapacityBlockExpired
참고 데이터 개인 정보 보호를 위해 예시의 일부 필드는 편집(redaction)됐어요.
TerminateCapacityBlocksInstances
{
"eventVersion": "1.05",
"userIdentity": {
"accountId": "123456789012",
"invokedBy": "AWS Internal;"
},
"eventTime": "2023-10-02T00:06:08Z",
"eventSource": "ec2.amazonaws.com",
"eventName": "TerminateCapacityBlockInstances",
"awsRegion": "us-east-1",
"sourceIPAddress": "203.0.113.25",
"userAgent": "aws-cli/1.15.61 Python/2.7.10 Darwin/16.7.0 botocore/1.10.60",
"requestParameters": null,
"responseElements": null,
"eventID": "a1b2c3d4-EXAMPLE",
"readOnly": false,
"resources": [
{
"accountId": "123456789012",
"type": "AWS::EC2::Instance",
"ARN": "arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"
},
{
"accountId": "123456789012",
"type": "AWS::EC2::Instance",
"ARN": "arn:aws:ec2:us-east-1:123456789012:instance/i-0598c7d356eba48d7"
}
],
"eventType": "AwsServiceEvent",
"recipientAccountId": "123456789012",
"serviceEventDetails": {
"capacityReservationId": "cr-12345678"
}
}
CapacityBlockPaymentFailed
{
"eventVersion": "1.05",
"userIdentity": {
"accountId": "123456789012",
"invokedBy": "AWS Internal;"
},
"eventTime": "2023-10-02T00:06:08Z",
"eventSource": "ec2.amazonaws.com",
"eventName": "CapacityBlockPaymentFailed",
"awsRegion": "us-east-1",
"sourceIPAddress": "203.0.113.25",
"userAgent": "aws-cli/1.15.61 Python/2.7.10 Darwin/16.7.0 botocore/1.10.60",
"requestParameters": null,
"responseElements": null,
"eventID": "a1b2c3d4-EXAMPLE",
"readOnly": false,
"resources": [
{
"ARN": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-12345678",
"accountId": "123456789012",
"type": "AWS::EC2::CapacityReservation"
}
],
"eventType": "AwsServiceEvent",
"recipientAccountId": "123456789012",
"serviceEventDetails": {
"capacityReservationId": "cr-12345678",
"capacityReservationState": "payment-failed"
}
}
CapacityBlockScheduled
{
"eventVersion": "1.05",
"userIdentity": {
"accountId": "123456789012",
"invokedBy": "AWS Internal;"
},
"eventTime": "2023-10-02T00:06:08Z",
"eventSource": "ec2.amazonaws.com",
"eventName": "CapacityBlockScheduled",
"awsRegion": "us-east-1",
"sourceIPAddress": "203.0.113.25",
"userAgent": "aws-cli/1.15.61 Python/2.7.10 Darwin/16.7.0 botocore/1.10.60",
"requestParameters": null,
"responseElements": null,
"eventID": "a1b2c3d4-EXAMPLE",
"readOnly": false,
"resources": [
{
"ARN": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-12345678",
"accountId": "123456789012",
"type": "AWS::EC2::CapacityReservation"
}
],
"eventType": "AwsServiceEvent",
"recipientAccountId": "123456789012",
"serviceEventDetails": {
"capacityReservationId": "cr-12345678",
"capacityReservationState": "scheduled"
}
}
CapacityBlockActive
{
"eventVersion": "1.05",
"userIdentity": {
"accountId": "123456789012",
"invokedBy": "AWS Internal;"
},
"eventTime": "2023-10-02T00:06:08Z",
"eventSource": "ec2.amazonaws.com",
"eventName": "CapacityBlockActive",
"awsRegion": "us-east-1",
"sourceIPAddress": "203.0.113.25",
"userAgent": "aws-cli/1.15.61 Python/2.7.10 Darwin/16.7.0 botocore/1.10.60",
"requestParameters": null,
"responseElements": null,
"eventID": "a1b2c3d4-EXAMPLE",
"readOnly": false,
"resources": [
{
"ARN": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-12345678",
"accountId": "123456789012",
"type": "AWS::EC2::CapacityReservation"
}
],
"eventType": "AwsServiceEvent",
"recipientAccountId": "123456789012",
"serviceEventDetails": {
"capacityReservationId": "cr-12345678",
"capacityReservationState": "active"
}
}
CapacityBlockFailed
{
"eventVersion": "1.05",
"userIdentity": {
"accountId": "123456789012",
"invokedBy": "AWS Internal;"
},
"eventTime": "2023-10-02T00:06:08Z",
"eventSource": "ec2.amazonaws.com",
"eventName": "CapacityBlockFailed",
"awsRegion": "us-east-1",
"sourceIPAddress": "203.0.113.25",
"userAgent": "aws-cli/1.15.61 Python/2.7.10 Darwin/16.7.0 botocore/1.10.60",
"requestParameters": null,
"responseElements": null,
"eventID": "a1b2c3d4-EXAMPLE",
"readOnly": false,
"resources": [
{
"ARN": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-12345678",
"accountId": "123456789012",
"type": "AWS::EC2::CapacityReservation"
}
],
"eventType": "AwsServiceEvent",
"recipientAccountId": "123456789012",
"serviceEventDetails": {
"capacityReservationId": "cr-12345678",
"capacityReservationState": "failed"
}
}
CapacityBlockExpired
{
"eventVersion": "1.05",
"userIdentity": {
"accountId": "123456789012",
"invokedBy": "AWS Internal;"
},
"eventTime": "2023-10-02T00:06:08Z",
"eventSource": "ec2.amazonaws.com",
"eventName": "CapacityBlockExpired",
"awsRegion": "us-east-1",
"sourceIPAddress": "203.0.113.25",
"userAgent": "aws-cli/1.15.61 Python/2.7.10 Darwin/16.7.0 botocore/1.10.60",
"requestParameters": null,
"responseElements": null,
"eventID": "a1b2c3d4-EXAMPLE",
"readOnly": false,
"resources": [
{
"ARN": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-12345678",
"accountId": "123456789012",
"type": "AWS::EC2::CapacityReservation"
}
],
"eventType": "AwsServiceEvent",
"recipientAccountId": "123456789012",
"serviceEventDetails": {
"capacityReservationId": "cr-12345678",
"capacityReservationState": "expired"
}
}