Amazon EC2のReserved Instancesを使ってみる

先日紹介した、Amazon EC2を事前支払いを行って長期的に利用する場合、大幅に利用コストを下げる(安くする)ことができるReserved Instances」を実際に使ってみましたので、メモとして残しておきます。

# チュートリアルっぽいのが、AWSのドキュメントに無かった。
# そして、APIのドキュメントは現時点で誤植多し・・・。
# 一番安いパターンでも$325かかる&1年契約なので、なかなか気軽に試せないはず。
# というわけで、このエントリは、EC2に興味のある方にはお役に立てるはず。


ちなみに、「Reserved Instances」の内容、すごいところについては、以下のエントリにて紹介しています。


では、早速使ってみましょう。

EC2 API Toolsのバージョンを確認

使うためには、現状ではAmazon EC2 API Tools(Amazon EC2 Command-Line Tools)が必要です。
バージョンが古い場合は、新しくする必要があります。(2009-03-01版以降が必要かと)


このツールの導入方法や使い方は、以下を参考にしてみてください。


まだインストールしていない方、手元のバージョンが古い方は、以下から最新版をダウンロードしてインストールしちゃいましょう。

$ wget http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip
$ unzip ec2-api-tools.zip


で、動作確認で、以下のような感じで表示されればOKです。

$ ec2ver
1.3-34128 2009-03-01

Reservedしたいインスタンスの種類を決めて、offering-idを確認

まず、長期で利用するインスタンスのタイプを決めましょう。
この事前支払いで購入する際にインプットになるのは、「ロケーション(us-east-1aとか)」「インスタンスタイプ(m1.smallとか)」「年数(1年か3年か)」の3つです。


それぞれの意味については、、、

あたりが、参考になるかと思います。


では、早速"offering-id"を確認してみます。まず、"ec2-describe-reserved-instances-offerings"コマンドを実行します。

$ ec2-describe-reserved-instances-offerings
OFFERING        e5a2ff3b-f6eb-4b4e-83f8-b879d7060257    us-east-1b      c1.medium       3y      1000.0  0.06    Linux/UNIX
OFFERING        248e7b75-afbc-4724-82b2-d78353299433    us-east-1a      c1.medium       3y      1000.0  0.06    Linux/UNIX
OFFERING        60dcfab3-d5b8-4d3d-9f38-480b34d38239    us-east-1c      c1.medium       3y      1000.0  0.06    Linux/UNIX
OFFERING        c48ab04c-42bb-4e5b-8c1b-c015f9604dd5    us-east-1b      c1.medium       1y      650.0   0.06    Linux/UNIX
OFFERING        ceb6a579-b754-4a50-a53e-36efdb8eb28b    us-east-1a      c1.medium       1y      650.0   0.06    Linux/UNIX
OFFERING        3a98bf7d-b94b-412a-8de5-8c77dfcc4ffd    us-east-1c      c1.medium       1y      650.0   0.06    Linux/UNIX
OFFERING        248e7b75-ed4c-4ca7-b42b-d14ee74a3360    us-east-1a      c1.xlarge       3y      4000.0  0.24    Linux/UNIX
OFFERING        ceb6a579-1420-4728-ace3-9cb73934afcf    us-east-1b      c1.xlarge       3y      4000.0  0.24    Linux/UNIX
OFFERING        60dcfab3-97dd-421b-8f75-c126de7741ce    us-east-1c      c1.xlarge       3y      4000.0  0.24    Linux/UNIX
OFFERING        ceb6a579-f9b0-4bff-994c-c62030080d27    us-east-1a      c1.xlarge       1y      2600.0  0.24    Linux/UNIX
OFFERING        4b2293b4-cb88-480b-999d-a17683faa92f    us-east-1b      c1.xlarge       1y      2600.0  0.24    Linux/UNIX
OFFERING        60dcfab3-fa53-4d32-97cc-2fd1a0a8c0ac    us-east-1c      c1.xlarge       1y      2600.0  0.24    Linux/UNIX
OFFERING        649fd0c8-8bd3-489e-904c-4c5dfcb131ea    us-east-1a      m1.large        3y      2000.0  0.12    Linux/UNIX
OFFERING        d586503b-6876-4d40-8f94-1b2dde6b0ead    us-east-1b      m1.large        3y      2000.0  0.12    Linux/UNIX
OFFERING        248e7b75-5324-48e5-9749-fd3b4de01829    us-east-1c      m1.large        3y      2000.0  0.12    Linux/UNIX
OFFERING        248e7b75-a817-462e-996a-8ea7b4810a0e    us-east-1a      m1.large        1y      1300.0  0.12    Linux/UNIX
OFFERING        649fd0c8-4af1-4f63-bbdb-1a05951886a4    us-east-1b      m1.large        1y      1300.0  0.12    Linux/UNIX
OFFERING        c48ab04c-280c-4879-8119-63ac87002498    us-east-1c      m1.large        1y      1300.0  0.12    Linux/UNIX
OFFERING        3a98bf7d-96c3-4d2f-a263-123fa6b46d61    us-east-1a      m1.small        3y      500.0   0.03    Linux/UNIX
OFFERING        248e7b75-0799-4a55-a0cb-f8d28eb11921    us-east-1c      m1.small        3y      500.0   0.03    Linux/UNIX
OFFERING        438012d3-d93c-4fbd-a245-33b4bf0930ec    us-east-1b      m1.small        3y      500.0   0.03    Linux/UNIX
OFFERING        60dcfab3-a56c-4092-8c90-3677e9da02b7    us-east-1a      m1.small        1y      325.0   0.03    Linux/UNIX
OFFERING        4b2293b4-1e6c-4eb3-ab74-4493c0e57987    us-east-1c      m1.small        1y      325.0   0.03    Linux/UNIX
OFFERING        c48ab04c-c057-457e-a4d8-a0f172f4db2d    us-east-1b      m1.small        1y      325.0   0.03    Linux/UNIX
OFFERING        c48ab04c-6769-4bc1-966e-f7b0326001dd    us-east-1a      m1.xlarge       3y      4000.0  0.24    Linux/UNIX
OFFERING        d586503b-20ad-4beb-bc88-60a1333c2b98    us-east-1b      m1.xlarge       3y      4000.0  0.24    Linux/UNIX
OFFERING        649fd0c8-4767-43a1-a530-b4a1f0c08c31    us-east-1c      m1.xlarge       3y      4000.0  0.24    Linux/UNIX
OFFERING        e5a2ff3b-8646-4f48-912a-aaeba5823c73    us-east-1a      m1.xlarge       1y      2600.0  0.24    Linux/UNIX
OFFERING        c48ab04c-119e-41f1-8b0f-b83c4fc4f869    us-east-1b      m1.xlarge       1y      2600.0  0.24    Linux/UNIX
OFFERING        c48ab04c-63ab-4cd6-b8f5-978a29eb9bcc    us-east-1c      m1.xlarge       1y      2600.0  0.24    Linux/UNIX

すると、上記のような結果が返ってきます。

例えば、私は「us-east-1a」のロケーションで、デフォルトの最もスモールタイプのインスタンス「m1.small」で、1年間はインスタンスを稼動(つまり「1y」)させようとしている場合、
上記の結果から、「us-east-1a」「m1.small」「1y」が含まれている行にある「60dcfab3-a56c-4092-8c90-3677e9da02b7」が、"offering-id"となります。

この"offering-id"をメモっておきましょう。

インスタンスをReservedする

Reservedは、"ec2-purchase-reserved-instances-offering"コマンドにて行います。
以下、コマンドの実行例です。

$ ec2-purchase-reserved-instances-offering --offering 60dcfab3-a56c-4092-8c90-3677e9da02b7 --instance-count 1
RESERVEDINSTANCES	93bbbca2-050e-4306-a06d-915f659f8c5e

"--offering"は、先ほどメモしたoffering-idを指定、"--instance-count"にてReservedしたいインスタンスの個数を指定します。

尚、この実行段階で、初期費用(事前支払い)が購入したインスタンス数分、課金されます。

初期費用は、先ほどの"ec2-describe-reserved-instances-offerings"を実行した際、"1y"や"3y"の次のカラムにある数値(単位はドル)となります。
ちなみに、上記の例だと、$325となります。

Reservedしたインスタンスを確認する


"ec2-describe-reserved-instances"コマンドにて確認します。

購入直後は、以下例のような感じで、ステータスが"payment-pending"となっています。

$ ec2-describe-reserved-instances
RESERVEDINSTANCES       93bbbca2-050e-4306-a06d-915f659f8c5e    us-east-1a      m1.small        Linux/UNIX      1y      0.03    325.0   1    2009-03-23T04:06:49+0000 payment-pending

が、しばらく待つと、ステータスが"active"となり、購入完了です。

$ ec2-describe-reserved-instances
RESERVEDINSTANCES	93bbbca2-050e-4306-a06d-915f659f8c5e	us-east-1a	m1.small	Linux/UNIX	1y 	0.03	325.0	1	2009-03-23T04:06:49+0000	active

これにて、インスタンスのReservedは完了です。

これ以降、上記の例では「us-east-1a」にて、「m1.small」のインスタンスを動かした際は、1年間は1時間当たり$0.03で稼動させることが可能です。
もちろん上記例では、Reservedしたインスタンスは1つですので、2つ目以降は、これまでのレート($0.10/1h)での価格となります。


インスタンスの起動方法は、特にこれまでと変わらない方法で動かせば、自動的に安いレートで課金されます。既に動いているインスタンスに対しても適用可能です。

このあたりの話については、以下のReserved InstanceのFAQが参考になります。


# とは言いつつ、私も不安になってAccount Activityで確認しましたが、大丈夫でした(^^)b