『Amazon Web Services コスト最適化入門』を読んだ

· 127 words · 1 minute read

『Amazon Web Servicesコスト最適化入門』を読みました。 具体的な計算式やユースケースが載っていて実用的な本でした。 AWSをある程度利用したことがある方にとっては、全体的な料金体系や請求管理系のサービスを把握することができる便利な本です。 まったくAWSを利用したことのない方が精読するにはややボリュームが多そうなので、使ったことのあるサービスの料金形態の章を読み、請求管理系サービスの章をざっと読んで明日から導入できそうなサービスを探すのが良いのではないかと思いました。

大きく分けると、前半部分では開発でよく使うサービス(コンピューティング・コンテナ・ストレージ・データベース・ネットワークなど)について書かれており、後半部分ではコスト管理系のサービス(Cost Explorer、Budgetsなど)について書かれています。

基本的な内容になりますが、実際に見たことがある事例や、今後使えそうだなと思ったところをメモにまとめました。

開発でよく使うサービスについて

EC2

  • インスタンスが起動状態になると最低時間分の料金が発生する(Linuxでは最低時間=60秒)
    • 起動と停止を繰り返すとこの料金が嵩む
    • 再起動する場合、この料金はかからない
  • t2/t3は「バースタブルインスタンス」
    • 一時的なCPU高騰に強い(CPUクレジット機能がある)
    • 同じスペックのインスタンスと比べて安いので、ピーク時のみCPU性能が必要なワークロードに向いている

Saving Plans

  • EC2 Instance Saving PlansとCompute Saving Plansがある
  • Compute Saving Plansはリージョンの変更もOK
    • Fargate/Lambdaも対象
    • 割引率の高いEC2 -> Fargate -> Lambdaの順に適用される
  • Compute Saving Plansは1年(全額前払い)だとあまり旨味がないこともあるが、3年だと効いてくる
  • AWS Cost Explorerの「推奨事項」で推奨されるコミットメント額を表示できる

CloudWatch Logs

  • ログデータの保管だけでなくデータの取り込みにも料金がかかるので、大量のログを取り込むと料金が嵩む
  • 保管期間を短くしても、データの取り込みが多い場合は料金を節約できない
  • 大量のログデータを扱う場合はS3やDyanamoDBで代替する

ネットワーク

  • S3からインターネットへのデータ転送はInternet GateWay同様にデータ転送料金がかかる
    • 圧縮・画質調整する
    • CloudFrontを入れてキャッシュさせる
  • CloudFrontはフェッチには料金がかからないが、DELETE/POST/PUT/OPTION/PATCHリクエストとWeb Socketは料金がかかる
  • Nat GateWayはデータ転送料金に加えて基本料金がかかるため高額になりやすい
    • プライベートサブネットからS3/DynamoDB/ECRなどへの通信でもNAT Gatewayを経由するとデータ転送料金がかかる
    • VPCエンドポイントの方が料金は安いので、NAT GateWayでなくVPCエンドポイントを設置する
      • S3やDynamoDBへの通信はゲートウェイタイプのVPCエンドポイント(作成・利用が無料)を設置する
      • その他のAWSリソースへの通信はPrivate Linkを利用してインターフェースタイプのVPCエンドポイント(設置時間と処理データ量により料金がかかる)を設置する
    • 開発環境の場合はNat GateWayではなくEC2でNatインスタンスを作成して置き換えることも検討する
    • プライベートサブネットからAWSネットワーク外のリソースへの通信は、より安価なInternet GateWay経由にできないか検討する

S3

  • GlacierとGlacier Deep Archiveにストレージクラスを変更する場合、データ移行料金が高い
  • 移行するデータの量が多いと移行料金の方が高くつくこともあるので、ストレージクラスを変更するまえに計算して確かめる

コスト管理系のサービスについて

AWS Pricing Calculator

  • コストの見積もりに使う
  • 利用は無料

AWS Cost Explorer

  • コストと使用量をダッシュボードで可視化できる
  • 1リクエスト(1回のグラフ表示)につき0.01USDかかる

AWS Cost Usage Report(CUR)

  • 有効化することでS3に詳細なデータが出力されてAthenaでクエリできる
  • Cost Explorerより自由度が高い
    • 著者謹製の便利なクエリのサンプルがいくつか載っていた
    • Redashで可視化するサンプルもある
  • S3やAthenaなどの料金がかかる

AWS Budget

  • 予算を設定して通知できる
  • 予算作成は2つまで無料
  • 3つ目の予算からは0.62 USD/月かかる

コスト配分タグ

  • 部署や環境ごとのコストを可視化できる
  • リソースグループ>タグエディターからコスト配分タグをまとめてつけられる
  • タグづけできないものもあるので注意
    • Reserved Instance、Saving Plansなど前払いをした場合はタグをつけることができない
    • ネットワークやCloudWatchなどもタグはつけられない
  • 利用は無料

AWS Cost Category

  • コスト配分タグが複雑化した場合に利用する
  • 複数のタグを束ねてカテゴライズできる
  • 利用は無料

AWS Trusted Adviser

  • 利用状況を解析してレコメンドをもらえる
  • 「コスト最適化」機能を利用するにはビジネス・エンタープライズのサポートプランに加入する必要がある
  • Trusted Adviser自体の利用は無料

AWS Compute Optimizer

  • CloudWatchのログから利用状況を解析してレコメンドをもらえる
  • CloudWatchの詳細モニタリングを有効化することで1分単位のメトリクスを取得できるようになり、より正確なレコメンドになる
  • CloudWatchエージェントをEC2インスタンスにインストールすることで、メモリ利用率の解析もできる
  • 基本的な分析は無料

コスト管理系のサービスについて、利用したことがないものもいくつかあったので早速試してみたいです。