スポットインスタンスのデータフィード - Amazon Elastic Compute Cloud

スポットインスタンスのデータフィード

スポットインスタンスの料金について理解しやすくするため、Amazon EC2 では、スポットインスタンスの使用状況と料金の詳細を、データフィードにより提供しています。このデータフィードは、データフィードを購読するときに指定する Amazon S3 バケットに送信されます。

データフィードファイルは、通常、1 時間に 1 回バケットに届き、各使用時は、通常、単一のデータファイルでカバーされます。これらのファイルは、ユーザーのバケットに配信される前に圧縮 (gzip) されます。ファイルが大きい場合 (ある時間に関するファイルの内容が、圧縮前に 50 MB を超える場合など) は、Amazon EC2 は指定した時間の使用状況に関する情報を複数のファイルに書き込みます。

注記

1 つの AWS アカウントにつき 1 つのスポットインスタンスデータフィードのみを作成できます。スポットインスタンス実行が一定の時間に満たない場合、その時間のデータフィードファイルは送信されません。

スポットインスタンスのデータフィードは、AWS中国 (北京)、中国 (寧夏)、AWSGovCloud (米国) 以外のすべてのリージョンおよびデフォルトでは無効になっているリージョンでサポートされています。

データフィードのファイル名と形式

スポットインスタンスのデータフィードのファイル名には、(UTC の日付と時刻を使用しながら)次のような形式が使用されます。

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

例えば、バケット名が my-bucket-name で、プレフィクスが my-prefix である場合、ファイル名は次のようになります。

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

バケット名の詳細については、「Amazon S3 ユーザーガイド」の「バケットの名前付け」を参照してください。

スポットインスタンスのデータフィードファイルはタブ区切りです。データファイルの各行は、1 個のインスタンス時間に対応し、次の表に示すフィールドが含まれています。

フィールド 説明

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 ユーザーガイド」の「Amazon S3 に送信されたログ」を参照してください。

    注記

    ACL を更新して AWS データフィードアカウントのアクセス権限を削除すると、データフィードファイルをバケットに書き込むことができなくなります。 データフィードファイルを受け取るには、データフィードを再購読する必要があります。

  • 各データフィードファイルには、独自の ACL があります (バケットの ACL とは別です)。バケット所有者には、データファイルに対して FULL_CONTROL のアクセス許可があります。AWS データフィードアカウントには読み書きのアクセス権限があります。

  • 無効化された ACL をバケットに適用した場合は、フルコントロール権限を持つユーザーにバケットへの書き込みを許可するバケットポリシーを追加してください。詳細については、バケットポリシーを確認および更新する方法を参照してください。

  • データフィードの購読を削除しても、Amazon EC2 は、AWS データフィードアカウントでの、バケットまたはデータファイルに対する読み書きのアクセス許可を削除しません。これらのアクセス許可は自分で削除する必要があります。

  • AWS Key Management Service (SSE-KMS) に保存されている AWS KMS キーによるサーバー側の暗号化を使用して Simple Storage Service (Amazon S3) バケットを暗号化する場合は、カスタマーマネージド型キーを使用する必要があります。詳細については、「Amazon CloudWatch Logs ユーザーガイド」の「Simple Storage Service (Amazon S3) バケットのサーバー側の暗号化」を参照してください。

    注記

    スポットインスタンスデータフィードの場合、S3 ファイルを生成するリソースは Amazon CloudWatch Logs ではなくなりました。したがって、aws:SourceArn セクションを S3 バケット許可ポリシーおよび KMS ポリシーから削除する必要があります。

スポットインスタンスのデータフィードの購読

データフィードを購読するには、create-spot-datafeed-subscription コマンドを使用します。

aws ec2 create-spot-datafeed-subscription \ --bucket my-bucket-name \ [--prefix my-prefix]

出力例

{ "SpotDatafeedSubscription": { "OwnerId": "111122223333", "Bucket": "my-bucket-name", "Prefix": "my-prefix", "State": "Active" } }

スポットインスタンスのデータフィードを詳細表示する

データフィードの購読の詳細を表示するには、describe-spot-datafeed-subscription コマンドを使用します。

aws ec2 describe-spot-datafeed-subscription

出力例

{ "SpotDatafeedSubscription": { "OwnerId": "123456789012", "Prefix": "spotdata", "Bucket": "my-s3-bucket", "State": "Active" } }

データフィード内のデータを表示する

AWS Management Consoleで AWS CloudShell を開きます。次の s3 sync コマンドを使用して、データフィードの S3 バケットから .gz ファイルを取得し、指定したフォルダに保存します。

aws s3 sync s3://my-s3-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

スポットインスタンスのデータフィードを削除する

データフィードを削除するには、delete-spot-datafeed-subscription コマンドを使用します。

aws ec2 delete-spot-datafeed-subscription