presents by IT Consulting 109

AWS 想定外のコストの洗い出し

概要

AWSでテスト環境をいろいろ構築していると、削除したと思っていたサービスが残っていたりして、思わぬ出費がかさむ事があります。

請求書を確認すればある程度は把握できますが、月の途中で構築して削除したサービスは、請求金額だけではわかりずらい為、紹介するコマンドで細かくコストを算出する事で、無駄なサービスがないか確認できます。

 

手順

まずは算出する期間を設定します。

昨日のコストの集計時は昨日~今日までの期間で集計します。

START=$(date +"%Y-%m-%d" -d"1 day ago");\
END=$(date +"%Y-%m-%d")

先月のコストの集計時は先月01日~今月01日の期間で集計します。

START=$(date +"%Y-%m-01" -d"1 month ago");\
END=$(date +"%Y-%m-01")

今月のコストの集計時は今月01日~来月01日の期間で集計します。

START=$(date +"%Y-%m-01");\
END=$(date +"%Y-%m-01" -d"1 month")

期間を設定したら aws ce get-cost-and-usage コマンドで集計します。

echo "##########################################";\
echo  "## Start : ${START}  End : ${END}" ##;\
echo "##########################################";\
echo "USAGE_TYPE,BlendedCost,Amount,UnblendedCost,Amount" > /tmp/awscli.tmp;aws ce get-cost-and-usage --time-period Start=${START},End=${END} --granularity MONTHLY --metrics "BlendedCost" "UnblendedCost" --group-by Type=DIMENSION,Key=USAGE_TYPE --query "ResultsByTime[].Groups[].[Keys[0],Metrics.BlendedCost.Amount,Metrics.BlendedCost.Unit,Metrics.UnblendedCost.Amount,Metrics.UnblendedCost.Unit]" --output text | tr "\t" "," | sort -Vrk 2 -t, >> /tmp/awscli.tmp;column -s, -t /tmp/awscli.tmp;rm /tmp/awscli.tmp

実行結果 (例:先月の請求一覧

##########################################
## Start : 2021-01-01  End : 2021-02-01 ##
##########################################
USAGE_TYPE                        BlendedCost    Currency  UnblendedCost  Currency
APN1-BoxUsage:t3a.micro           10.0706438916  USD       10.0706438916  USD
APN1-EBS:VolumeUsage.gp2          1.7145817437   USD       1.7145817437   USD
APN1-DataTransfer-Out-Bytes       0.8388800874   USD       0.8388800874   USD
APN1-EBS:SnapshotUsage            0.7398544417   USD       0.7398544417   USD
APN1-ElasticIP:IdleAddress        0.211          USD       0.211          USD
APN1-EBS:VolumeUsage.gp3          0.0574838726   USD       0.0574838726   USD
USE1-CostDataStorage              0.0551772579   USD       0.0551772579   USD
APN1-DataTransfer-Regional-Bytes  0.005259099    USD       0.005259099    USD
APN1-USE1-AWS-Out-Bytes           0.0030090927   USD       0.0030090927   USD
APN1-USE2-AWS-Out-Bytes           0.0002776897   USD       0.0002776897   USD
APN1-USW2-AWS-Out-Bytes           0.0002852387   USD       0.0002852387   USD
APN1-EU-AWS-Out-Bytes             0.0000480567   USD       0.0000480567   USD
APN1-USW1-AWS-Out-Bytes           0.0000329715   USD       0.0000329715   USD
APN1-APS1-AWS-Out-Bytes           0.0000242494   USD       0.0000242494   USD
APN1-APN3-AWS-Out-Bytes           0.0000089507   USD       0.0000089507   USD
APN1-APS3-AWS-Out-Bytes           0.0000057433   USD       0.0000057433   USD
APN1-EUN1-AWS-Out-Bytes           0.0000010569   USD       0.0000010569   USD
APN1-EUW2-AWS-Out-Bytes           0.0000005492   USD       0.0000005492   USD
APN1-EUC1-AWS-Out-Bytes           0.000002316    USD       0.000002316    USD
APN1-EUW3-AWS-Out-Bytes           0.0000001873   USD       0.0000001873   USD
APN1-MES1-AWS-Out-Bytes           0.0000000564   USD       0.0000000564   USD
APN1-APS2-AWS-Out-Bytes           0.0000000564   USD       0.0000000564   USD
APN1-APE1-AWS-Out-Bytes           0.0000000564   USD       0.0000000564   USD
APN1-SAE1-AWS-Out-Bytes           0.0000000302   USD       0.0000000302   USD
Requests-Tier1                    0.000005       USD       0.000005       USD

実行結果 (例:昨日の請求一覧

##########################################
## Start : 2021-01-31  End : 2021-02-01 ##
##########################################
USAGE_TYPE                        BlendedCost   Currency  UnblendedCost  Currency
APN1-CW:MetricMonitorUsage        0.1262500007  USD       0.1262500007   USD
APN1-DataTransfer-Out-Bytes       0.0513195061  USD       0.0513195061   USD
USE1-CostDataStorage              0.0016843333  USD       0.0016843333   USD
APN1-USE1-AWS-Out-Bytes           0.0014943681  USD       0.0014943681   USD
APN1-DataTransfer-Regional-Bytes  0.0001761163  USD       0.0001761163   USD
APN1-USW2-AWS-Out-Bytes           0.0000500592  USD       0.0000500592   USD
APN1-EU-AWS-Out-Bytes             0.0000094074  USD       0.0000094074   USD
APN1-EUW2-AWS-Out-Bytes           0.0000075369  USD       0.0000075369   USD
APN1-USE2-AWS-Out-Bytes           0.0000066315  USD       0.0000066315   USD
APN1-BoxUsage:t3a.small           0.5635        USD       0.5635         USD
APN1-EUC1-AWS-Out-Bytes           0.0000002066  USD       0.0000002066   USD
APN1-APS1-AWS-Out-Bytes           0.0000001979  USD       0.0000001979   USD
APN1-USW1-AWS-Out-Bytes           0.0000000934  USD       0.0000000934   USD
APN1-EBS:VolumeUsage.gp3          0.06          USD       0.06           USD

比較すると、先月はgp2を使用していたことが確認できますが、昨日の段階でgp2が集計されないので、先月で利用を終了したことがわかります。
同様に、先月はElasticIPの請求が上がっているので、アタッチしていないElasticIPが存在していたことがわかります。

項目説明
BlendedCostBlendedRate に UsageAmount を乗じた値。
UnblendedCostUnblendedRate に UsageAmount を乗じた値。
BlendedRate組織全体で各 SKU に発生した平均コスト。
SKU製品の一意のコード。
UnblendedRate特定の使用のための結合されていない割合。
UsageAmount指定した期間に発生した使用量。

補足

get-cost-and-usageのオプション説明

aws ce get-cost-and-usage
 --time-period Start=2021-01-01,End=2021-02-01
 --granularity MONTHLY
 --metrics "BlendedCost" "UnblendedCost"
 --group-by Type=DIMENSION,Key=USAGE_TYPE
time-period期間を指定
・START
・END
granularityコストの粒度を指定
・DAILY
・MONTHLY
・HOURLY
metrics算出するメトリクスを指定
・AmortizedCost
・BlendedCost
・NetAmortizedCost
・NetUnblendedCost
・NormalizedUsageAmount
・UnblendedCost
・UsageQuantity
group-byグループを指定
・AZ
・INSTANCE_TYPE
・LEGAL_ENTITY_NAME
・LINKED_ACCOUNT
・OPERATION
・PLATFORM
・PURCHASE_TYPE
・SERVICE
・TENANCY
・RECORD_TYPE
・USAGE_TYPE
この記事を書いた人
名前:TRUE's。 千葉県育ち、神奈川県在住のIT系フリーエンジニア。 IT系のナレッジサイトを不定期で更新中。 フォトグラファー兼エンジニアとして日々勤しんでいる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です