こんにちは、逸般の誤家庭にあるRTX1200とAWS間をサイト間VPNで接続しているディーネットの山田です。
DDNSのDNS名を使って、IPアドレスが変わってもLambdaで定期的にチェックして、カスタマーゲートウェイを作り直す関数を実装してあるので何か機会があればご紹介できればと思っています。
さて、AWSをここまでがっつりと個人利用させていただいているとどうしても常時起動のEC2がいくつかいるので、費用を抑えたくなってきます。
その為、Amazon EC2 リザーブドインスタンス(RI)を購入しているのですが、有効期限が本日までだったのでCLIで予約購入してみたという記事になります。
目次
リザーブドインスタンスとは
数年前に弊社の小林が投稿していた記事がございますので、詳細はこちらをご覧いただくとして、簡潔にまとめますと
” 電車の定期券のように利用期間に応じてオンデマンド料金に比べ大幅な割引価格が適用されるものです”
https://blog.denet.co.jp/awsreservedinstances/
購入前に今回購入しようとしているインスタンスタイプの料金について調べてみる
今回購入しようと思うリザーブドインスタンス
インスタンスタイプ | クラス | スコープ | 期間 | 支払いオプション |
---|---|---|---|---|
t3.nano | スタンダード | リージョン | 1年 | 前払いなし |
オンデマンドとリザーブドインスタンスの料金比較
インスタンスタイプ | オンデマンド | リザーブドインスタンス(前払いなし/スタンダード1年) | 差額 |
---|---|---|---|
t3.nano | 0.0068USD/時間 | 0.004USD/時間 | 0.0028USD/時間(2.1USD/月) |
- t3.nanoですら、ひと月に2.1USD節約できるので、複数購入している方やさらに上位のインスタンスタイプを使っている場合はさらなる費用節約が見込めますね
CLIで実際に購入を進めてみる
- IAMロールやアクセスキーとかは事前設定済みである想定です
現在購入済みのリザーブドインスタンスを調べる
- 購入済みで、現在有効な"t3.nano"のリザーブドインスタンスについて情報を取得する
aws ec2 describe-reserved-instances \
> --filters Name=state,Values=active \
> Name=instance-type,Values=t3.nano
{
"ReservedInstances": [
{
"ReservedInstancesId": "xxxxxxxx-yyyy-zzzz-SSSS-AAAAAAAAAAAA",
"OfferingType": "No Upfront",
"FixedPrice": 0.0,
"End": "2020-07-31T13:52:40.000Z",
"Scope": "Region",
"UsagePrice": 0.0,
"RecurringCharges": [
{
"Amount": 0.0046,
"Frequency": "Hourly"
}
],
"OfferingClass": "standard",
"Start": "2020-02-12T15:00:00.000Z",
"State": "active",
"ProductDescription": "Linux/UNIX",
"CurrencyCode": "USD",
"Duration": 31536000,
"InstanceTenancy": "default",
"InstanceType": "t3.nano",
"InstanceCount": 1
}
]
}
End : 有効期限が"2020-07-31T13:52:40.000Z"までであることが分かる
欲しい条件のリザーブドインスタンスを調べる
- 購入したい目的のリザーブドインスタンスを検索して"ReservedInstancesOfferingId"を取得する
- 実際の購入には、"ReservedInstancesOfferingId"を使用します
aws ec2 describe-reserved-instances-offerings \
> --instance-type t3.nano \
> --offering-class standard \
> --product-description "Linux/UNIX" \
> --instance-tenancy default \
> --filters Name=duration,Values=31536000 \
> Name=scope,Values=Region \
> Name=fixed-price,Values=0.0
{
"ReservedInstancesOfferings": [
{
"OfferingClass": "standard",
"Marketplace": false,
"FixedPrice": 0.0,
"CurrencyCode": "USD",
"PricingDetails": [],
"UsagePrice": 0.0,
"RecurringCharges": [
{
"Amount": 0.0043,
"Frequency": "Hourly"
}
],
"OfferingType": "No Upfront",
"ProductDescription": "Linux/UNIX",
"Scope": "Region",
"Duration": 31536000,
"InstanceTenancy": "default",
"ReservedInstancesOfferingId": "qqqqqqqq-dddd-ssss-EEEE-BBBBBBBBBBBB",
"InstanceType": "t3.nano"
}
]
}
- ReservedInstancesOfferingId : "qqqqqqqq-dddd-ssss-EEEE-BBBBBBBBBBBB"であることが分かる
- よくよく見ると"Amount"が昨年より少し安くなっている
- これを見ると5月に値下げがあったようですね
では実際に購入処理を行う
- 先ほど検索した"ReservedInstancesOfferingId"を指定して購入する
- 現在、購入済みのものの期限切れに合わせて購入したいので、”purchase-time” オプションを使って予約購入を行う
aws ec2 purchase-reserved-instances-offering \
> --reserved-instances-offering-id "qqqqqqqq-dddd-ssss-EEEE-BBBBBBBBBBBB" \
> --purchase-time "2020-07-31T13:52:40.000Z" \
> --instance-count 1
{
"ReservedInstancesId": "eeeeeeee-ffff-uuuu-PPPP-LLLLLLLLLLLL"
}
AWS マネジメントコンソールからキューに入ったリザーブドインスタンスを確認する
このときに間違って購入していたら予約日時まではキャンセルすること可能です
まとめ
- 今までは期限切れてから購入したり、ギリギリを狙って購入していましたが、予約購入は便利ですね。
- AWS マネジメントコンソールからは日付指定で購入できますが、時間までは指定できないので時間指定で購入したい場合は、CLIでの購入のみとなります。
参考サイト
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/ri-market-concepts-buying.html#ri-buying-standard
プロフィール
テクニカルサポートは卒業して、フロントサイドでお客様環境の構築をさせていただいております。
たまに、テクニカルサポートでご対応させていただくことがあるかもしれませんが、その際はよろしくお願いいたします。
インフラ系のエンジニアですが、時々休日プログラマー(Python、PHP)をやっております。
LINK
クラウドベリージャム:プロフィールページ