

# 스팟 인스턴스 데이터 피드를 사용하여 스팟 인스턴스 비용 추적
<a name="spot-data-feeds"></a>

스팟 인스턴스 요금을 쉽게 이해할 수 있도록 Amazon EC2에서는 스팟 인스턴스 사용량 및 요금을 설명하는 데이터 피드를 제공합니다. 이 데이터 피드는 데이터 피드를 구독할 때 지정하는 Amazon S3 버킷으로 전송됩니다.

일반적으로 데이터 피드 파일은 1시간에 한 번씩 버킷에 도착합니다. 특정 시간 동안 스팟 인스턴스가 실행되지 않는 경우 해당 시간에 대한 데이터 피드 파일이 수신되지 않습니다.

일반적으로 각 시간의 스팟 인스턴스 사용량은 단일 데이터 파일로 제공됩니다. 이러한 파일은 버킷으로 전송되기 전에 압축(gzip)됩니다. 파일이 매우 큰 경우 Amazon EC2는 지정된 사용 시간에 대해 여러 개의 파일을 작성할 수 있습니다(예: 압축 전 해당 시간의 파일 콘텐츠가 50MB를 초과하는 경우).

**참고**  
AWS 계정당 스팟 인스턴스 데이터 피드를 한 개만 생성할 수 있습니다.

스팟 인스턴스 데이터 피드는 중국(베이징), 중국(닝샤), AWS GovCloud(미국) 및 [기본적으로 비활성화된 리전](using-regions-availability-zones.md#concepts-available-regions)을 제외한 모든 AWS 리전에서 지원됩니다.

**Topics**
+ [데이터 피드 파일 이름 및 형식](#using-spot-instances-format)
+ [Amazon S3 버킷 요구 사항](#using-spot-instances-dfs3)
+ [스팟 인스턴스 데이터 피드 구독](#using-spot-instances-datafeed-all)
+ [데이터 피드에서 데이터 보기](#using-spot-instances-datafeed-view-data)
+ [스팟 인스턴스 데이터 피드 삭제](#using-spot-instances-datafeed-delete)

## 데이터 피드 파일 이름 및 형식
<a name="using-spot-instances-format"></a>

스팟 인스턴스 데이터 피드 파일 이름은 다음 형식을 사용합니다(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 사용 설명서*에서 [버킷 이름 지정 규칙](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html)을 참조하세요.

스팟 인스턴스 데이터 피드 파일은 탭으로 구분됩니다. 데이터 파일의 각 줄은 1 인스턴스 시간에 해당하며 다음 표에 나열된 필드를 포함합니다.


|  필드  |  설명  | 
| --- | --- | 
|   `Timestamp`   |  이 인스턴스 사용량에 대해 청구된 가격을 결정하는 데 사용되는 타임스탬프입니다.  | 
|   `UsageType`   |  청구되는 사용 유형 및 인스턴스 유형입니다. `m1.small` 스팟 인스턴스의 경우 이 필드는 `SpotUsage`로 설정됩니다. 다른 모든 인스턴스 유형의 경우 이 필드는 `SpotUsage:`\$1*instance-type*\$1으로 설정됩니다. 예를 들어 `SpotUsage:c1.medium`입니다.  | 
|   `Operation`   |  청구되는 제품입니다. Linux 스팟 인스턴스의 경우 이 필드는 `RunInstances`로 설정됩니다. Windows 스팟 인스턴스의 경우 이 필드는 `RunInstances:0002`로 설정됩니다. 스팟 사용은 가용 영역에 따라 그룹화됩니다.  | 
|   `InstanceID`   |  이 인스턴스 사용량을 생성한 스팟 인스턴스의 ID입니다.  | 
|   `MyBidID`   |  이 인스턴스 사용량을 생성한 스팟 인스턴스 요청의 ID입니다.  | 
|   `MyMaxPrice`   |  이 스팟 요청에 대해 지정된 최고가입니다.  | 
|   `MarketPrice`   |  `Timestamp` 필드에 지정된 시간의 스팟 가격입니다.  | 
|   `Charge`   |  이 인스턴스 사용량에 대해 청구된 가격입니다.  | 
|   `Version`   |  데이터 피드 버전. 가능한 버전은 1.0입니다.  | 

## Amazon S3 버킷 요구 사항
<a name="using-spot-instances-dfs3"></a>

데이터 피드를 구독하면 데이터 피드 파일을 저장하기 위한 Amazon S3 버킷을 지정해야 합니다.

데이터 피드에 대한 Amazon S3 버킷을 선택하기 전에 다음 사항을 고려하세요.
+ 버킷에 대한 `FULL_CONTROL` 권한이 있어야 합니다. 버킷 소유자인 경우 기본적으로 이 권한이 있습니다. 그렇게 하지 않으면 버킷 소유자가 AWS 계정에 이 권한을 부여해야 합니다.
+ 데이터 피드를 구독할 때 이러한 권한으로 버킷 ACL을 업데이트하여 AWS 데이터 피드 계정에 `FULL_CONTROL` 권한을 부여합니다. AWS 데이터 피드 계정은 버킷에 데이터 피드 파일을 씁니다. 필요한 권한이 계정에 없을 경우 데이터 피드 파일을 버킷에 쓸 수 없습니다. 자세한 내용은 *Amazon CloudWatch Logs 사용 설명서*의 [Amazon S3로 전송된 로그](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-S3)를 참조하세요.

  ACL을 업데이트하고 AWS 데이터 피드 계정에 대한 권한을 제거할 경우 데이터 피드 파일을 버킷에 쓸 수 없습니다. 데이터 피드 파일을 수신하려면 데이터 피드를 다시 구독해야 합니다.
+ 각 데이터 피드 파일에는 고유의 ACL(버킷용 ACL과는 별도)이 있습니다. 버킷 소유자는 데이터 파일에 대한 `FULL_CONTROL` 권한을 가지고 있습니다. AWS 데이터 피드 계정은 읽기 및 쓰기 권한이 있습니다.
+ 데이터 피드 구독을 삭제해도 Amazon EC2에서 버킷 또는 데이터 파일에 대한 AWS 데이터 피드 계정의 읽기 및 쓰기 권한이 제거되지 않습니다. 이러한 권한을 직접 제거해야 합니다.
+ AWS Key Management Service(SSE-KMS)에 저장된 AWS KMS 키로 서버 측 암호화를 사용하여 Amazon S3 버킷을 암호화하는 경우 고객 관리형 키를 사용해야 합니다. 자세한 내용은 *Amazon CloudWatch Logs 사용 설명서*의 [Amazon S3 버킷 서버 측 암호화](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-SSE-KMS-S3) 섹션을 참조하세요.

## 스팟 인스턴스 데이터 피드 구독
<a name="using-spot-instances-datafeed-all"></a>

언제든지 스팟 인스턴스 데이터 피드를 구독할 수 있습니다. Amazon EC2 콘솔에서는 이 작업을 완료할 수 없습니다.

버킷에 충분한 권한이 없다는 오류가 발생하는 경우 [스팟 인스턴스의 데이터 피드 문제 해결](https://repost.aws/knowledge-center/s3-data-feed-ec2-spot-instances)을 참조하세요.

------
#### [ AWS CLI ]

**데이터 피드를 구독하려면**  
[create-spot-datafeed-subscription](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-spot-datafeed-subscription.html) 명령을 사용합니다.

접두사를 사용하여 버킷을 지정하려면 다음 예제를 사용합니다.

```
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](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2SpotDatafeedSubscription.html) cmdlet을 사용합니다.

접두사를 사용하여 버킷을 지정하려면 다음 예제를 사용합니다.

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

접두사 없이 버킷을 지정하려면 다음 예제를 사용합니다.

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

------

## 데이터 피드에서 데이터 보기
<a name="using-spot-instances-datafeed-view-data"></a>

AWS Management Console에서 AWS CloudShell을 엽니다. 다음 [s3 sync](https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html) 명령을 사용하여 데이터 피드를 위해 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
```

## 스팟 인스턴스 데이터 피드 삭제
<a name="using-spot-instances-datafeed-delete"></a>

스팟 인스턴스 데이터 피드 작업이 끝나면 데이터 피드를 삭제할 수 있습니다.

------
#### [ AWS CLI ]

**데이터 피드를 삭제하려면**  
[delete-spot-datafeed-subscription](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-spot-datafeed-subscription.html) 명령을 사용합니다.

```
aws ec2 delete-spot-datafeed-subscription
```

------
#### [ PowerShell ]

**데이터 피드를 삭제하려면**  
[Remove-EC2SpotDatafeedSubscription](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2SpotDatafeedSubscription.html) cmdlet을 사용합니다.

```
Remove-EC2SpotDatafeedSubscription
```

------