AWS の料金は、Billing and Cost Management コンソールの「請求」と「Cost Explorer」で確認できます。 コマンドで見るなら aws ce get-cost-and-usage、使いすぎを知らせてほしいなら AWS Budgets の予算アラートです。

やりたいこと 方法 費用(ドキュメント・料金ページ)
今月の請求額・明細を見る コンソールの「請求」 なし
サービス別・日別のグラフで見る コンソールの Cost Explorer 画面は無料
コマンド・スクリプトで集計する aws ce get-cost-and-usage API 1 リクエストごとに $0.01
予算を超えそうなら通知 aws budgets create-budget 予算の監視と通知は無料
請求額がしきい値を超えたら通知 CloudWatch の請求アラーム(EstimatedCharges) CloudWatch アラームの料金

最初に「予算アラート」を1つ作っておくと、使いすぎに早く気づけます。 CLI の集計は、毎日の確認やチームへの報告を自動にしたいときに使います。

確認環境:AWS CLI 1.46.1・boto3 1.43.111・Python 3.11・jq(Linux)。AWS には接続せず、moto 5.2.4 のサーバーモード(AWS を模したサーバー)を相手に、aws ce get-cost-and-usage のパラメータの書き方、aws budgets create-budget の JSON(予算2本・通知)、請求アラームの put-metric-alarm が受け付けられることを確かめました。出力の読み方と jq・--query での整形は、AWS CLI リファレンスにある出力例を使って動かしています。ページ送りのコードは botocore の Stubber で2ページ分を確かめました。実際の金額の出方・データの更新の間隔・料金は、AWS のドキュメントと料金ページに基づいて書いています(確認日 2026年10月12日)。

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「AWSの料金を確認する方法|Cost Explorer・CLI・予算アラート」

使う前に:Cost Explorer の有効化と権限

項目 内容(ドキュメント)
Cost Explorer の有効化 初めて有効にすると、今月分のデータは約 24 時間で見られるようになり、残りは数日かかる。一度有効にすると無効にできない
見られる期間 過去 13 か月まで。予測は先 18 か月
データの更新 少なくとも 24 時間に1回。遅れて反映されるデータもある
IAM ユーザー・ロールのコンソール利用 ルートユーザーが「IAM アクセスを有効化」しないと、ポリシーがあってもコンソールは開けない
API(CLI)の利用 「IAM アクセスを有効化」の設定は API には関係しない。IAM ポリシーで ce:GetCostAndUsage などを許可する

CLI で使う最小の IAM ポリシーの例です。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ce:GetCostAndUsage",
        "ce:GetCostForecast",
        "ce:GetDimensionValues",
        "budgets:ViewBudget",
        "budgets:ModifyBudget"
      ],
      "Resource": "*"
    }
  ]
}

IAM ポリシーの書き方は、関連記事「IAMポリシーの書き方|JSONの読み方と最小権限の作り方【例文つき】」で扱っています。

API のエンドポイントは us-east-1

Cost Explorer の API は、どのリージョンを指定しても us-east-1 のエンドポイントに送られます。 boto3 で region_name="ap-northeast-1" にしてクライアントを作っても、meta.endpoint_url は https://ce.us-east-1.amazonaws.com でした。AWS Budgets は https://budgets.amazonaws.com です。

aws ce get-cost-and-usage の目的別コマンド集

--time-period の End は含まれません。 9月分なら Start=2026-09-01,End=2026-10-01 です。

目的 主なオプション 下の見出し
今月の合計 --granularity MONTHLY ①
サービス別 --group-by Type=DIMENSION,Key=SERVICE ②
日別の推移 --granularity DAILY ③
日別×サービス別 DAILY + SERVICE ④
タグ別(プロジェクト・環境) --group-by Type=TAG,Key=Project ⑤
リージョン別 --group-by Type=DIMENSION,Key=REGION ⑥
アカウント別(Organizations) --group-by Type=DIMENSION,Key=LINKED_ACCOUNT ⑦
使用タイプ別(何に使ったか) --group-by Type=DIMENSION,Key=USAGE_TYPE ⑧
クレジット・返金を除く --filter で RECORD_TYPE を除外 ⑨
月末の予測 aws ce get-cost-forecast ⑩

日付は、次のように変数にしておくと使い回せます(GNU date の例)。

START=$(date +%Y-%m-01)        # 今月1日
END=$(date +%F)                # 今日(End は含まれないので、昨日までの集計)
LAST7=$(date -d '7 days ago' +%F)

月の初日は START と END が同じ日になり、期間が空になります。月初は前月を見るように分けます(後の Python のコードではそうしています)。

① 今月の合計

aws ce get-cost-and-usage \
  --time-period Start=$START,End=$END \
  --granularity MONTHLY \
  --metrics UnblendedCost \
  --query 'ResultsByTime[].[TimePeriod.Start, Total.UnblendedCost.Amount, Total.UnblendedCost.Unit, Estimated]' \
  --output text

② サービス別(多い順)

aws ce get-cost-and-usage \
  --time-period Start=$START,End=$END \
  --granularity MONTHLY \
  --metrics UnblendedCost \
  --group-by Type=DIMENSION,Key=SERVICE \
  --output json \
| jq -r '.ResultsByTime[].Groups[]
         | [(.Metrics.UnblendedCost.Amount | tonumber | . * 100 | round / 100), .Keys[0]]
         | @tsv' \
| sort -t$'\t' -k1 -nr | head -20

③ 日別の推移

aws ce get-cost-and-usage \
  --time-period Start=$LAST7,End=$END \
  --granularity DAILY \
  --metrics UnblendedCost \
  --query 'ResultsByTime[].[TimePeriod.Start, Total.UnblendedCost.Amount, Estimated]' \
  --output text

④ 日別×サービス別(急に増えたサービスを探す)

aws ce get-cost-and-usage \
  --time-period Start=$LAST7,End=$END \
  --granularity DAILY \
  --metrics UnblendedCost \
  --group-by Type=DIMENSION,Key=SERVICE \
  --output json \
| jq -r '.ResultsByTime[] as $d | $d.Groups[]
         | select((.Metrics.UnblendedCost.Amount | tonumber) >= 1)
         | [$d.TimePeriod.Start, .Keys[0], .Metrics.UnblendedCost.Amount] | @tsv'

>= 1 は「1 USD 以上の行だけ」の意味です。少額の行が多いときに、表示を絞ります。

⑤ タグ別

aws ce get-cost-and-usage \
  --time-period Start=$START,End=$END \
  --granularity MONTHLY \
  --metrics UnblendedCost \
  --group-by Type=TAG,Key=Project \
  --output json \
| jq -r '.ResultsByTime[].Groups[]
         | [(.Keys[0] | sub("^Project\\$"; "") | if . == "" then "(タグなし)" else . end),
            .Metrics.UnblendedCost.Amount] | @tsv'

タグで集計するには、そのタグキーを「コスト配分タグ」として有効にしておく必要があります。 ドキュメントでは、リソースにタグを付けてからタグキーが一覧に出るまで最大 24 時間、有効にしてからさらに最大 24 時間かかります。

# 有効になっていないユーザー定義タグを見る
aws ce list-cost-allocation-tags --status Inactive --type UserDefined

# Project を有効にする
aws ce update-cost-allocation-tags-status \
  --cost-allocation-tags-status TagKey=Project,Status=Active

タグの付け方と命名のルールは、関連記事「AWSタグの付け方|AWS CLIでタグ付け・検索・一覧取得と命名ルール」で扱っています。

⑥ リージョン別

aws ce get-cost-and-usage \
  --time-period Start=$START,End=$END \
  --granularity MONTHLY \
  --metrics UnblendedCost \
  --group-by Type=DIMENSION,Key=REGION \
  --query 'ResultsByTime[].Groups[].[Keys[0], Metrics.UnblendedCost.Amount]' \
  --output text

API リファレンスの GroupBy の説明に並ぶディメンションの一覧には REGION がありませんが、同じページで「使えるディメンションの一覧は GetDimensionValues を参照」とされ、botocore のサービス定義の Dimension には REGION があります。リージョンの値は次で一覧にできます。

aws ce get-dimension-values \
  --time-period Start=$START,End=$END \
  --dimension REGION \
  --query 'DimensionValues[].Value' --output text

⑦ アカウント別(AWS Organizations の管理アカウントで)

aws ce get-cost-and-usage \
  --time-period Start=$START,End=$END \
  --granularity MONTHLY \
  --metrics UnblendedCost \
  --group-by Type=DIMENSION,Key=LINKED_ACCOUNT \
  --query 'ResultsByTime[].Groups[].[Keys[0], Metrics.UnblendedCost.Amount]' \
  --output text

⑧ 使用タイプ別(サービスの中の何が高いか)

--group-by は2つまで指定できます。サービスと使用タイプを組み合わせると、「EC2 のどの料金か(インスタンス・データ転送・EBS など)」まで分かります。

aws ce get-cost-and-usage \
  --time-period Start=$START,End=$END \
  --granularity MONTHLY \
  --metrics UnblendedCost \
  --group-by Type=DIMENSION,Key=SERVICE Type=DIMENSION,Key=USAGE_TYPE \
  --output json \
| jq -r '.ResultsByTime[].Groups[]
         | [(.Metrics.UnblendedCost.Amount | tonumber), .Keys[0], .Keys[1]] | @tsv' \
| sort -t$'\t' -k1 -nr | head -20

⑨ クレジット・返金を除く

クレジットを使っている月は、合計が小さく見えます。使った分だけを見たいときは、RECORD_TYPE で除きます。

{
  "Not": {
    "Dimensions": {
      "Key": "RECORD_TYPE",
      "Values": ["Credit", "Refund"]
    }
  }
}
aws ce get-cost-and-usage \
  --time-period Start=$START,End=$END \
  --granularity MONTHLY \
  --metrics UnblendedCost \
  --filter file://exclude-credit.json

API リファレンスでは、SERVICE で絞るフィルターは、要求全体にかかるように書く決まりがあります。And で他の条件と組み合わせ、Or を使うなら全部の枝に入れます。Not の中に SERVICE を入れると ValidationException になります。

⑩ 今月の着地の予測

aws ce get-cost-forecast \
  --time-period Start=$(date +%F),End=$(date -d "$(date +%Y-%m-01) +1 month" +%F) \
  --metric UNBLENDED_COST \
  --granularity MONTHLY

予測の --metric は UNBLENDED_COST のように大文字とアンダースコアで書きます。get-cost-and-usage の --metrics UnblendedCost と書き方が違うので注意します。

出力の読み方

AWS CLI リファレンスにある出力例です(S3 の料金を、サービスと Environment タグでまとめたもの)。

{
    "GroupDefinitions": [
        { "Type": "DIMENSION", "Key": "SERVICE" },
        { "Type": "TAG", "Key": "Environment" }
    ],
    "ResultsByTime": [
        {
            "Estimated": false,
            "TimePeriod": { "Start": "2017-09-01", "End": "2017-10-01" },
            "Total": {},
            "Groups": [
                {
                    "Keys": ["Amazon Simple Storage Service", "Environment$"],
                    "Metrics": {
                        "BlendedCost": { "Amount": "40.3527508453", "Unit": "USD" },
                        "UnblendedCost": { "Amount": "40.3543773134", "Unit": "USD" },
                        "UsageQuantity": { "Amount": "9312771.098461578", "Unit": "N/A" }
                    }
                }
            ]
        }
    ]
}
項目 意味 読むときの注意
ResultsByTime 期間(月・日)ごとの結果 DAILY なら日数分並ぶ
TimePeriod その結果の期間 End は含まない
Total 期間の合計 --group-by を付けると空 {} になる(上の例)
Groups[].Keys グループの値 タグは タグキー$値。Environment$ は「タグなし」
Metrics.*.Amount 金額・量 文字列。計算するときは数値に変換する
Metrics.*.Unit 単位 金額は USD。UsageQuantity は単位がまちまち
Estimated 見込みの値か true の期間は、あとで金額が変わりうる
NextPageToken 続きがある 続きを取るには --next-page-token で再度呼ぶ

メトリクス(--metrics)の違い

メトリクス 意味(ドキュメント) 向いている用途
UnblendedCost 使った分のコスト。割引は別の行に分かれる 普段の確認はこれ。請求書の考え方に近い
NetUnblendedCost 割引を差し引いたあとのコスト 割引を反映した実際の支払いに近い額
AmortizedCost リザーブドインスタンス・Savings Plans の前払いを期間に割り振ったコスト 前払いのある月に跳ねない、平らな推移を見る
NetAmortizedCost 割り振り+割引を反映 同上で、割引も反映
BlendedCost Organizations の一括請求のファミリー全体での平均単価 組織全体の平均で見る
UsageQuantity 使用量 単位が混ざって合計される。USAGE_TYPE で絞って使う
NormalizedUsageAmount 正規化した使用量 リザーブドインスタンスの比較

ドキュメントでは、UsageQuantity は単位を考えずに足し合わされるので、使用タイプで絞ると意味のある値になる、とされています。

jq・--query で整形した結果

上の出力例を、サービス・タグ・金額(小数第2位で丸め)の表にしました。

jq -r '.ResultsByTime[] as $r | $r.Groups[]
  | [$r.TimePeriod.Start, .Keys[0],
     (.Keys[1] | sub("^[^$]*\\$"; "") | if . == "" then "(タグなし)" else . end),
     (.Metrics.UnblendedCost.Amount | tonumber | . * 100 | round / 100)] | @tsv' cost.json
2017-09-01  Amazon Simple Storage Service   (タグなし)  40.35

同じ出力を --query と --output table で表にした結果です。

---------------------------------------------------------------------------
|                             GetCostAndUsage                             |
+--------------------------------+---------------+----------------+-------+
|  Amazon Simple Storage Service |  Environment$ |  40.3543773134 |  USD  |
+--------------------------------+---------------+----------------+-------+

--query では文字列の金額を数値として並べ替えられないので、多い順に並べるなら jq を使います。 --query の書き方は関連記事「AWS CLI --queryの使い方|JMESPath絞り込みと出力形式」で、jq は関連記事「jqの使い方|逆引き40例と実務レシピを全部実行結果つきで解説」で扱っています。

ページ送り(NextPageToken)

botocore では、GetCostAndUsage はページ送りの自動処理(paginator)の対象になっていません(can_paginate("get_cost_and_usage") が False)。グループが多くて結果が分かれたときは、NextPageToken を見て自分で呼び直します。 そのたびに 1 リクエスト分の料金がかかります。

"""今月のサービス別の料金(UnblendedCost)を多い順に出す"""
import datetime as dt
import boto3

ce = boto3.client("ce", region_name="us-east-1")  # Cost Explorer API のエンドポイントは us-east-1


def month_range(today: dt.date):
    start = today.replace(day=1)
    end = today  # End は含まれない(今日の分はまだ確定していない)
    if start == end:  # 月初は前月を見る
        end = start
        start = (start - dt.timedelta(days=1)).replace(day=1)
    return start.isoformat(), end.isoformat()


def cost_by_service(start: str, end: str) -> dict:
    totals, token = {}, None
    while True:
        kwargs = dict(
            TimePeriod={"Start": start, "End": end},
            Granularity="MONTHLY",
            Metrics=["UnblendedCost"],
            GroupBy=[{"Type": "DIMENSION", "Key": "SERVICE"}],
        )
        if token:
            kwargs["NextPageToken"] = token
        res = ce.get_cost_and_usage(**kwargs)  # 1 リクエストごとに $0.01
        for period in res["ResultsByTime"]:
            for g in period["Groups"]:
                amt = float(g["Metrics"]["UnblendedCost"]["Amount"])
                totals[g["Keys"][0]] = totals.get(g["Keys"][0], 0.0) + amt
        token = res.get("NextPageToken")
        if not token:
            return totals


if __name__ == "__main__":
    start, end = month_range(dt.date.today())
    totals = cost_by_service(start, end)
    print(f"{start} 〜 {end}(End は含まない)")
    for name, amt in sorted(totals.items(), key=lambda x: -x[1]):
        if amt >= 0.01:
            print(f"{amt:>10.2f} USD  {name}")
    print(f"{sum(totals.values()):>10.2f} USD  合計")

month_range は、10月13日なら 2026-10-01〜2026-10-13、10月1日なら 2026-09-01〜2026-10-01、1月1日なら前年12月を返すことを確かめました。ページ送りは、Stubber で NextPageToken 付きの応答を2ページ分返し、2回呼ばれて合計されることを確かめています。

Cost Explorer API の料金

項目 料金(料金ページ・ドキュメント)
Cost Explorer の画面 無料
API(get-cost-and-usage など) ページ分けされた 1 リクエストごとに $0.01
時間単位(HOURLY)のデータ 使用レコードごとに 1 日 $0.00000033(1,000 件で月 約 $0.01)。14 日分

CLI を1回動かすたびに、少なくとも $0.01 かかります。 毎時の監視ジョブのように何度も呼ぶと、その分が積み上がります。

呼び方 1か月のリクエスト数 API 料金
1 日 1 回(1 ページ) 30 $0.30
1 時間に 1 回(1 ページ) 720 $7.20
1 日 1 回、4 種類の集計 120 $1.20

日々の確認は、予算アラート(無料)とコンソールの画面(無料)でまかない、CLI は日次レポートなどに使うと、API の料金を抑えられます。

予算アラート(aws budgets create-budget)

AWS Budgets は、月の予算に対して「実際の金額」か「予測」がしきい値を超えたら、メールか SNS で知らせる機能です。 料金ページでは、予算の監視と通知は無料です(予算アクションは、アクションを有効にした予算が月2つまで無料、以降は 1 つにつき 1 日 $0.10)。

予算の JSON(budget.json)

月 200 USD の予算です。クレジットと返金は含めない設定にしています。

{
  "BudgetName": "monthly-total-200usd",
  "BudgetType": "COST",
  "TimeUnit": "MONTHLY",
  "BudgetLimit": { "Amount": "200", "Unit": "USD" },
  "CostTypes": {
    "IncludeTax": true,
    "IncludeSubscription": true,
    "UseBlended": false,
    "IncludeRefund": false,
    "IncludeCredit": false,
    "IncludeUpfront": true,
    "IncludeRecurring": true,
    "IncludeOtherSubscription": true,
    "IncludeSupport": true,
    "IncludeDiscount": true,
    "UseAmortized": false
  }
}

通知の JSON(notifications.json)

実際の金額が 80% を超えたら、と、予測が 100% を超えそうなら、の2つです。

[
  {
    "Notification": {
      "NotificationType": "ACTUAL",
      "ComparisonOperator": "GREATER_THAN",
      "Threshold": 80,
      "ThresholdType": "PERCENTAGE"
    },
    "Subscribers": [
      { "SubscriptionType": "EMAIL", "Address": "infra-team@example.com" }
    ]
  },
  {
    "Notification": {
      "NotificationType": "FORECASTED",
      "ComparisonOperator": "GREATER_THAN",
      "Threshold": 100,
      "ThresholdType": "PERCENTAGE"
    },
    "Subscribers": [
      { "SubscriptionType": "EMAIL", "Address": "infra-team@example.com" }
    ]
  }
]

作成と確認

ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)

aws budgets create-budget \
  --account-id "$ACCOUNT_ID" \
  --budget file://budget.json \
  --notifications-with-subscribers file://notifications.json

aws budgets describe-budgets --account-id "$ACCOUNT_ID" \
  --query 'Budgets[].[BudgetName,BudgetLimit.Amount,TimeUnit,CalculatedSpend.ActualSpend.Amount]' \
  --output text

aws budgets describe-notifications-for-budget --account-id "$ACCOUNT_ID" \
  --budget-name monthly-total-200usd \
  --query 'Notifications[].[NotificationType,Threshold,ThresholdType]' --output text

moto で動かした結果です(作った直後なので実際の金額は 0)。

monthly-total-200usd    200 MONTHLY 0
ACTUAL  80  PERCENTAGE
FORECASTED  100 PERCENTAGE

同じ名前でもう一度作ると、DuplicateRecordException(the budget already exists)になりました。変えるときは update-budget、通知は create-notification・update-notification を使います。

タグ(プロジェクト)ごとの予算

{
  "BudgetName": "project-billing-api",
  "BudgetType": "COST",
  "TimeUnit": "MONTHLY",
  "BudgetLimit": { "Amount": "50", "Unit": "USD" },
  "CostFilters": { "TagKeyValue": ["user:Project$billing-api"] }
}

タグの指定は user:タグキー$値 の形です(ドキュメントの例と同じ形)。コスト配分タグとして有効にしたタグだけが使えます。

予算の設定値

項目 指定できる値(CLI リファレンス)
BudgetType COST・USAGE・RI_UTILIZATION・RI_COVERAGE・SAVINGS_PLANS_UTILIZATION・SAVINGS_PLANS_COVERAGE
TimeUnit DAILY・MONTHLY・QUARTERLY・ANNUALLY・CUSTOM
NotificationType ACTUAL(実際の金額)・FORECASTED(予測)
ThresholdType PERCENTAGE(予算に対する割合)・ABSOLUTE_VALUE(金額)
SubscriptionType EMAIL・SNS
通知先の数 1つの通知に SNS 1 つ+メール 10 件まで

CostTypes の既定値は、UseBlended と UseAmortized が false、ほかは true です。クレジットのあるアカウントで既定のままにすると、クレジットが差し引かれた額で判定され、使いすぎに気づきにくくなります。 上の例では、IncludeCredit と IncludeRefund を false にしています。

請求アラーム(CloudWatch の EstimatedCharges)

AWS Budgets のほかに、CloudWatch のメトリクス EstimatedCharges(見積もりの請求額)にアラームを付ける方法もあります。

項目 内容(ドキュメント)
事前の設定 請求の設定で「CloudWatch 請求アラートを受信する」を有効にする。一度有効にすると、データの収集は止められない
リージョン 米国東部(バージニア北部)= us-east-1 に作る。データは世界全体の請求額
名前空間・メトリクス AWS/Billing・EstimatedCharges(USD のみ)
更新 1 日に数回
ドキュメントの設定 統計 Maximum、期間 6 時間、1 回中 1 回で発報
# 通知先の SNS トピック(us-east-1)
TOPIC_ARN=$(aws sns create-topic --name billing-alerts --region us-east-1 \
  --query TopicArn --output text)
aws sns subscribe --topic-arn "$TOPIC_ARN" --protocol email \
  --notification-endpoint infra-team@example.com --region us-east-1

# 請求額が 200 USD を超えたら通知
aws cloudwatch put-metric-alarm \
  --region us-east-1 \
  --alarm-name billing-over-200usd \
  --namespace AWS/Billing \
  --metric-name EstimatedCharges \
  --dimensions Name=Currency,Value=USD \
  --statistic Maximum \
  --period 21600 \
  --evaluation-periods 1 \
  --datapoints-to-alarm 1 \
  --threshold 200 \
  --comparison-operator GreaterThanThreshold \
  --treat-missing-data missing \
  --alarm-actions "$TOPIC_ARN"

moto で作ったアラームを describe-alarms で見た結果です。

billing-over-200usd AWS/Billing EstimatedCharges    21600   200.0   OK
比べる点 AWS Budgets 請求アラーム
予測で通知 できる(FORECASTED) できない(今の見積もり額だけ)
タグ・サービスで絞る できる(CostFilters) 見積もりの請求額で判定
料金 監視と通知は無料 CloudWatch アラームの料金
置き場所 アカウント全体 us-east-1

CloudWatch アラームの作り方の全体は、関連記事「CloudWatchアラームをAWS CLIで作成|SNS通知・カスタム指標」で扱っています。

料金が増えたときの調べ方

順番 見るもの コマンド・場所 分かること
1 日別の合計 ③ 日別の推移 いつから増えたか
2 増えた日のサービス別 ④ 日別×サービス別 どのサービスか
3 使用タイプ別 ⑧ サービス×使用タイプ インスタンス・転送量・ストレージのどれか
4 リージョン別・アカウント別 ⑥・⑦ どこで使っているか(使っていないリージョンに注意)
5 タグ別 ⑤ どのプロジェクト・環境か(タグなしが多いなら、タグ付けを見直す)
6 リソースの一覧 aws ec2 describe-instances、aws rds describe-db-instances など 止め忘れ・消し忘れのリソース
7 誰が作ったか CloudTrail の RunInstances・CreateDBInstance など 作成した人・時刻

使用タイプの名前から疑うものの例です。

使用タイプの例 疑うもの
NatGateway-Hours・NatGateway-Bytes NAT ゲートウェイの消し忘れ・大量の通信
DataTransfer-Out-Bytes インターネットへの転送量
EBS:VolumeUsage 外したまま残っている EBS ボリューム・スナップショット
BoxUsage:<インスタンスタイプ> 止め忘れのインスタンス

使用タイプの名前には、リージョンを表す接頭辞(東京なら APN1- など)が付きます。表の例は接頭辞を省いています。

誰がリソースを作ったかは、関連記事「CloudTrailで誰が操作したか調べる|lookup-eventsとAthena」で扱っています。

よくある質問

Q. CLI の金額と請求書の金額が合いません。 A. 見ている指標と期間を確かめます。請求書に近いのは UnblendedCost で、クレジット・返金・税を含むかで変わります。当月分は Estimated が true で、あとで変わることがあります。End は含まれないので、月末の日を含めるには翌月1日を指定します。

Q. タグで集計すると、ほとんどが Project$(タグなし)になります。 A. タグを「コスト配分タグ」として有効にする前の料金には、タグが付きません。また、タグを付けられない料金(データ転送の一部など)もあります。

Q. 予算アラートのメールが届きません。 A. 予算の金額としきい値、CostTypes でクレジットを含めていないかを確かめます。予算の実際の金額は請求データをもとに計算されるので、使った直後にはすぐ届きません。

Q. Cost Explorer の API をたくさん呼んでもいいですか。 A. 1 リクエストごとに $0.01 かかります。ドキュメントでは、短い時間に呼びすぎると LimitExceededException になるとされています。結果をファイルに保存して使い回すと、回数を減らせます。

まとめ

  • 画面で見るなら Cost Explorer(無料)、コマンドなら aws ce get-cost-and-usage(1 リクエスト $0.01)
  • End は含まれない。--group-by を付けると Total は空、金額は文字列
  • 普段は UnblendedCost。前払いを平らに見るなら AmortizedCost、UsageQuantity は単位が混ざる
  • タグ別に見るには、コスト配分タグの有効化(反映まで最大 24 時間+24 時間)
  • まず aws budgets create-budget で予算アラートを作る。IncludeCredit: false でクレジットに隠れないように
  • 増えたときは 日別 → サービス別 → 使用タイプ別 → リージョン・タグ → リソース → CloudTrail の順に絞る

参考・出典

確認日はいずれも 2026年10月12日です。

  • AWS CLI コマンドリファレンス「get-cost-and-usage」:https://docs.aws.amazon.com/cli/latest/reference/ce/get-cost-and-usage.html
  • AWS Billing and Cost Management API リファレンス「GetCostAndUsage」:https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_GetCostAndUsage.html
  • AWS コスト管理ユーザーガイド「Analyzing your costs and usage with AWS Cost Explorer」:https://docs.aws.amazon.com/cost-management/latest/userguide/ce-what-is.html
  • AWS コスト管理ユーザーガイド「Using the advanced options(コストの指標)」:https://docs.aws.amazon.com/cost-management/latest/userguide/ce-advanced.html
  • AWS Cost Explorer の料金:https://aws.amazon.com/aws-cost-management/aws-cost-explorer/pricing/
  • AWS CLI コマンドリファレンス「create-budget」:https://docs.aws.amazon.com/cli/latest/reference/budgets/create-budget.html
  • AWS Budgets の料金:https://aws.amazon.com/aws-cost-management/aws-budgets/pricing/
  • AWS Billing ユーザーガイド「Activating user-defined cost allocation tags」:https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/activating-tags.html
  • AWS Billing ユーザーガイド「Managing access permissions」:https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/control-access-billing.html
  • Amazon CloudWatch ユーザーガイド「Create a billing alarm to monitor your estimated AWS charges」:https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/monitor_estimated_charges_with_cloudwatch.html
  • Amazon CloudWatch ユーザーガイド「AWS services that publish CloudWatch metrics」:https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「AWSの料金を確認する方法|Cost Explorer・CLI・予算アラート」

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?