Inventory Persona GuidesΒΆ
π― Purpose
Step-by-step runbooks for the four primary personas who use the Inventory module. Each guide includes a focus summary, command table, copy-paste workflow, and an acceptance checklist.
Profile references: Replace profile variable names with your configured AWS SSO profiles.
| Variable | Purpose |
|---|---|
$AWS_OPERATIONS_PROFILE |
Centralized operations / Resource Explorer aggregator index |
$AWS_MANAGEMENT_PROFILE |
AWS Organizations management account (org-wide queries) |
$AWS_BILLING_PROFILE |
Cost Explorer billing profile (financial data, us-east-1 endpoint) |
CFO β Cost GovernanceΒΆ
The CFO persona focuses on financial exposure from idle infrastructure. The primary deliverables are a decommission savings estimate, a budget impact summary, and a tier distribution showing how spend is distributed across MUST/SHOULD/COULD/KEEP categories.
All commands use the billing profile. No infrastructure-level detail is needed β cost and tier signal only.
Command TableΒΆ
| Task | Command |
|---|---|
| Multi-account discovery with cost enrichment | runbooks inventory workflow-multi-account --persona executive --ops-profile $AWS_OPERATIONS_PROFILE |
| Financial validation (Cost Explorer) | runbooks finops analyze-ec2 --profile $AWS_BILLING_PROFILE --export csv |
| Decommission scoring (MUST/SHOULD tiers) | runbooks inventory score-decommission --input data/outputs/ec2-activity.csv --resource-type ec2 |
| Executive dashboard summary | runbooks finops dashboard --mode executive --profile $AWS_BILLING_PROFILE --timeframe monthly --export pdf |
Step-by-Step RunbookΒΆ
Step 1 β Run multi-account discovery (executive persona)
runbooks inventory workflow-multi-account \
--persona executive \
--ops-profile $AWS_OPERATIONS_PROFILE \
--export csv
This runs the full 5-layer pipeline scoped to the executive view: instance counts, cost enrichment, and top-level decommission signal. Typical runtime: 10β15 minutes for a multi-account Landing Zone.
Step 2 β Validate financial data via Cost Explorer
Cost Explorer must be queried via the billing profile. Output: data/outputs/ec2-costs.csv with 12-month cost per instance.
Step 3 β Score decommission candidates
Output: data/outputs/ec2-scored.csv with scores 0β100 and MUST/SHOULD/COULD/KEEP tier per instance. MUST tier (90β100) = high-confidence idle; recommended for immediate decommission.
Step 4 β Generate executive dashboard for board pack
runbooks finops dashboard \
--mode executive \
--profile $AWS_BILLING_PROFILE \
--timeframe monthly \
--cost-metric amortized \
--top-n 10 \
--validation-level mcp \
--export pdf \
--export markdown \
--output-file executive-monthly.html
Step 5 β Review tier distribution
# Count instances by tier
awk -F',' 'NR>1 {print $NF}' data/outputs/ec2-scored.csv | sort | uniq -c | sort -rn
Expected output: tier counts for MUST / SHOULD / COULD / KEEP. Monthly savings potential = sum of monthly_cost for MUST + SHOULD tier rows.
Acceptance ChecklistΒΆ
-
data/outputs/ec2-costs.csvpresent with at least one row -
data/outputs/ec2-scored.csvpresent with MUST/SHOULD/COULD/KEEP column populated - MCP validation score β₯99.5% (check
mcp-validation-report.json) - PDF export generated for board pack
- Monthly savings figure derived from scored CSV (no fabricated numbers)
- No AWS account IDs or Organization IDs in exported documents
CTO β Architecture & Technical DebtΒΆ
The CTO persona focuses on the health of the infrastructure estate: resource distribution across regions and accounts, prevalence of legacy instance types, and technical debt signals from CloudFormation drift and untagged resources.
The goal is a clear picture of where the fleet stands architecturally, not an individual instance list.
Command TableΒΆ
| Task | Command |
|---|---|
| Org-wide resource distribution | runbooks inventory workflow-multi-account --persona architect --ops-profile $AWS_OPERATIONS_PROFILE |
| Organization hierarchy | runbooks inventory draw-org --profile $AWS_MANAGEMENT_PROFILE |
| Landing Zone health check | runbooks inventory check-landingzone --profile $AWS_MANAGEMENT_PROFILE |
| CloudFormation drift detection | runbooks inventory cfn drift --profile $AWS_OPERATIONS_PROFILE |
| Tag coverage audit | runbooks inventory tag-coverage --profile $AWS_MANAGEMENT_PROFILE |
Step-by-Step RunbookΒΆ
Step 1 β Org-wide discovery (architect persona)
runbooks inventory workflow-multi-account \
--persona architect \
--ops-profile $AWS_OPERATIONS_PROFILE \
--export csv
The architect persona includes instance type distribution and region heatmap in the output report.
Step 2 β Draw organization hierarchy
Produces a Mermaid or ASCII tree of the AWS Organizations hierarchy. Useful for confirming OU structure and identifying orphan accounts.
Step 3 β Landing Zone health
Checks Control Tower / Landing Zone status across all member accounts. Flags accounts not enrolled in centralized logging or security tooling.
Step 4 β CloudFormation drift detection
runbooks inventory cfn drift \
--profile $AWS_OPERATIONS_PROFILE \
--regions ap-southeast-2 us-east-1
Identifies stacks with configuration drift β resources modified outside of IaC. Each drift finding is a technical debt item for the platform backlog.
Step 5 β Tag coverage audit
runbooks inventory tag-coverage \
--profile $AWS_MANAGEMENT_PROFILE \
--required-tags Environment,Owner,CostCenter
Resources missing required tags are not attributable to a business unit, which inflates unallocated cost. This is a direct input to FinOps chargeback accuracy.
Acceptance ChecklistΒΆ
- Resource distribution report generated (instance types, regions, account breakdown)
- Organization hierarchy drawn (no orphan accounts without OU assignment)
- Landing Zone health check: all member accounts enrolled in centralized logging
- CFN drift findings < previous quarter (or new drifts explained)
- Tag coverage β₯80% for required tags (Environment, Owner, CostCenter)
- Legacy instance types (t2., m4., c4.*) identified and flagged for upgrade roadmap
CloudOps Lead β Full Inventory OperationsΒΆ
The CloudOps Lead persona runs the complete 5-layer inventory pipeline. Responsibilities include: validating discovery completeness, investigating stopped instances, running decommission scoring, and producing the evidence package for the HITL decommission decision.
This is the most detailed persona β all 5 layers, all resource types, full activity enrichment.
Command TableΒΆ
| Task | Command |
|---|---|
| Full 5-layer pipeline | runbooks inventory workflow-multi-account --ops-profile $AWS_OPERATIONS_PROFILE |
| Account breakdown | runbooks inventory list-org-accounts --profile $AWS_MANAGEMENT_PROFILE |
| Stopped instance list | runbooks inventory discover-ec2 --ops-profile $AWS_OPERATIONS_PROFILE --state stopped |
| Activity enrichment | runbooks inventory enrich-activity --ops-profile $AWS_OPERATIONS_PROFILE |
| Decommission scoring | runbooks inventory score-decommission --input data/outputs/ec2-activity.csv --resource-type ec2 |
| MCP cross-validation | runbooks inventory validate-mcp --ops-profile $AWS_OPERATIONS_PROFILE --mgmt-profile $AWS_MANAGEMENT_PROFILE --billing-profile $AWS_BILLING_PROFILE --validation-level mcp |
Step-by-Step RunbookΒΆ
Step 1 β Run full multi-account pipeline
runbooks inventory workflow-multi-account \
--ops-profile $AWS_OPERATIONS_PROFILE \
--mgmt-profile $AWS_MANAGEMENT_PROFILE \
--billing-profile $AWS_BILLING_PROFILE \
--export csv
This runs all 5 layers sequentially: Discovery β Organizations β Cost Enrichment β Activity β Scoring. Typical runtime: 10β15 minutes.
Step 2 β Account-by-account breakdown
Used to verify that all expected accounts are included in discovery. Compare account count against org hierarchy.
Step 3 β Stopped instance investigation
Stopped instances accrue EBS storage cost even with no compute cost. Identify them:
runbooks inventory discover-ec2 \
--ops-profile $AWS_OPERATIONS_PROFILE \
--state stopped \
--export csv
Cross-reference with cost data: stopped instances with >$50/month EBS cost are high-priority candidates.
Step 4 β Activity enrichment (E1βE7 signals)
Enriches the EC2 inventory with seven activity signals:
| Signal | Source | Idle Indicator |
|---|---|---|
| E1 | CloudWatch CPU | <2% for 14 days |
| E2 | CloudWatch Network | <1MB/day for 14 days |
| E3 | CloudTrail API | No management events for 14 days |
| E4 | SSM Last Ping | No agent contact for 14 days |
| E5 | Compute Optimizer | OVER_PROVISIONED recommendation |
| E6 | EBS Read/Write | <1 IOPS/day for 14 days |
| E7 | Cost trend | Flat or decreasing 12-month trend |
Step 5 β Decommission scoring
Produces MUST (90β100) / SHOULD (70β89) / COULD (50β69) / KEEP (<50) tiers.
Step 6 β MCP cross-validation
runbooks inventory validate-mcp \
--ops-profile $AWS_OPERATIONS_PROFILE \
--mgmt-profile $AWS_MANAGEMENT_PROFILE \
--billing-profile $AWS_BILLING_PROFILE \
--validation-level mcp
This is the gate before handing the evidence package to the HITL manager. Target: β₯99.5% accuracy.
Acceptance ChecklistΒΆ
- All 5 pipeline layers completed without error
- Account count in discovery matches
list-org-accountsoutput - Stopped instances identified and EBS cost calculated
- Activity enrichment: E1βE7 signals populated for all instances
- Decommission scored CSV in
data/outputs/ec2-scored.csv - MCP validation score β₯99.5% (check
data/outputs/mcp-validation-report.json) - Evidence package ready for HITL review (CSV + JSON + persona report)
FinOps Lead β Optimization & Savings OpportunitiesΒΆ
The FinOps Lead persona focuses on actionable savings opportunities: EC2-Other charges (data transfer, EBS snapshots), S3 storage tier distribution, and the decommission savings pipeline. The goal is a prioritized savings backlog with dollar values traceable to source data.
Command TableΒΆ
| Task | Command |
|---|---|
| Multi-account workflow (FinOps persona) | runbooks inventory workflow-multi-account --persona finops --ops-profile $AWS_OPERATIONS_PROFILE |
| EC2-Other cost analysis | runbooks finops analyze-ec2 --profile $AWS_BILLING_PROFILE --export csv |
| FinOps dashboard | runbooks finops dashboard --mode executive --profile $AWS_BILLING_PROFILE --timeframe monthly --export html |
| Decommission scoring | runbooks inventory score-decommission --input data/outputs/ec2-activity.csv --resource-type ec2 |
| S3 tier discovery | runbooks inventory discover-s3 --ops-profile $AWS_OPERATIONS_PROFILE --export csv |
Step-by-Step RunbookΒΆ
Step 1 β Run multi-account workflow (FinOps persona)
runbooks inventory workflow-multi-account \
--persona finops \
--ops-profile $AWS_OPERATIONS_PROFILE \
--mgmt-profile $AWS_MANAGEMENT_PROFILE \
--export csv
The FinOps persona view includes cost enrichment, idle cost signal, and tier distribution β optimized for savings identification rather than full infrastructure detail.
Step 2 β EC2-Other cost breakdown
EC2-Other (data transfer, EBS snapshots, EBS volumes detached from stopped instances) is frequently the largest unmanaged cost category.
Review the output for:
- Data transfer costs (inter-region and to-internet)
- EBS snapshot accumulation (snapshots from terminated instances not cleaned up)
- EBS volumes attached to stopped instances
Step 3 β FinOps dashboard for monthly review
runbooks finops dashboard \
--mode executive \
--profile $AWS_BILLING_PROFILE \
--timeframe monthly \
--cost-metric amortized \
--top-n 20 \
--sort-by change \
--validation-level mcp \
--export html \
--output-file finops-monthly.html
Use --sort-by change to surface services with the highest month-over-month cost growth β these are the anomalies to investigate first.
Step 4 β S3 storage tier analysis
Review the output for buckets in Standard tier with infrequent-access usage patterns. Lifecycle policy candidates: objects last accessed >30 days β Standard-IA; >90 days β Glacier Instant Retrieval.
Step 5 β Decommission scoring for savings quantification
To calculate monthly savings potential from the scored output:
# Sum monthly_cost for MUST tier instances
awk -F',' 'NR>1 && $NF=="MUST" {sum += $(NF-1)} END {print "MUST tier savings: $" sum "/month"}' \
data/outputs/ec2-scored.csv
Step 6 β Compile savings backlog
Savings opportunities in priority order:
- MUST tier decommissions (highest confidence, highest value)
- Stopped instances with EBS cost (zero-risk decommission candidates)
- S3 lifecycle policy gaps (Standard β Standard-IA β Glacier)
- EC2-Other: data transfer optimization (review inter-region traffic)
- SHOULD tier decommissions (require scream test before action)
Each item should have: resource identifier (without account ID in shared docs), monthly cost, tier, and recommended action.
Acceptance ChecklistΒΆ
- Monthly cost report generated with
--validation-level mcp - EC2-Other cost breakdown reviewed β data transfer and snapshot costs identified
- S3 tier distribution captured β lifecycle candidates flagged
- Decommission scored CSV in
data/outputs/ec2-scored.csv - Savings backlog contains dollar values traceable to source CSV (no fabricated numbers)
- MUST tier savings quantified from scored CSV
- No fixed dollar estimates or account-specific identifiers in shared documents
Related pages: Quickstart | 4-Way Cross-Validation | Index