Ch7. コスト管理
スポットフリート
スポットインスタンスは設定した入札価格を上回る使用料が設定された場合に使用できなくなってしまうことから、限られた場合にしか利用できないとされていた。
スポットフリートでは指定した分のリソースが確保できるように、スポットインスタンスとオンデマンドインスタンスの稼働を調整してくれる。
スポットフリートの設定例 - Amazon Elastic Compute Cloud
例えば入札価格の上書きを行うことで少しでもスポットインスタンスでの稼働を多くするよう調整したり、(同じリージョンでもAZ毎にスポットインスタンスの利用価格が異なることを利用して)最低価格のAZでインスタンスを起動するように調整することが出来る。
これを応用して、あるAZで障害が発生した場合に他のAZでスポットインスタンスを起動するような調整も実施出来る。スポットフリートを利用した可用性(とコストパフォーマンス)の確保を実現できる。
S3のコスト
S3はデータ容量とデータの転送に対して費用が発生する。当然費用はバケットの持ち主に対して請求される。
リクエスタ支払い機能を有効にすることで、バケットに対してオブジェクトを要求した人に請求を行うことが出来る。IAMのクロスアカウントアクセスを有効にしただけでは、(アカウント間のS3のやり取りが出来ても)請求がリクエスタに対して行われる訳ではないので注意する。
なお、S3でオブジェクトに対するアクセス(データの転送)に請求が行われないのは
- 同一リージョンのEC2インスタンスからの呼び出し(重要)
- CloudFrontからの呼び出し
AWS CLI での高レベル (S3) コマンドの使用 - AWS Command Line Interface
s3 sync
コマンドというローカルや別S3にあるオブジェクトを同期する仕組みもある。これも当然転送に請求が発生する。
ちなみにS3 Glacierの保存には通常のハードディスクが利用されているらしく、テープで保存されている訳ではないようだ。 Amazon Glacier - Wikipedia
ELBを利用しないロードバランシング
ELBは利用するだけでもコストがかかるサービスなのでコストパフォーマンス向上のために次のようなバイパスの仕方が考えられる。
- 各EC2インスタンスに固定のIPアドレスを付与する。
- Route53で死活監視をしながらDNSラウンドロビンを行う。
- CloudWatchで各インスタンスのCPU使用率を確認しつつ、AutoScalingを行う。
これでRoute53からはAutoScalingに生かされているインスタンスのIPアドレスしか返却されない。
ELBを利用しないAutoScalingは一応可能とAWSが述べている。参考書では不可能としていて、どうして実現不可なのかは今のところよくわからない。
Auto Scaling を使用するために ELB を使用する必要はありません。EC2 ヘルスチェックを使用して、異常なインスタンスを特定し置き換えることができます。
よくある質問 - Amazon EC2 Auto Scaling | AWS
DynamoDBの料金体制
DynamoDBには2つの料金体制があり、
- 1秒あたりの必要な読書パフォーマンスを指定して時間単位で支払う方法(プロビジョニングされたキャパシティ)
- 決められた1回あたりの読書に対して定価を支払う方法(オンデマンドキャパシティ) がある。
オンデマンドキャパシティーの料金 - Amazon DynamoDB | AWS
プロビジョニング済みキャパシティーの料金 - Amazon DynamoDB | AWS
DynamoDBでは
- 読取/書込
- ストレージ
の両方に対して料金が発生する。 リザーブドキャパシティという前予約のリソースが利用できる。また、テーブルクリアによってストレージの利用を減らすことも出来る。
DynamoDBリザーブドキャパシティを正しく理解する - 本日も乙
リザーブドキャパシティはプロビジョニングされたキャパシティに対してしか有効ではないことに注意する。