多量のイメージファイルを持つECRリポジトリが発生させるストレージ月額コストを概算してみる

ECRのリポジトリに入れっぱなしとなっているイメージがもたらす利用費について、月額をざっくりとTerminal上から計算してみました。
2020.02.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

担当プロジェクトの運用改善として、ECRのリポジトリでの保存イメージ整理に着手したところ、削除する手順が一切なかったこともあり相応のボリュームとなっていました。容量削減のためにライフサイクルポリシーの設定を行うにも、環境が本番・開発と複数ありつつも固定タグがlatestのみの状況で、ルール付けを行うのが先だなと実感しているところです。

解決するまでに発生し続けるコストが気になり、先ずは該当リポジトリに保存されているイメージによる一ヶ月当たりの利用料を計算してみました。

aws-cliによる計算

公式ドキュメントによる料金詳細は以下の通りです。

ストレージコストは 1 か月あたり GB 単位で 0.10USD

料金 - Amazon ECR | AWS

aws --profile=XXXXX ecr describe-images --repository-name REPONAME | jq '[.imageDetails[].imageSizeInBytes] | add' | numfmt --to-unit=1073741824 | xargs -I{} echo '{} * 0.1' | bc | xargs -I{}  echo '{} USD'

profile--repository-nameだけ指定が必要です。

describe-imagesによるサイズ表記はByte単位となっているため、numfmtにてGB単位に計算し直しています。小数点以下を有効にした料金計算を行うため、0.1で掛ける式を出力しつつbcで処理しています。

あくまでも目安を知ることが目的のため、端数は省いています。

あとがき

今回の結果はワンコイン程度のボリュームでしたが、塵も積もればということで今月内には片付けておきたいところです。

余程の量のイメージファイルをそのまま放置しない限りは月額のコストもそこまで大きくはならないと思われますが、リポジトリのライフサイクル設定や削除に関する手順等に心当たりが無い場合には、一度確認しておくとヒヤリ回避につながるかもしれません。