AWS Price CSV Skill
name: aws-price-csv
by crazylion · published 2026-03-22
$ claw add gh:crazylion/crazylion-aws-price-csv---
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
1. Prepare a YAML/JSON file with `name`, `service_code`, `filters`, `term`, and `usage` fields (see sample in `references/api_reference.md`).
2. Pick the data source:
- **API mode** – requires `aws pricing get-products` permission and an internet connection.
- **Bulk mode** – no IAM access required; the script downloads/caches public bulk JSON files.
3. Run the script with the region and desired options:
```bash
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
```
4. Inspect the CSV (each line item + TOTAL) and deliver alongside the original request if needed.
Workflow
1. Prepare the input list
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
- `--input`: YAML/JSON list
- `--region`: AWS region code (location name is auto-added to filters)
- `--output`: CSV path (default `aws_pricing.csv`)
- `--source`: `api` (default) or `bulk`
- `--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.json` overrides the cache
4. Validate & deliver
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
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...