CloudTrail は一部が無料です。 管理イベントのイベント履歴(直近90日)と、証跡で配信する管理イベントのリージョンごとの最初の1コピーは無料です。主な課金対象は、管理イベントの2コピー目以降(10万件 $2.00)、データイベントとネットワークアクティビティイベント(1コピー目から10万件 $0.10)、Insights、CloudTrail Lake です。Price List に載る CloudTrail の単価は、東京とバージニア北部で同じです(2026年10月26日に AWS Price List Bulk API で確認)。
| 項目 | 料金(税抜 USD) |
|---|---|
| イベント履歴(管理イベント・直近90日) | 無料 |
| 証跡の管理イベント 1コピー目(リージョンごと) | 無料 |
| 証跡の管理イベント 2コピー目以降 | $2.00 / 10万件 |
| データイベント(1コピー目から) | $0.10 / 10万件 |
| ネットワークアクティビティイベント(1コピー目から) | $0.10 / 10万件 |
| データイベントの集約(データイベント料金に加算) | $0.03 / 分析10万件 |
| Insights(管理イベント / データイベント) | $0.35 / $0.03 / 分析10万件 |
| 証跡なしで CloudWatch Logs へ直接配信 | $0.25 / GB + CloudWatch Logs の取り込み料 |
| CloudTrail Lake(新規受付は終了) | 取り込み $0.75 / GB ほか |
| ログを置く S3(別の請求・東京) | S3 Standard $0.025 / GB・月 |
目安:マルチリージョン証跡1本で管理イベントだけを記録するなら、CloudTrail の請求は $0 です。 払うのはログを置く S3 の保管料などです。
証跡の作り方・暗号化・整合性検証の設定は CloudTrail 監査ログ・ガバナンス・セキュリティ完全ガイド にまとめています。この記事は料金だけを扱います。
CloudTrail で無料になるもの・ならないもの
単価は、AWS Price List Bulk API の CloudTrail 価格ファイル(公開日 2026-09-11、適用開始 2026-07-01)で確認しました。東京(APN1-)とバージニア北部(USE1-)の全14の使用タイプで単価は同じで、料金ページの数値とも一致します。
無料
- イベント履歴。 直近90日の管理イベントを、コンソールか
lookup-eventsAPI で見られます(1アカウント・1リージョン単位)。 - 証跡の管理イベント 1コピー目。 "The first copy of management events within each region is delivered free of charge." 請求には
FreeEventsRecorded($0)として件数だけ載ります。 - Insights のベースライン分析。 過去28日分から平常値を作る分析は無料です。
1コピー目でも有料になるもの
- データイベントとネットワークアクティビティイベント。 "For data events, all deliveries incur CloudTrail costs, including the first." ネットワークアクティビティイベントも常に課金されます。
- 証跡を作らずに CloudWatch Logs へ直接送る配信。 $0.25/GB は CloudTrail の配信料で、CloudWatch Logs の取り込み料が別に加わります。料金ページの例10(バージニア北部)は 1,024GB で $256 + $512 = $768 です。東京の試算は $0.25 + $0.76 = $1.01/GB です($0.25 は料金ページだけの値で、Price List にリージョン別の単価はありません)。証跡の CloudWatch Logs 連携には、CloudWatch Logs の標準料金が適用されます。
- 壊れた証跡。 S3 バケットに届かない証跡は、CloudTrail が30日間再配信を試み、その分も課金されます。止めるには証跡を削除します。
請求書の読み方:PaidEventsRecorded などの使用タイプ
請求書や Cost Explorer では、CloudTrail の行は「リージョンコード+使用タイプ」で表示されます。
| 使用タイプ(東京の例) | 意味 | 原因を探す場所 |
|---|---|---|
APN1-FreeEventsRecorded | 管理イベントの1コピー目($0) | 1コピー目の証跡が配信した件数。除外がなければそのリージョンの月間管理イベント数 |
APN1-PaidEventsRecorded | 管理イベントの2コピー目以降 | 同じ管理イベントを記録する証跡が2本以上ある |
APN1-DataEventsRecorded | データイベント(常に課金) | どの証跡がどのリソースを記録しているか |
APN1-NetworkEventsRecorded | ネットワークアクティビティイベント(常に課金) | VPC エンドポイントのイベント選択 |
APN1-EventsAnalyzed-AggregatedEvents | データイベントの集約 | 集約を有効にした証跡 |
APN1-InsightsEvents / APN1-DataInsightsEvents | Insights の分析件数(管理 / データ) | 有効にした種別の数と対象 |
APN1-Ingestion-Bytes… / APN1-PaidStorage-ByteHrs / APN1-QueryScanned-Bytes | CloudTrail Lake の取り込み / 延長保持 / クエリ | イベントデータストア |
PaidEventsRecorded が出たら、そのリージョンで管理イベントが2回以上配信されています。 AWS の説明は "The charge for additional copies of management events delivered to an AWS Region." です。
Cost Explorer で使用タイプを特定する
コンソールでは、Cost Explorer の Group by で Usage type を選び、Filters の Service で CloudTrail に絞ります。件数まで見るときは、Cost Explorer API の UsageQuantity を使います。
# 1) 請求データ上の CloudTrail のサービス名を調べる(表記を推測しない)
aws ce get-dimension-values \
--time-period Start=2026-09-01,End=2026-10-01 \
--dimension SERVICE --search-string CloudTrail \
--query 'DimensionValues[].Value'
# 2) 使用タイプごとの件数と金額。Values には 1) で表示された名前を入れる
aws ce get-cost-and-usage \
--time-period Start=2026-09-01,End=2026-10-01 \
--granularity MONTHLY \
--metrics UsageQuantity UnblendedCost \
--group-by Type=DIMENSION,Key=USAGE_TYPE \
--filter '{"Dimensions":{"Key":"SERVICE","Values":["<1)で表示されたサービス名>"]}}'
End の日付は含まれません。UsageQuantity は単位を区別せず合算されるので、必ず使用タイプでグループ化します。
証跡のタグでは費用を分けられません。 AWS Billing は証跡のタグを費用配分に使えず、コスト配分タグが使えるのは S3 バケットと Lake のイベントデータストアです(ユーザーガイド)。
どの証跡が原因かを調べる
# アカウントの全証跡とホームリージョン
aws cloudtrail list-trails
# 現在のリージョンの証跡+シャドウ証跡(他リージョンからの複製・組織トレイル)
aws cloudtrail describe-trails \
--query 'trailList[].{Name:Name,MultiRegion:IsMultiRegionTrail,Org:IsOrganizationTrail,Home:HomeRegion}'
# その証跡が記録しているイベント(セレクタ)
aws cloudtrail get-event-selectors --trail-name <証跡名またはARN>
証跡の料金:管理イベントが「2コピー目」になる構成・ならない構成
ルール:1つの管理イベントは、1リージョンにつき1コピーまでが無料です。
| ケース | 構成 | 管理イベントの料金 |
|---|---|---|
| A | 単一リージョン証跡2本(us-east-1 と us-west-2 に1本ずつ) | 無料(どちらも各リージョンの1コピー目) |
| B | マルチリージョン証跡+単一リージョン証跡 | 単一リージョン証跡が、そのリージョンで課金される |
| C | マルチリージョン証跡2本 | 1本分が、全リージョンで2コピー目として課金される |
| D | 組織トレイル+同じ管理イベントを集めるメンバーアカウントの証跡 | メンバーアカウントの証跡が課金される |
ケース B は既定値の違いでも起きます。Terraform の aws_cloudtrail は is_multi_region_trail の既定が false(コンソールの既定はマルチリージョン)なので、指定せずに作ると単一リージョン証跡になり、そのリージョンの2コピー目として課金されます。
ケース D は Control Tower でも起きます。Control Tower はランディングゾーンの設定時に組織トレイルを作るので、AWS は「既存の証跡を登録前に削除しないと重複課金になることがある」と案内しています。組織トレイルの整理は Organizations で CloudTrail 全社監査基盤を作る で扱っています。
自分の月額を見積もる
月額 = 月間件数 ÷ 100,000 × 10万件あたりの単価。 件数は自分の請求データかログから取ります。
- 管理イベント。 1コピー目の証跡が読み取り・書き込みとも除外なしで記録していれば、請求の
FreeEventsRecordedの件数がそのリージョンの月間管理イベント数です。除外の有無はget-event-selectorsで確かめます。同じ管理イベントをすべて記録する2本目の証跡を作ると、2コピー目の件数もこれと同じになります。 - データイベント。 AWS は事前の換算式を公開していません。狭い範囲(1バケット・書き込みのみなど)で短期間有効にし、
--granularity DAILYでDataEventsRecordedの1日の件数を読んで30倍します。 - S3 のログから数える。 Athena の公式パーティション射影テーブル(1リージョン1テーブル)を作れば、イベントソース別に数えられます。
-- AWS 公式のパーティション射影テーブル cloudtrail_logs_pp を前提にした例
SELECT eventsource, eventcategory, count(*) AS events
FROM cloudtrail_logs_pp
WHERE "timestamp" BETWEEN '2026/09/01' AND '2026/09/30' -- 期間を絞ってスキャン量を抑える
GROUP BY eventsource, eventcategory
ORDER BY events DESC
LIMIT 20;
試算例(件数はすべて仮の値)
| ケース | 入力(仮の件数) | 計算 | 月額 |
|---|---|---|---|
| 1. マルチリージョン証跡1本・管理イベントのみ | 東京の1コピー目 2,000,000件 | 2,000,000 × $0 | $0.00 |
| 2. 1に、同じ管理イベントを記録する東京の単一リージョン証跡を追加 | 2コピー目 2,000,000件 | 2,000,000 ÷ 100,000 × $2.00 | $40.00 |
| 3. S3 データイベント・1バケット・書き込みのみ | 1日500,000件 × 30日 = 15,000,000件 | 15,000,000 ÷ 100,000 × $0.10 | $15.00 |
| 4. 3に読み取りを追加 | 1日5,000,000件 × 30日 = 150,000,000件 | $15.00 + 150,000,000 ÷ 100,000 × $0.10 | $165.00 |
| 5. 3に集約を追加 | 15,000,000件 | $15.00 + 15,000,000 ÷ 100,000 × $0.03 | $19.50 |
| 6. Insights 2種別(管理イベント) | 書き込み300,000件・読み取り2,700,000件 → 分析 300,000 × 2 + 2,700,000 = 3,300,000件 | 3,300,000 ÷ 100,000 × $0.35 | $11.55 |
| 7. 全バケットのデータイベントを無条件に記録 | 1日1億件 × 30日 = 3,000,000,000件 | 3,000,000,000 ÷ 100,000 × $0.10 | $3,000.00 |
データイベント・Insights・ネットワークアクティビティ・集約の料金
データイベント
S3 オブジェクトの GetObject・PutObject・DeleteObject や Lambda の Invoke など、リソース内の操作の記録です。件数が多くなりやすく、既定では記録されません。
- コピーごとに課金されます。 2本の証跡が同じデータイベントを記録すれば2回課金です。別アカウントからの操作を双方の証跡が記録すると、呼び出し側と所有者側がそれぞれ払います。
- 再帰ログに注意します。 ログ用バケットの S3 データイベントを記録すると、CloudTrail のログ配信(
PutObject)自体が記録され、それがまた配信されます。RecursiveLoggingを false にすると止まります(既定は true)。
# 証跡のホームリージョンで実行する
aws cloudtrail update-trail --name <証跡名> --no-recursive-logging
Terraform aws_cloudtrail のドキュメントにはこの引数がない(2026年10月26日時点)ため、ログ用バケットを resources.ARN の not_starts_with で外す方法もあります。
データイベントは高度なイベントセレクタで対象バケットに絞り、管理イベントは除外なしで残します。次の例は対象バケットの書き込みだけを記録します。読み取りを外すと、誰がオブジェクトを読んだかは記録に残りません。 機微なデータのバケットでは readOnly の条件を外します。
resource "aws_cloudtrail" "audit" {
# バケットポリシーが無いと作成に失敗する(InsufficientS3BucketPolicyException)
depends_on = [aws_s3_bucket_policy.cloudtrail]
# KMS キー・ロググループ・IAM ロール・バケットポリシーの定義は省略
name = "audit-trail"
s3_bucket_name = aws_s3_bucket.cloudtrail.id
is_multi_region_trail = true # 既定は false
include_global_service_events = true
enable_log_file_validation = true # 既定は false(CloudTrail.4)
kms_key_id = aws_kms_key.cloudtrail.arn # CloudTrail.2
cloud_watch_logs_group_arn = "${aws_cloudwatch_log_group.cloudtrail.arn}:*" # CloudTrail.5。末尾の :* が必要
cloud_watch_logs_role_arn = aws_iam_role.cloudtrail_to_logs.arn
# 管理イベント:読み取り・書き込みとも、除外なしで記録する
advanced_event_selector {
name = "All management events"
field_selector {
field = "eventCategory"
equals = ["Management"]
}
}
# データイベント:対象バケットの書き込みだけを記録する(読み取りは残らない)
advanced_event_selector {
name = "S3 write data events on the target bucket"
field_selector {
field = "eventCategory"
equals = ["Data"]
}
field_selector {
field = "resources.type"
equals = ["AWS::S3::Object"]
}
field_selector {
field = "readOnly"
equals = ["false"]
}
field_selector {
field = "resources.ARN"
starts_with = ["${aws_s3_bucket.audited.arn}/"] # 末尾の / は必要
}
}
}
高度なセレクタを適用すると、その証跡の基本セレクタは上書きされます。
Insights
過去28日の平常値から API 呼び出し率やエラー率が外れたときにイベントを出す機能です。料金は、種別ごとの分析件数の合計 × 10万件あたり $0.35(管理イベント)または $0.03(データイベント)です。
- 管理イベントで2種別を有効にすると、書き込みは2回、読み取りは1回分析されます(API 呼び出し率は書き込みだけが対象)。ユーザーガイドの例では、読み取り270,000件・書き込み30,000件で分析件数は330,000件です。
- データイベントで2種別を有効にすると、全件が2回分析されます。データイベントの Insights は証跡でだけ使えます。
- 分析対象は証跡が記録したイベントなので、証跡でイベントを除外すると分析件数も減ります。
ネットワークアクティビティイベントと集約
ネットワークアクティビティイベントは、VPC エンドポイント経由の AWS API 呼び出しをエンドポイントの所有者が記録する機能で、既定では記録されません。データイベントの集約は5分ごとの要約で、$0.03/10万件がデータイベントの料金に上乗せされます(元の料金は減りません)。
CloudTrail が課金しない周辺コスト(しかし請求は来る)
周辺サービスは東京の方が高い項目があります(例:CloudWatch Logs の取り込みは東京 $0.76/GB、バージニア北部 $0.50/GB)。表は東京の単価です(2026年10月26日、各サービスの Price List で確認)。
| サービス・項目 | 東京の単価 |
|---|---|
| S3 Standard 保管(最初の50TB) | $0.025 / GB・月 |
| S3 PUT・COPY・POST・LIST | $0.0047 / 1,000件 |
| S3 Glacier Instant Retrieval 保管 | $0.005 / GB・月 |
| S3 ライフサイクル遷移(Glacier Instant Retrieval へ) | $0.02 / 1,000件 |
| KMS リクエスト | $0.03 / 10,000件 |
| KMS カスタマー管理キー | $1 / キーバージョン・月 |
| CloudWatch Logs 取り込み(Standard ログクラス) | $0.76 / GB |
| CloudWatch Logs 保管 | $0.033 / GB・月 |
| SNS API リクエスト(毎月最初の100万件は無料) | $0.50 / 100万件 |
| Athena スキャン量(1クエリ最低10MB) | $5.00 / TB |
- S3。 CloudTrail はおよそ5分ごとにログファイル(gzip)を
PutObjectで配信し、既定では無期限に保存します。失効ルールを入れない限り保管料は積み上がります。 - CloudWatch Logs。 証跡の連携には取り込み料と保管料がかかります。試算として、毎月10GBを Standard の単価で取り込むと 10 × $0.76 = $7.60 です。無料枠が残っていれば、Price List で最初の5GBの取り込みは $0 なので (10 − 5) × $0.76 = $3.80 です(実際の使用タイプは自分の請求で確認)。役割の違いは CloudTrail と CloudWatch・Config の違い にあります。
- GuardDuty。 CloudTrail 管理イベントの解析料は GuardDuty の請求に載ります。内訳は GuardDuty の料金とコスト最適化 にあります。
CloudTrail Lake の取り込み・クエリ料金と保持階層、そして新規終了の現実
CloudTrail Lake は2026年5月31日に新規顧客の受付を終了しました。 AWS はこの変更を、ユーザーガイドのドキュメント履歴に2026年3月31日付で掲載しています。
- 既存顧客は使い続けられますが、今後は重大なバグ修正とセキュリティ更新だけです。
- 証跡、Insights、集約イベントは影響を受けません。
- AWS は移行先として CloudWatch を推奨しています。2023年より前のデータは移行されません。証跡なしで CloudWatch Logs へ送ると、配信料と取り込み料の両方がかかります(前述)。
- 料金ページに30日無料試用の記載は残っていますが、新規顧客は使えません。
既存顧客の料金です(東京・バージニア北部とも同額)。
| 料金オプション | 取り込み | 保持期間 | クエリ |
|---|---|---|---|
| 1年延長可能(既定) | CloudTrail イベント $0.75/GB、その他のソース $0.50/GB | 既定366日・最大3,653日。1年を超える分は $0.023/GB・月 | $0.005/GB スキャン |
| 7年保持 | 月5TBまで $2.5/GB、次の20TB $1/GB、25TB超 $0.50/GB | 2,557日 | $0.005/GB スキャン |
取り込みは非圧縮のデータ量、保持とクエリは最適化・圧縮後のデータ量で課金されます。GB は2進数(1TB = 1,024GB)で、試算として1,024GBを取り込むと 1,024 × $0.75 = $768.00 です。移行手順と Lake・Athena の選び方は CloudTrail Lake 実践ガイド にまとめています。
料金を下げる手順(監査要件を壊さない順番で)
- 重複した証跡を消す。
PaidEventsRecordedは重複を消せば発生しなくなります。組織トレイル(Control Tower が作るものを含む)があれば、メンバー側の重複も整理します。 - データイベントを絞る。 まず対象のバケットを絞ります。読み取りを外すとさらに減りますが、誰がオブジェクトを読んだかは残りません。機微なデータのバケットは読み取りも残します。
- 再帰ログを止める。
--no-recursive-loggingか、ログ用バケットを対象から外します。 - 壊れた証跡を削除する。 30日間の再配信分も課金されるためです。
- KMS・RDS Data API の除外は追加の証跡だけにかける。 メインの証跡は1コピー目なので、除外しても CloudTrail の配信料は下がりません(減るのは S3・CloudWatch Logs に流れる量と、Insights を有効にしている場合の分析件数だけ)。KMS イベントを元から減らすのは S3 バケットキーです(AWS によれば KMS のリクエストコストを最大99%削減し、CloudTrail の KMS イベントも減る)。
- S3 ライフサイクルで保持期間を決める。 まず監査要件に合わせた失効(
expiration)を入れます。 - Athena は期間でパーティションを絞る。 条件がないと全ファイルをスキャンします。
- 予算アラートを置く。 ユーザーガイドは AWS Budgets で CloudTrail の予算を作ることをベストプラクティスとしています。Terraform の
aws_budgets_budgetでは、非推奨の APICostFiltersに当たるcost_filterではなくfilter_expressionを使い、Service の値は上のget-dimension-valuesの結果を使います。全体の FinOps は Terraform で作るスタートアップのコスト最適化 にあります。
5番の補足:KMS の Encrypt・Decrypt・GenerateDataKey は通常 KMS イベントの99%超を占め、読み取りイベントとして記録されます。
# 証跡のホームリージョンで実行する。
# 追加の(有料の)証跡だけに使い、メインのマルチリージョン証跡には適用しない
aws cloudtrail put-event-selectors \
--trail-name <追加の証跡名> \
--event-selectors '[{"ReadWriteType": "All","IncludeManagementEvents": true,"ExcludeManagementEventSources": ["kms.amazonaws.com","rdsdata.amazonaws.com"]}]'
Terraform で管理している証跡は、event_selector ブロックの exclude_management_event_sources = ["kms.amazonaws.com", "rdsdata.amazonaws.com"] で設定します(advanced_event_selector とは併用不可)。CLI で変えると Terraform の差分になり、次の apply で戻されることがあります。
6番で保管クラスの遷移も入れるなら、次の点に注意します。
- 128KB 未満のオブジェクトは、既定では遷移しません(2024年9月以降に作成・変更したライフサイクル設定の場合)。遷移リクエスト料が節約を上回ることがあるため、AWS は小さいオブジェクトの遷移を推奨していません。CloudTrail のログファイルは上限(圧縮前50MB)が公開されているだけで典型的な大きさは公開されていないので、自分のバケットで確かめてから決めます。
- 最低保存期間は Standard-IA 30日、Glacier Instant Retrieval 90日、Deep Archive 180日です。Standard-IA と Glacier Instant Retrieval は128KB 未満も128KBとして課金します。
- MFA Delete を有効にしたバケットでは、ライフサイクル設定を使えません。Object Lock でロック中のバージョンは、失効ルールでも削除されません。
削ってはいけないもの
Security Hub や CIS ベンチマークで評価されるアカウントでは、料金のために次の4つを外すと不合格になります。
| Security Hub コントロール | CIS v5.0.0 | 料金のために外すと |
|---|---|---|
| CloudTrail.1:読み取り・書き込みの管理イベントを含むマルチリージョン証跡が1本以上ある(重大度 High) | 3.1 | 除外や読み取りの省略で不合格 |
| CloudTrail.4:ログファイルの整合性検証が有効 | 3.2 | 不合格。Price List に料金項目はなく、かかるのは1時間ごとのダイジェストファイルの S3 料金だけ |
| CloudTrail.2:保存時の暗号化が有効 | 3.5 | 不合格。KMS の料金は S3 バケットキーで抑える |
| CloudTrail.5:証跡が CloudWatch Logs と連携している | 3.4 | 不合格。費用は CloudWatch Logs の料金(東京で取り込み $0.76/GB、保管 $0.033/GB・月) |
KMS や CloudWatch Logs の料金が別にかかるのは CloudTrail.2 と CloudTrail.5 です。AWS は CloudWatch Logs 連携をリアルタイム分析の手段として挙げています。評価を受けないアカウントなら、リアルタイムのアラートの必要性と取り込み料を比べて決めます。
CloudTrail.1 を評価する AWS Config ルール multi-region-cloudtrail-enabled の説明は次のとおりです。
The rule is NON_COMPLIANT if the ExcludeManagementEventSources field is not empty or if AWS CloudTrail is configured to exclude management events such as AWS KMS events or Amazon RDS Data API events.
メインのマルチリージョン証跡に KMS や RDS Data API の除外をかけると、CloudTrail.1 に不合格になります。 PCI DSS 要件10などフレームワーク別の要件は CloudTrail でコンプライアンス監査に備える で解説しています。
証跡の重複、データイベントの範囲、ログの保護を含めて AWS の設定をまとめて点検したい場合は、セキュリティ監査で扱っています。