請求明細のSavings Plansに書いてあるSKUについて

請求明細のSavings Plansに書いてあるSKUについて

Clock Icon2025.05.15

はじめに

皆様こんにちは、あかいけです。

突然ですがAWSの請求明細、見ていますでしょうか?
私はコストアセスメントで定期的にお客様の請求明細と睨めっこしているのですが、
ふとSavings Plans関連の明細の記述が気になりました。

まず請求明細においてSavings Plansに関連した利用費は以下の要素で構成されています。

  • オンデマンドEC2の利用料金
  • オンデマンドEC2の利用料金に対するSavings Plansの打ち消し料金
  • Savings Plansの購入料金
product_name usage_type availability_zone item_description usage_quantity rate cost
Amazon Elastic Compute Cloud APN1-BoxUsage:t3.small ap-northeast-1a $0.0272 per On Demand Linux t3.small Instance Hour 720 0.0272000000 19.5
Amazon Elastic Compute Cloud APN1-BoxUsage:t3.small ap-northeast-1a SavingsPlanNegation used by AccountId : XXXXXXXXXXX and UsageSku : 7MJR4RD25PP93ENY 720 -0.0272000000 -19.5
Savings Plans for AWS Compute usage APN1-EC2SP:t3.1yrNoUpfront 1 year No Upfront t3 EC2 Instance Savings Plan in ap-northeast-1 720 0.8428000000 606.816

この中のitem_descriptionに以下の記述がありますが、このSKUとは何を指しているのでしょうか?

  • SavingsPlanNegation used by AccountId : XXXXXXXXXXX and UsageSku : XXXXXXXXXXXX

またSavings Plansのドキュメント上でも、SKUについて特に説明はありません。

https://docs.aws.amazon.com/ja_jp/cur/latest/userguide/cur-sp.html

というわけで、このSKUがなんなのか調べてみました。
なお請求明細のダウンロード方法については以下をご参照ください。

https://dev.classmethod.jp/articles/billing-csv-single-month/

結論

Savings Plansの利用明細に記載されているSKUは、Savings Plansが適用された製品のSKU です。

例えば冒頭の以下明細であれば、ap-northeast-1aのt3.smallインスタンスタイプ(7MJR4RD25PP93ENY)にSPが適用されていることを表します。

product_name usage_type availability_zone item_description usage_quantity rate cost
Amazon Elastic Compute Cloud APN1-BoxUsage:t3.small ap-northeast-1a $0.0272 per On Demand Linux t3.small Instance Hour 720 0.0272000000 19.5
Amazon Elastic Compute Cloud APN1-BoxUsage:t3.small ap-northeast-1a SavingsPlanNegation used by AccountId : XXXXXXXXXXX and UsageSku : 7MJR4RD25PP93ENY 720 -0.0272000000 -19.5
Savings Plans for AWS Compute usage APN1-EC2SP:t3.1yrNoUpfront 1 year No Upfront t3 EC2 Instance Savings Plan in ap-northeast-1 720 0.8428000000 606.816

AWSにおけるSKUと探し方

AWSにおけるSKUについて

AWSでは、基本的にすべての製品やサービスに一意の識別子としてSKU (Stock Keeping Unit) が割り当てられています。
普段意識することはないですが、AWSの課金システムを支えている重要な要素です。

https://docs.aws.amazon.com/cur/latest/userguide/product-columns.html

SKUの基本概念

  • 定義: SKUはAWSの各サービス、リージョン、インスタンスタイプなどの組み合わせに対して一意に割り当てられる製品識別子
  • 用途: 請求処理、価格設定、リソース追跡に使用される
  • 形式: 英数字の組み合わせ(例: 7MJR4RD25PP93ENY

Savings PlansとSKUの関係

以下ドキュメントの記載から分かる通り、Savings Plans自体はSKUを持ちませんが、
請求明細では適用対象となるサービス(EC2インスタンスなど)のSKUが記載されます。

https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/price-changes.html

The Price List Query API doesn't support Savings Plan prices.

SKUの探し方

AWS Price List Query API
またはPrice List Bulk APIを使用すると、SKUに関する情報を効率的に検索できます。

今回はAWS Price List Query APIを使ってみます。

https://docs.aws.amazon.com/ja_jp/awsaccountbilling/latest/aboutv2/using-price-list-query-api.html

https://docs.aws.amazon.com/ja_jp/awsaccountbilling/latest/aboutv2/using-the-aws-price-list-bulk-api.html

なおPrice List Bulk APIの利用例は、よろしければ以下をご参照ください。

https://dev.classmethod.jp/articles/awsaws-price-list-api-release/

基本的な検索方法

  1. サービス一覧の取得

まず aws pricing describe-services で製品の一覧が確認できます。

# すべてのサービスを取得
aws pricing describe-services --region us-east-1

# サービス名のみを抽出
aws pricing describe-services --region us-east-1 | jq -r '.Services[] | .ServiceCode'
  1. 特定のインスタンスタイプからSKUを探す

次に aws pricing get-products で特定の製品情報を確認できます。
以下は一例です。

# AWS Lambdaの製品情報一覧
aws pricing get-products --service-code AWSLambda \
  --region us-east-1 | jq -r '.PriceList[]' | jq '.'
# Amazon EC2 t3.smallでフィルタリング
aws pricing get-products --service-code AmazonEC2 \
  --filters "Type=TERM_MATCH,Field=instanceType,Value=t3.small" \
  --region us-east-1 | jq -r '.PriceList[]' | jq '.'
# 東京リージョンのEC2 t3.smallでフィルタリング
aws pricing get-products --service-code AmazonEC2 \
  --filters "Type=TERM_MATCH,Field=instanceType,Value=t3.small" \
  "Type=TERM_MATCH,Field=location,Value=Asia Pacific (Tokyo)" \
  --region us-east-1 | jq -r '.PriceList[]' | jq '.'
  1. SKUから製品情報を逆引き

また以下のようにすればSKUから該当する製品を逆引きできます。

aws pricing get-products --service-code AmazonEC2 \
  --filters "Type=TERM_MATCH,Field=sku,Value=7MJR4RD25PP93ENY" \
  --region us-east-1 | jq -r '.PriceList[]' | jq '.'

さいごに

以上、請求明細のSavings Plansに書いてあるSKUについてでした。

Savings Plansの明細に記載されているSKUは、単にSavings Plansが適用された製品(今回の場合はEC2インスタンス)のSKUを表しているだけでしたが、この情報を理解することで請求明細をより深く知れて満足しました。

おそらく実務で活用するタイミングはあまりないでしょうが、AWSの料金形態の裏側を見たい時に使っていただければ幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.