🧪 Skills
aws-price-csv
Generate AWS cost CSVs from a user-provided service list. Use when someone supplies an item list + AWS region and needs per-item pricing plus totals via AWS...
v1.0.0
Description
name: aws-price-csv description: Generate AWS cost CSVs from a user-provided service list. Use when someone supplies an item list + AWS region and needs per-item pricing plus totals via AWS Price List API or bulk pricing JSON.
AWS Price CSV Skill
Overview
Transforms a user-provided AWS service list (instances, volumes, S3 buckets, etc.) into a pricing CSV. The script can query the AWS Price List API (via aws-cli) or reuse cached bulk JSON files. It supports On-Demand and Reserved terms and automatically adds up per-item and total costs.
Quick Start
- Prepare a YAML/JSON file with
name,service_code,filters,term, andusagefields (see sample inreferences/api_reference.md). - Pick the data source:
- API mode – requires
aws pricing get-productspermission and an internet connection. - Bulk mode – no IAM access required; the script downloads/caches public bulk JSON files.
- API mode – requires
- Run the script with the region and desired options:
python3 scripts/generate_pricing_csv.py \ --input inputs/sample.yml \ --region ap-northeast-1 \ --source bulk \ --cache-dir ~/.cache/aws-price-csv \ --output quotes/apac_quote.csv - Inspect the CSV (each line item + TOTAL) and deliver alongside the original request if needed.
Workflow
1. Prepare the input list
- Use the YAML/JSON templates in
references/api_reference.md. filtersmust map to AWS pricing attributes (instanceType,regionCode,volumeApiName,usagetype,termType, etc.).term.type:OnDemandorReserved(RI).term.attributes(optional) filter Reserved prices (LeaseContractLength,PurchaseOption,OfferingClass, ...).usage.quantityrepresents the amount to multiply (hours, GB-Mo, requests, ...).
2. Choose the data source
| Mode | When to use | Notes |
|---|---|---|
API (--source api) |
You already have IAM creds and want real-time data | Uses aws pricing get-products in us-east-1 |
Bulk (--source bulk) |
Offline, no IAM, or you want caching | The script checks --cache-dir (default ~/.cache/aws-price-csv); cached files newer than 30 days are reused, otherwise they are re-downloaded |
You can still override with
--bulk-files ServiceCode=/path/to/file.json; those files win over the cache.
3. Generate the CSV
- Script path:
scripts/generate_pricing_csv.py - Key arguments:
--input: YAML/JSON list--region: AWS region code (location name is auto-added to filters)--output: CSV path (defaultaws_pricing.csv)--source:api(default) orbulk--cache-dir: bulk cache directory (default~/.cache/aws-price-csv)--force-refresh: ignore cached bulk files and re-download--bulk-files:ServiceCode=/path/to/file.jsonoverrides the cache
- Output columns:
item_name, service_code, term_type, region, location, quantity, usage_unit, price_unit, price_per_unit_usd, cost_usd, description, plus aTOTALrow.
4. Validate & deliver
- Review the CSV to ensure every line item has pricing and a description.
- Confirm the
TOTALmatches expectations. - Include the source list or any supporting docs if required.
Troubleshooting
| Issue | Fix |
|---|---|
aws pricing returns empty results |
Double-check filters (location, regionCode, termType, etc.) or fall back to bulk mode |
aws CLI missing |
Install aws-cli v2, configure credentials, or rely on bulk mode |
| Need to refresh cached data | Use --force-refresh or delete the cached JSON so it gets re-downloaded |
| PyYAML missing | pip install pyyaml or convert input to JSON |
| Reserved price not found | Add LeaseContractLength, PurchaseOption, OfferingClass inside term.attributes |
Resources
scripts/generate_pricing_csv.py– main script with API/bulk support, caching logic, and On-Demand/Reserved handling.references/api_reference.md– Price List API examples, bulk download pointers, region/location table, and sample input templates (including gp3 and RI cases).
Reviews (0)
Sign in to write a review.
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!