AWSコスト配分タグ入門|タグ戦略の設計から部門別コスト可視化まで実践ガイド

Cost Optimization

「AWSの請求書が毎月届くけれど、どのプロジェクトでいくらかかっているのか内訳がわからない」——こんな状況に心当たりはないでしょうか。

オンプレミス環境では、物理サーバーやネットワーク機器を部門やプロジェクトごとに割り当てていたため、コストの帰属先はある程度明確でした。ところがクラウドに移行すると、複数のチームが同じAWSアカウント上でリソースを作成し、請求書はアカウント単位の合計額だけが表示されます。「このEC2は誰のプロジェクトか」「このS3バケットはどの部門が使っているのか」が、請求書からは読み取れないのです。

この記事では、AWSのコスト配分タグ(Cost Allocation Tags)の仕組みと、現場で使えるタグ戦略の設計方法を実践的に解説します。タグの付け方から、Cost Explorerでの部門別コスト可視化、タグ付け漏れの防止策まで、読み終える頃には自社のAWS環境にすぐ適用できる知識が身についているはずです。

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時間かかります。また、有効化前に発生したコストには遡及適用されません。タグ戦略の設計は、できるだけ早い段階で着手してください。

AWSコスト配分タグ入門|タグ戦略の設計から部門別コスト可視化まで実践ガイド - 解説

現場で使えるタグ戦略の設計パターン

タグのキー名は自由に決められますが、組織全体で統一しないとすぐに破綻します。「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コスト配分タグ入門|タグ戦略の設計から部門別コスト可視化まで実践ガイド - まとめ

本記事のまとめ

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の請求書、内訳を把握できていますか?

タグ戦略やコスト可視化の実践ノウハウを、毎週お届けしています。
オンプレの経験を活かしながら、現場で使えるクラウドスキルを体系的に身につけたい方へ、メルマガで実践的なクラウド活用ノウハウをお届けしています。

コメント

タイトルとURLをコピーしました