「AWSの請求書が毎月届くけれど、どのプロジェクトでいくらかかっているのか内訳がわからない」——こんな状況に心当たりはないでしょうか。
オンプレミス環境では、物理サーバーやネットワーク機器を部門やプロジェクトごとに割り当てていたため、コストの帰属先はある程度明確でした。ところがクラウドに移行すると、複数のチームが同じAWSアカウント上でリソースを作成し、請求書はアカウント単位の合計額だけが表示されます。「このEC2は誰のプロジェクトか」「このS3バケットはどの部門が使っているのか」が、請求書からは読み取れないのです。
この記事では、AWSのコスト配分タグ(Cost Allocation Tags)の仕組みと、現場で使えるタグ戦略の設計方法を実践的に解説します。タグの付け方から、Cost Explorerでの部門別コスト可視化、タグ付け漏れの防止策まで、読み終える頃には自社のAWS環境にすぐ適用できる知識が身についているはずです。

なぜコスト配分タグが必要なのか(オンプレとの違い)
オンプレミスの世界では、コスト管理は比較的シンプルでした。サーバーを購入したら、その減価償却費は購入した部門の予算に計上されます。ラックの場所を見れば、どの部門のサーバーかは一目瞭然です。
AWSに移行すると、この物理的な紐付けが消えます。開発チームがEC2インスタンスを10台立ち上げ、データサイエンスチームがSageMakerのノートブックを動かし、マーケティング部門がS3に大量のアセットを保存している——これらが全部1つのAWSアカウントの請求書にまとめて表示されます。
コスト配分タグは、この問題を解決する仕組みです。AWSリソースにキーと値のペア(タグ)を付けておくと、Cost Explorerや請求レポートでそのタグを軸にコストを分類・集計できるようになります。
・部門別コスト: 「Department: Engineering」「Department: Marketing」でフィルタリングして部門ごとの支出を把握
・プロジェクト別コスト: 「Project: user-portal」「Project: data-pipeline」で個別プロジェクトの費用を追跡
・環境別コスト: 「Environment: production」「Environment: staging」で本番と開発環境のコスト比率を確認
タグがなければ、AWS全体の月額は見えても「どこにいくらかかっているか」は霧の中です。タグはクラウドコスト管理の基盤であり、最初に整備すべきインフラの一つです。
AWSコスト配分タグの基本(仕組みと種類)
AWSのタグには2つの種類があります。混同しやすいので、最初に整理しておきます。
1. ユーザー定義タグ
自分でリソースに付けるタグです。キーと値は自由に設定できます。
# AWS CLIでEC2インスタンスにタグを付ける aws ec2 create-tags \ --resources i-0abcdef1234567890 \ --tags Key=Department,Value=Engineering \ Key=Project,Value=user-portal \ Key=Environment,Value=production
タグを付けただけでは、コスト配分には使えません。Billing and Cost Managementの設定画面で「コスト配分タグ」として有効化する必要があります。有効化後、翌月の請求データからそのタグでのフィルタリングが可能になります。
2. AWS生成タグ
AWSが自動的に付与するタグです。「aws:」プレフィックスで始まり、ユーザーは変更できません。
・aws:createdBy: リソースを作成したIAMユーザーやロール
・aws:cloudformation:stack-name: CloudFormationスタック名
AWS生成タグもコスト配分タグとして有効化できるので、「誰が作成したリソースにいくらかかっているか」を可視化する場合に便利です。
コスト配分タグの有効化手順
# AWS CLIでコスト配分タグのステータスを確認 aws ce list-cost-allocation-tags \ --status Active \ --type User # ユーザー定義タグをコスト配分タグとして有効化 aws ce update-cost-allocation-tags-status \ --cost-allocation-tags-status '[ {"TagKey": "Department", "Status": "Active"}, {"TagKey": "Project", "Status": "Active"}, {"TagKey": "Environment", "Status": "Active"} ]'
有効化してから実際にCost Explorerに反映されるまで最大24時間かかります。また、有効化前に発生したコストには遡及適用されません。タグ戦略の設計は、できるだけ早い段階で着手してください。

現場で使えるタグ戦略の設計パターン
タグのキー名は自由に決められますが、組織全体で統一しないとすぐに破綻します。「department」「Dept」「dept.」「所属部門」が混在している環境では、コスト集計ができません。
1. 必須タグの定義
以下の4つは、組織の規模に関係なく必須と考えてください。
| タグキー | 目的 | 値の例 |
|---|---|---|
| Department | コスト帰属先の部門 | engineering, marketing, data-science |
| Project | プロジェクトまたはサービス名 | user-portal, payment-api, analytics |
| Environment | 環境の区分 | production, staging, development |
| Owner | 管理責任者(メールアドレス) | yamada@example.com |
2. タグの命名規則
タグのキー名・値の表記は、以下のルールで統一します。
・キー名: PascalCase(Department, Project, Environment)
・値: 小文字ハイフン区切り(user-portal, data-pipeline)
・禁止事項: スペース、日本語、特殊文字は使わない
キー名にPascalCaseを採用する理由は、AWSコンソール上での視認性が高く、AWS生成タグ(aws:createdByなど)との区別がつきやすいからです。値を小文字ハイフン区切りにするのは、大文字・小文字の揺れによる集計漏れを防ぐためです。
3. タグ値のマスターリスト管理
「値は自由入力」にすると、「Engineering」「engineering」「eng」「技術部」が混在して集計が崩壊します。許可する値のマスターリストを作成し、IaCテンプレートやCI/CDパイプラインで参照する運用が必要です。
# CloudFormationでタグ値を制限する例(AllowedValues) Parameters: Department: Type: String AllowedValues: - engineering - marketing - data-science - sales - infrastructure Description: "部門名(マスターリストから選択)"
Cost Explorerでタグ別コストを可視化する
コスト配分タグを有効化したら、Cost Explorerで実際にタグ別のコストを確認してみましょう。
1. コンソールでの操作
AWS Cost Explorer(https://console.aws.amazon.com/cost-management/home#/cost-explorer)を開き、「Group by」のドロップダウンから「Tag」を選択します。有効化済みのコスト配分タグがリストに表示されるので、たとえば「Department」を選択すると、部門別のコスト推移がグラフで表示されます。
2. AWS CLIで部門別コストを取得する
# AWS CLIで部門別の月間コストを取得 aws ce get-cost-and-usage \ --time-period Start=2026-04-01,End=2026-04-30 \ --granularity MONTHLY \ --metrics "UnblendedCost" \ --group-by Type=TAG,Key=Department
このコマンドの出力には、各部門のコストと「タグなし」のコストが表示されます。「タグなし」の金額が大きい場合は、タグ付けが漏れているリソースが多い証拠です。
3. タグ未設定リソースのコスト比率を把握する
# タグなしコストの確認 aws ce get-cost-and-usage \ --time-period Start=2026-04-01,End=2026-04-30 \ --granularity MONTHLY \ --metrics "UnblendedCost" \ --group-by Type=TAG,Key=Department \ --filter '{ "Tags": { "Key": "Department", "Values": [""], "MatchOptions": ["ABSENT"] } }'
タグ未設定リソースのコスト比率が全体の20%を超えている場合は、タグ付け漏れの対策を優先すべきです。
タグ付け漏れを防ぐ3つの仕組み
タグ戦略を決めても、運用で徹底されなければ意味がありません。「タグを付けてください」というお願いだけでは、忙しい現場では必ず漏れます。仕組みで強制することが重要です。
1. AWS Organizations タグポリシー
AWS Organizationsのタグポリシーを使うと、特定のタグキーに対して許可する値を組織全体で強制できます。
# タグポリシーの例(JSON) { "tags": { "Environment": { "tag_key": { "@@assign": "Environment" }, "tag_value": { "@@assign": [ "production", "staging", "development" ] }, "enforced_for": { "@@assign": [ "ec2:instance", "rds:db", "s3:bucket" ] } } } }
ポリシー違反のタグ値を設定しようとすると、リソース作成がブロックされます。ただし、タグポリシーは「値の制限」はできますが「タグの付与を強制」する機能ではありません。タグなしでのリソース作成は阻止できないので、次のSCPと組み合わせます。
2. SCP(Service Control Policy)でタグなし作成を禁止
SCPを使えば、必須タグが付いていないリソースの作成自体をブロックできます。
# SCPでDepartmentタグなしのEC2起動を禁止 { "Version": "2012-10-17", "Statement": [ { "Sid": "RequireDepartmentTag", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "Null": { "aws:RequestTag/Department": "true" } } } ] }
SCPはOrganizations全体に適用されるため、すべてのアカウントで強制力があります。ただし、導入前に既存のCI/CDパイプラインやIaCテンプレートがタグを設定しているか確認してください。タグなしで動いていたデプロイが突然失敗する事態を避けるため、まずは「監査モード」で違反状況を把握してから強制モードに移行する段階的なアプローチが安全です。
3. AWS Configルールで未タグリソースを検出
AWS Configの「required-tags」マネージドルールを使うと、必須タグが付いていないリソースを自動検出できます。
# AWS CLIでrequired-tagsルールを作成 aws configservice put-config-rule --config-rule '{ "ConfigRuleName": "required-cost-tags", "Source": { "Owner": "AWS", "SourceIdentifier": "REQUIRED_TAGS" }, "InputParameters": "{\"tag1Key\":\"Department\",\"tag2Key\":\"Project\",\"tag3Key\":\"Environment\"}", "Scope": { "ComplianceResourceTypes": [ "AWS::EC2::Instance", "AWS::RDS::DBInstance", "AWS::S3::Bucket", "AWS::Lambda::Function" ] } }'
非準拠リソースはConfigのダッシュボードに一覧表示されるので、定期的に棚卸しして、タグ付け漏れをつぶしていく運用が可能です。SNS通知と組み合わせれば、タグなしリソースが作成された時点でSlackやメールに通知を飛ばすこともできます。
タグ戦略を成功させる実務Tips
【Tip 1】IaCテンプレートにタグを組み込む
CloudFormationやTerraformのテンプレートに必須タグを最初から埋め込んでおけば、リソース作成時のタグ付け漏れを根本的に防げます。
# Terraformのdefault_tags設定(プロバイダーレベルで全リソースにタグを自動付与) provider "aws" { region = "ap-northeast-1" default_tags { tags = { Department = var.department Project = var.project Environment = var.environment ManagedBy = "terraform" } } }
Terraformのdefault_tagsを使えば、個別リソースのtags設定を忘れても、プロバイダーレベルで全リソースに自動的にタグが付与されます。
【Tip 2】既存リソースのタグ付けはTag Editorで一括処理する
タグ戦略を後から導入する場合、すでに動いている大量のリソースにタグを付ける必要があります。AWS Tag Editor(https://console.aws.amazon.com/resource-groups/tag-editor/find-resources)を使えば、リージョンやサービスで絞り込んでから一括でタグを追加・修正できます。
# AWS CLIでタグなしのEC2インスタンスを一覧表示 aws resourcegroupstaggingapi get-resources \ --resource-type-filters ec2:instance \ --tag-filters Key=Department,Values= \ --query 'ResourceTagMappingList[].ResourceARN'
【Tip 3】タグ付けカバレッジを定期レポートする
月次で「タグ付きコスト比率」をレポートし、目標値(例: 95%以上)を設定して運用すると、タグの形骸化を防げます。Cost Explorerのデータをもとに、以下の計算でカバレッジを算出できます。
タグ付けカバレッジ(%) = タグ付きリソースのコスト ÷ 全体コスト × 100
最初のうちは50%程度から始まることもありますが、3か月程度で90%以上を目指すのが現実的な目標です。
よくあるトラブルと対処法
【トラブル1】コスト配分タグを有効化したのにCost Explorerに表示されない
有効化してから反映されるまで最大24時間かかります。また、有効化後に発生したコストのみが対象です。過去のコストデータには遡及適用されないため、有効化したら翌日以降のデータで確認してください。
対処: 有効化日を記録しておき、翌日以降に「Group by → Tag → 対象タグキー」で確認します。
【トラブル2】タグを付けたのにコスト配分に反映されていない
リソースにタグを付けることと、コスト配分タグとして有効化することは別の操作です。タグがリソースに付いていても、Billing and Cost Managementの「コスト配分タグ」画面で有効化していなければ、Cost Explorerのフィルタには表示されません。
対処: Billing and Cost Managementの「コスト配分タグ」ページで、該当タグキーのステータスが「Active」になっているか確認します。
【トラブル3】Lambda・NATゲートウェイなどタグ対応していないコストがある
AWSの一部サービスや課金項目は、タグによるコスト配分に対応していません。たとえばNAT Gatewayの処理料金やデータ転送料金は、リソースにタグが付いていてもコスト配分データに反映されないケースがあります(2026年4月時点)。
対処: タグで配分できないコストは、VPCやサブネット単位で管理し、そのVPCがどのプロジェクト専用かを別途マッピングテーブルで管理する運用が現実的です。
【トラブル4】チーム間でタグの表記が統一されない
「engineering」「Engineering」「ENGINEERING」が混在すると、Cost Explorerではそれぞれ別の項目として集計されます。
対処: 前述のタグポリシー+SCPで強制するのが最善です。それが難しい場合は、AWS Configのカスタムルールで表記揺れを検出し、定期的に修正する運用でカバーします。

本記事のまとめ
AWSのコスト配分タグは、クラウドのコスト管理を「全体の合計額」から「部門・プロジェクト・環境ごとの内訳」に進化させるための基盤です。
| やること | 使うサービス・機能 | 導入難易度 |
|---|---|---|
| タグ戦略の設計(必須タグ・命名規則) | なし(組織の合意形成) | 低 |
| コスト配分タグの有効化 | Billing and Cost Management | 低 |
| 部門別コストの可視化 | AWS Cost Explorer | 低 |
| タグ値の制限 | Organizations タグポリシー | 中 |
| タグなし作成の禁止 | SCP | 中〜高 |
| タグ漏れの検出・通知 | AWS Config + SNS | 中 |
| IaCへのタグ組み込み | CloudFormation / Terraform | 低 |
まだタグ戦略を持っていない環境なら、まずは「Department」「Project」「Environment」の3つの必須タグを決めて、コスト配分タグとして有効化するところから始めてください。IaCテンプレートへの組み込みとAWS Configルールの設定まで進めれば、タグ付け漏れを自動で検出できる体制が整います。コスト最適化の施策はすべて「現状把握」から始まります。まずはタグで見える化する——それがクラウドコスト管理の第一歩です。
クラウド環境のセキュリティ設計(IAM・VPCの基礎)については、姉妹サイトセキュリティマスターズ.TOKYOでも詳しく解説しています。
AWSの請求書、内訳を把握できていますか?
タグ戦略やコスト可視化の実践ノウハウを、毎週お届けしています。
オンプレの経験を活かしながら、現場で使えるクラウドスキルを体系的に身につけたい方へ、メルマガで実践的なクラウド活用ノウハウをお届けしています。


コメント