스팟 인스턴스 데이터 피드로 비용 추적하기

스팟 인스턴스 데이터 피드로 비용 추적하기 (Track your Spot Instance costs using the Spot Instance data feed)

스팟 인스턴스의 요금을 이해하는 데 도움이 되도록 Amazon EC2는 스팟 인스턴스 사용량과 가격을 설명하는 데이터 피드(data feed)를 제공해요. 이 데이터 피드는 데이터 피드를 구독할 때 지정한 Amazon S3 버킷으로 전송돼요.

데이터 피드 파일은 일반적으로 한 시간에 한 번 버킷에 도착해요. 특정 시간에 실행 중인 스팟 인스턴스가 없으면 그 시간의 데이터 피드 파일을 받지 않아요. 각 시간의 스팟 인스턴스 사용량은 일반적으로 단일 데이터 파일에 담겨요. 이 파일들은 버킷에 전달되기 전에 압축(gzip)돼요. Amazon EC2는 파일이 클 때(예: 해당 시간의 파일 내용이 압축 전에 50MB를 초과할 때) 특정 사용량 시간에 대해 여러 파일을 쓸 수 있어요.

참고 AWS 계정당 스팟 인스턴스 데이터 피드를 하나만 만들 수 있어요. 스팟 인스턴스 데이터 피드는 China (Beijing), China (Ningxia), AWS GovCloud (US) 및 기본적으로 비활성화된 리전을 제외한 모든 AWS 리전에서 지원돼요.

목차 (Contents)

  • 데이터 피드 파일 이름과 형식
  • Amazon S3 버킷 요구 사항
  • 스팟 인스턴스 데이터 피드 구독하기
  • 데이터 피드의 데이터 보기
  • 스팟 인스턴스 데이터 피드 삭제하기

데이터 피드 파일 이름과 형식

스팟 인스턴스 데이터 피드 파일 이름은 다음 형식을 사용해요(날짜와 시간은 UTC).

bucket-name.s3.amazonaws.com/optional-prefix/aws-account-id.YYYY-MM-DD-HH.n.unique-id.gz

예를 들어 버킷 이름이 amzn-s3-demo-bucket이고 접두사가 my-prefix라면 파일 이름은 다음과 비슷해요.

amzn-s3-demo-bucket.s3.amazonaws.com/my-prefix/111122223333.2023-12-09-07.001.b959dbc6.gz

버킷 이름에 대한 자세한 내용은 Amazon S3 User Guide의 'Bucket naming rules'를 참고하세요.

스팟 인스턴스 데이터 피드 파일은 탭으로 구분돼요. 데이터 파일의 각 줄은 인스턴스 사용량의 한 시간에 해당하며 다음 표에 나열된 필드를 포함해요.

필드 설명
Timestamp 이 인스턴스 사용량에 부과된 가격을 결정하는 데 사용되는 타임스탬프.
UsageType 청구되는 사용 유형과 인스턴스 유형. m1.small 스팟 인스턴스의 경우 이 필드는 SpotUsage로 설정되고, 다른 모든 인스턴스 유형에서는 SpotUsage:{instance-type}로 설정돼요. 예: SpotUsage:c1.medium.
Operation 청구되는 제품. Linux 스팟 인스턴스의 경우 RunInstances로 설정되고, Windows 스팟 인스턴스의 경우 RunInstances:0002로 설정돼요. 스팟 사용량은 가용 영역별로 그룹화돼요.
InstanceID 이 인스턴스 사용량을 생성한 스팟 인스턴스의 ID.
MyBidID 이 인스턴스 사용량을 생성한 스팟 인스턴스 요청의 ID.
MyMaxPrice 이 스팟 요청에 지정된 최대 가격.
MarketPrice Timestamp 필드에 지정된 시점의 스팟 가격.
Charge 이 인스턴스 사용량에 부과된 가격.
Version 데이터 피드 버전. 가능한 버전은 1.0.

Amazon S3 버킷 요구 사항

데이터 피드를 구독할 때 데이터 피드 파일을 저장할 Amazon S3 버킷을 지정해야 해요. 데이터 피드용 Amazon S3 버킷을 선택하기 전에 다음을 고려하세요.

  • 버킷에 대한 FULL_CONTROL 권한이 있어야 해요. 버킷 소유자라면 기본적으로 이 권한이 있어요. 그렇지 않으면 버킷 소유자가 AWS 계정에 이 권한을 부여해야 해요.
  • 데이터 피드를 구독하면 이 권한들이 버킷 ACL을 업데이트해 AWS 데이터 피드 계정에 FULL_CONTROL 권한을 부여하는 데 사용돼요. AWS 데이터 피드 계정이 버킷에 데이터 피드 파일을 써요. 계정에 필요한 권한이 없으면 데이터 피드 파일을 버킷에 쓸 수 없어요. 자세한 내용은 Amazon CloudWatch Logs User Guide의 'Logs sent to Amazon S3'를 참고하세요. ACL을 업데이트해 AWS 데이터 피드 계정의 권한을 제거하면 데이터 피드 파일을 버킷에 쓸 수 없어요. 데이터 피드 파일을 받으려면 데이터 피드를 다시 구독해야 해요.
  • 각 데이터 피드 파일에는 자체 ACL이 있어요(버킷의 ACL과 분리). 버킷 소유자는 데이터 파일에 대해 FULL_CONTROL 권한을 가져요. AWS 데이터 피드 계정은 읽기·쓰기 권한을 가져요.
  • 데이터 피드 구독을 삭제해도 Amazon EC2는 버킷이나 데이터 파일에서 AWS 데이터 피드 계정의 읽기·쓰기 권한을 제거하지 않아요. 이 권한은 직접 제거해야 해요.
  • AWS Key Management Service(AWS KMS)에 저장된 AWS KMS 키로 서버 측 암호화(SSE-KMS)를 사용해 Amazon S3 버킷을 암호화한다면 고객 관리 키를 사용해야 해요. 자세한 내용은 Amazon CloudWatch Logs User Guide의 'Amazon S3 bucket server-side encryption'을 참고하세요.

스팟 인스턴스 데이터 피드 구독하기

언제든지 스팟 인스턴스 데이터 피드를 구독할 수 있어요. 이 작업은 Amazon EC2 콘솔로는 완료할 수 없어요. 버킷에 권한이 충분하지 않다는 오류가 뜨면 다음 문서의 문제 해결 정보를 참고하세요: 'Troubleshoot the data feed for Spot Instances'.

AWS CLI

데이터 피드를 구독하려면

create-spot-datafeed-subscription 명령을 사용하세요.

접두사가 있는 버킷을 지정하려면 다음 예시를 사용하세요.

aws ec2 create-spot-datafeed-subscription \
    --bucket amzn-s3-demo-bucket \
    --prefix my-prefix

접두사가 없는 버킷을 지정하려면 다음 예시를 사용하세요.

aws ec2 create-spot-datafeed-subscription \
    --bucket amzn-s3-demo-bucket

PowerShell

데이터 피드를 구독하려면

New-EC2SpotDatafeedSubscription cmdlet을 사용하세요.

접두사가 있는 버킷을 지정하려면 다음 예시를 사용하세요.

New-EC2SpotDatafeedSubscription `
    -Bucket amzn-s3-demo-bucket `
    -Prefix my-prefix

접두사가 없는 버킷을 지정하려면 다음 예시를 사용하세요.

New-EC2SpotDatafeedSubscription `
    -Bucket amzn-s3-demo-bucket

데이터 피드의 데이터 보기

AWS Management Console에서 AWS CloudShell을 엽니다. 다음 s3 sync 명령을 사용해 데이터 피드용 S3 버킷에서 .gz 파일을 가져와 지정한 폴더에 저장하세요.

aws s3 sync s3://amzn-s3-demo-bucket ./data-feed

.gz 파일의 내용을 표시하려면 S3 버킷 내용을 저장한 폴더로 변경하세요.

cd data-feed

ls 명령으로 파일 이름을 확인하세요. zcat 명령을 파일 이름과 함께 사용해 압축 파일의 내용을 표시하세요. 다음은 예시 명령이에요.

zcat  111122223333.2023-12-09-07.001.b959dbc6.gz

다음은 예시 출력이에요.

#Version: 1.0
#Fields: Timestamp UsageType Operation InstanceID MyBidID MyMaxPrice MarketPrice Charge Version
2023-12-09 07:13:47 UTC USE2-SpotUsage:c7a.medium       RunInstances:SV050      i-0c3e0c0b046e050df     sir-pwq6nmfp    0.0510000000 USD        0.0142000000 USD        0.0142000000 USD        1

스팟 인스턴스 데이터 피드 삭제하기

스팟 인스턴스 데이터 피드를 다 썼으면 삭제할 수 있어요.

AWS CLI

데이터 피드를 삭제하려면

delete-spot-datafeed-subscription 명령을 사용하세요.

aws ec2 delete-spot-datafeed-subscription

PowerShell

데이터 피드를 삭제하려면

Remove-EC2SpotDatafeedSubscription cmdlet을 사용하세요.

Remove-EC2SpotDatafeedSubscription

더 알아보기 (Learn more)