{"slug": "aws-skill-pack", "title": "AWS Skill Pack", "summary": "AWS Skill Pack, a course on production agent skills engineering, introduces two new skills: aws-cost-review, which flags likely-wasteful AWS resources such as unattached EBS volumes, idle EC2 instances, and unused Elastic IPs, and aws-iam-least-privilege-check, which reviews IAM policies for overly broad permissions. The pack demonstrates the use of the allowed-tools frontmatter field to constrain AWS-facing skills to read-only calls, reducing security risks.", "body_md": "· Agentic AI · 5 min read\n\n### 📋 Prerequisites\n\n- Terraform Skill Pack (previous lesson)\n\n### 🎯 What You'll Learn\n\n- Build a Reviewer skill that flags likely-wasteful AWS resources from CLI output\n- Build a Validator skill that checks IAM policies for overly broad permissions\n- Apply the allowed-tools frontmatter field to constrain an AWS-facing skill\n\n## What This Pack Covers\n\nTwo skills: one that reviews AWS resources for likely cost waste, and one that checks IAM policies for permissions broader than they need to be. AWS is the domain in this course where [Security and Governance](/courses/production-agent-skills-engineering/skill-security-governance)’s `allowed-tools`\n\nfield earns its place most clearly — a skill with unrestricted AWS CLI access is a meaningfully bigger risk than one explicitly scoped to read-only calls.\n\n## Skill 1: `aws-cost-review`\n\n```\n---\nname: aws-cost-review\ndescription: Reviews AWS resources for likely cost waste — unattached EBS volumes, idle EC2 instances, and unused Elastic IPs. Use when the user asks to review AWS costs, find unused resources, or audit spend.\nmetadata:\n  version: \"1.0.0\"\nallowed-tools: Bash(aws ec2 describe*) Bash(aws cloudwatch get-metric-statistics*)\n---\n\n## Available commands (read-only)\n\n- `aws ec2 describe-volumes --filters Name=status,Values=available` —\n  volumes not attached to any instance (billed, unused)\n- `aws ec2 describe-instances` — cross-reference against CloudWatch CPU\n  metrics to identify instances that are running but consistently idle\n- `aws ec2 describe-addresses` — Elastic IPs not associated with a\n  running instance (AWS bills for these when unattached)\n\n## Review checklist\n\n1. **Unattached EBS volumes.** List every volume with no attachment,\n   its size, and an estimated monthly cost based on its type and size.\n2. **Idle instances.** For running instances, check average CPU\n   utilization over the past 14 days via CloudWatch. Flag anything\n   consistently under 5% as a likely candidate for downsizing or\n   termination — but note this needs a human to confirm the workload\n   isn't intentionally bursty or a standby/failover instance.\n3. **Unattached Elastic IPs.** List every Elastic IP not currently\n   associated with a running instance.\n\nReport total estimated monthly waste across all findings, not just a\nlist — the aggregate number is usually what actually prompts action.\n\n## Constraints\n\nThis skill only reads resource and metric data. It never terminates,\nstops, or releases anything — report findings and let the user decide\nand act.\n```\n\n**Pattern:** Reviewer — assessing existing resources against cost-efficiency criteria and reporting findings, per [Skill Design Patterns](/courses/production-agent-skills-engineering/skill-design-patterns). The `allowed-tools`\n\nfield pre-approves only the specific read-only AWS calls this skill needs, so a future edit can’t quietly add a `terminate-instances`\n\ncall without that change being visible in the frontmatter diff — exactly the governance mechanism described in [Security and Governance](/courses/production-agent-skills-engineering/skill-security-governance).\n\n## Skill 2: `aws-iam-least-privilege-check`\n\n```\n---\nname: aws-iam-least-privilege-check\ndescription: Reviews an IAM policy document for overly broad permissions — wildcard actions, wildcard resources, and missing conditions on sensitive actions. Use when reviewing a new IAM policy, or when the user asks if a policy follows least privilege.\nmetadata:\n  version: \"1.0.0\"\n---\n\n## Review checklist\n\n1. **Wildcard actions.** Flag any `\"Action\": \"*\"` or a service-level\n   wildcard like `\"s3:*\"` — these grant far more than almost any real\n   use case needs. Suggest the specific actions the described use case\n   actually requires instead.\n2. **Wildcard resources.** Flag any `\"Resource\": \"*\"` paired with a\n   write or delete action — read-only wildcards are lower risk than\n   destructive-action wildcards, and the review should reflect that\n   difference in severity.\n3. **Missing conditions on sensitive actions.** Actions like\n   `iam:PassRole` or `sts:AssumeRole` without a `Condition` block are\n   a common privilege-escalation vector — flag these specifically, not\n   just generically as \"broad permissions.\"\n4. **Full admin policies.** Flag any policy attaching\n   `AdministratorAccess` or an equivalent full-access managed policy to\n   anything other than a small, explicitly justified set of break-glass\n   roles.\n\nReport every finding with the specific line from the policy document, not\njust a general summary — a policy review that says \"this policy is too\nbroad\" without pointing at exactly which statement is unhelpful.\n```\n\n**Pattern:** Validator, checking a structured policy document against a fixed rule set — but notice this is the first Validator in this course working over structured JSON/policy syntax rather than prose or code, which is worth testing deliberately (below), since a skill correctly parsing plain-language content doesn’t guarantee it correctly parses a nested JSON policy document.\n\n## Testing Both Skills\n\nFor `aws-cost-review`\n\n, the aggregate cost estimate is the part most worth checking carefully — test against a scenario with several findings and confirm the total is actually computed correctly, not just each finding reported in isolation. For `aws-iam-least-privilege-check`\n\n, test against a policy with an obvious `\"Action\": \"*\"`\n\n, one with a subtler wildcard resource paired with a write action, and one that’s already reasonably scoped — confirm the well-scoped policy gets a clean pass rather than the skill finding something to flag regardless, a failure mode worth checking for any Validator skill, not just this one.\n\n## Summary\n\n`aws-cost-review`\n\nis a Reviewer flagging unattached volumes, idle instances, and unused Elastic IPs, scoped via`allowed-tools`\n\nto read-only calls`aws-iam-least-privilege-check`\n\nis a Validator catching wildcard actions/resources, missing conditions on sensitive actions, and inappropriate admin-access grants`allowed-tools`\n\nmatters more here than in earlier packs, since AWS CLI access spans everything from harmless reads to genuinely destructive account-level changes- Test that a well-scoped, clean input actually passes cleanly — not just that bad input gets caught\n\nNext, a different kind of pack — scaffolding and debugging LangGraph state machines, for teams building agents rather than just using them.", "url": "https://wpnews.pro/news/aws-skill-pack", "canonical_source": "https://superml.org/tutorials/aws-skill-pack", "published_at": "2026-07-26 00:00:00+00:00", "updated_at": "2026-08-01 04:59:19.592610+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "ai-policy", "ai-safety"], "entities": ["AWS Skill Pack", "AWS", "Terraform Skill Pack"], "alternates": {"html": "https://wpnews.pro/news/aws-skill-pack", "markdown": "https://wpnews.pro/news/aws-skill-pack.md", "text": "https://wpnews.pro/news/aws-skill-pack.txt", "jsonld": "https://wpnews.pro/news/aws-skill-pack.jsonld"}}