Help us understand the problem. What is going on with this article?

EC2 料金データについて(参考訳)

More than 1 year has passed since last update.

このドキュメントは EC2 Pricing Data の参考訳です。
EC2 の単価を決定するにはたくさんの項目があることや、AWS が提供するコストレポート(CUR)について説明されています。

背景

EC2の価格表をチェックしたいと思っていても、AWS のインスタンスタイプはたくさんの種類があって、さらに Region, Operation, UsadeType など価格を決定する要素も多く、正確な単価をすぐに知りたい場合でも膨大な時間がかかってしまって、辛い状況になります。

EC2 価格表の入手先 

価格表は色々なサイトに載っています。

  • AWS EC2 Pricing Page: AWS のオフィシャルページに価格表がありますが、表示速度が遅く、たくさんボタンをクリックしない限り欲しい情報が出てきません。さらに、検索する方法がまだありません。
  • AWS Cost Calculator: インスタンスタイプを把握して、他のコストと合わせて予算を設定するサイト。
  • ec2instances.info: 価格決定のための色々な要素を組み合わせられるサードパーティサイト。
  • AWS Price List API: このポストでシェアしたいものです!

AWS Price List API

この API はアマゾンが提供しているすべてのサービスの価格を網羅しています。

OfferIndex にアクセスすることによってすべてのサービスの OfferCode と URL を取得します。

https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/index.json

こんな感じに返ってきます:

{
  "formatVersion" : "v1.0",
  "disclaimer" : "This pricing list is for informational purposes only. All prices are subject to the additional terms included in the pricing pages on http://aws.amazon.com. All Free Tier prices are also subject to the terms included at https://aws.amazon.com/free/",
  "publicationDate" : "2015-11-19T02:10:02Z",
 "offers" : {
    "AmazonS3" : {
      "offerCode" : "AmazonS3",
      "currentVersionUrl" : "/offers/v1.0/aws/AmazonS3/current/index.json"
    },
    "AmazonRedshift" : {
      "offerCode" : "AmazonRedshift",
      "currentVersionUrl" : "/offers/v1.0/aws/AmazonRedshift/current/index.json"
    },
    "AmazonEC2" : {
      "offerCode" : "AmazonEC2",
      "currentVersionUrl" : "/offers/v1.0/aws/AmazonEC2/current/index.json"
    },
    "AmazonCloudWatch" : {
      "offerCode" : "AmazonCloudWatch",
      "currentVersionUrl" : "/offers/v1.0/aws/AmazonCloudWatch/current/index.json"
    }
  }
}

例として EC2 の価格の index を取得してみます。これは 40 万アイテムもの膨大なリストを含んでいて、一個の API の要求では body 内にすべての情報は返ってきません。
幸運にも、AWS は全てのデータを CSV フォーマット(file size は約304MB)で提供しており、以下のURLからダウンロードできます。(が、スペックの高くないノート PC の場合は開いちゃダメです):

https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonEC2/current/index.csv

CSV のスクリーンショット (私のマックで開いた場合):

excel.png

確認できるように、 アイテムの数は40万以上にものぼります! なぜこんなに価格データがあるのでしょうか?

下記のようにCSVをフィルタにかけると

  • InstanceType,
  • Operation,
  • Location,
  • TermType,
  • UsageType,
  • Tenancy,
  • ...

PricePerUnit という列の中に、価格データを含む行が残ります。このセルの数字は特定のリージョンの特定のインスタンスの価格設定レートを表しています。例えば、

Region および InstanceType をフィルタリングした後、東京リージョンの m3.medium インスタンスには 204 の価格設定 が含まれます。
そしてその m3.medium インスタンスの 204 の価格設定は異なるレートをです。なぜなら OS(Windows, Linux/Unix, SUSE, Enterprise Linux などで価格が異なる)、予約期間(3 年または 1 年と、前払いなし、一部前払い、全額前払いの支払いオプション、Convertible と Standard のクラス)、プリインストールされたソフトウェアなどの項目があるためです。

CSV を DynamoDb に dump する

BigQuery や QuickSight など、巨大な CSV を可視化するためのビックデータソリューションはたくさんあるのですが、早くデータを見たいので DynamoDb に dump することに決めました。使っていない値をフィルタした後、グローバルに利用可能な EC2 のデータを 309,365 個取得しました。

dynamodb1.png

あるアイテムをクリックしてみると、特定の m5.12xlarge の価格データはこのようになります

dynamodb2.png

検索したいインスタンスの価格データを簡単に見れるようになりました。

dynamodb3.png

興味深い項目

項目がたくさんあるために、価格データが莫大な量になります。そして、true unblended cost を自分自身で計算しようとするならば、これらの項目をすべて理解しなければなりません。ここで、最も重要と思われるいくつかの項目を説明してみたいと思います。

  • TermType: OnDemand, or Reserved
  • PriceDescription: The description of the pricing item
  • ProductFamily: Compute Instance, Data Transfer or EBS Storage, etc
  • serviceCode: AmazonEC2
  • Location: Region, eg: Asia Pacific (Tokyo)
  • InstanceType: The type of instance, eg: c1.large
  • UsageType: AWS がオフィシャルに月次請求書を計算するために使用する項目。この項目をあなたの毎月の CUR csv にある列と突き合わせることで、AWS は単価を適用し総使用コストを生成します。
  • Tenancy: Shared, Dedicated, or Host
  • Operation: This defines what OS is the instance running, eg:
    • RunInstances Amazon EC2 running Linux/UNIX
    • RunInstances:000g Amazon EC2 running SUSE Linux
    • RunInstances:0010 Amazon EC2 running Red Hat Enterprise Linux
    • RunInstances:0002 Amazon EC2 running Windows
    • RunInstances:0006 Amazon EC2 running Windows with SQL Server Standard
    • RunInstances:0102 Amazon EC2 running Windows with SQL Server Enterprise
    • RunInstances:0202 Amazon EC2 running Windows with SQL Server Web
    • RunInstances:0800 Amazon EC2 running Windows (Bring your own license)
    • RunInstances:SV006 Amazon EC2 running Linux/UNIX Spot Instance-hour in US East (Virginia) in VPC Zone #6 ...
    • ...

CUR と自分で計算する方法について

CUR(Cost and Usage Report)は、時間単位/日単位で AWS があなたの S3 バケット(Payer アカウント経由)に提供する CSV ファイルです。このCSVファイルには、すべてのサービス使用データが詳細に含まれています。

したがって、CUR csv ファイルを元にのコストを計算し、AWS の使用状況を詳細に把握することができます。CUR と一括請求の詳細はこちらのAWSドキュメントに記載されています。

自分で計算することは難しく、人的リソースも集中する必要があります。特に、RI ブレンドが複数の aws アカウント間で発生した場合、正しい使用状況を再計算する必要があります。

幸運にも、CUR の再計算サービスを提供している SaaS ベンダーがあります。

私は Mobingi チームで働いており、私たちは多くの AWS のお客様に対し、毎月の請求書計算のお手伝いをしています。金額の合計は数百万ドルにもなります。Mobingi Wave を使い始めるのはとても簡単です。

別の記事で CUR CSV 形式についてもっと詳しく説明します。

ngratin
alieaters
Alibaba Cloudを上手に使うためのノウハウの共有を目的としたコミュニティ
https://www.alieaters.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away