스팟 인스턴스 데이터 피드로 비용 추적하기
스팟 인스턴스 데이터 피드로 비용 추적하기 (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