[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-aws-labs-ec2":3,"mdc-ctjznm-key":34,"related-repo-aws-labs-ec2":1721,"related-org-aws-labs-ec2":1821},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"ec2","configure and optimize Amazon EC2 workloads","Design, configure, and optimize Amazon EC2 workloads. Use when selecting instance types, configuring auto-scaling groups, working with launch templates, managing Spot instances, choosing storage (EBS vs instance store), or troubleshooting EC2 issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"aws-labs","AWS Labs","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Faws-labs.png","awslabs",[13,17,20],{"name":14,"slug":15,"type":16},"Performance","performance","tag",{"name":18,"slug":19,"type":16},"Infrastructure","infrastructure",{"name":21,"slug":22,"type":16},"AWS","aws",14,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fstartups","2026-07-12T08:41:08.20409",null,15,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"Official AWS Startups repository that hosts plugins, skills, tools and resources to support startup builders on AWS","https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fstartups\u002Ftree\u002FHEAD\u002Fsolution-architecture\u002Fplugins\u002Faws-dev-toolkit\u002Fskills\u002Fec2","---\nname: ec2\ndescription: Design, configure, and optimize Amazon EC2 workloads. Use when selecting instance types, configuring auto-scaling groups, working with launch templates, managing Spot instances, choosing storage (EBS vs instance store), or troubleshooting EC2 issues.\n---\n\nYou are an AWS EC2 specialist. When advising on EC2 workloads:\n\n## Process\n\n1. Clarify the workload: compute-bound, memory-bound, storage-bound, GPU, or general-purpose\n2. Recommend instance type family and size based on requirements\n3. Design launch template, ASG, and scaling configuration\n4. Configure storage, networking, and cost optimization\n5. Use the `awsknowledge` MCP tools (`mcp__plugin_aws-dev-toolkit_awsknowledge__aws___search_documentation`, `mcp__plugin_aws-dev-toolkit_awsknowledge__aws___read_documentation`, `mcp__plugin_aws-dev-toolkit_awsknowledge__aws___recommend`) to verify current instance types, pricing, or feature availability\n\n## Instance Type Selection\n\nFollow this decision tree:\n\n- **General purpose (M family)**: Default choice. M7i, M7g (Graviton, 20-30% better price-performance), M7a (AMD).\n- **Compute optimized (C family)**: CPU-bound workloads -- batch processing, media encoding, HPC, ML inference. C7g for best price-performance.\n- **Memory optimized (R\u002FX family)**: In-memory databases, large caches, real-time analytics. R7g for most cases, X2idn for extreme memory (up to 4 TB).\n- **Storage optimized (I\u002FD family)**: High sequential I\u002FO, data warehousing, distributed file systems. I4i for NVMe, D3 for dense HDD.\n- **Accelerated (P\u002FG\u002FInf\u002FTrn family)**: P5 for ML training, G5 for graphics\u002Finference, Inf2 for cost-efficient inference, Trn1 for training on Trainium.\n\n**Always prefer Graviton (arm64)** unless the workload requires x86. Graviton instances (suffix `g`) deliver 20-30% better price-performance.\n\n**Right-sizing**: Start with CloudWatch metrics or Compute Optimizer recommendations. Target 40-70% average CPU utilization. If consistently below 40%, downsize.\n\n## Launch Templates\n\n- **Always use launch templates**, never launch configurations (deprecated).\n- Pin the AMI ID in the template. Use SSM Parameter Store to resolve the latest AMI at deploy time:\n\n  ```\n  \u002Faws\u002Fservice\u002Fami-amazon-linux-latest\u002Fal2023-ami-kernel-default-arm64\n  ```\n\n- Set `InstanceInitiatedShutdownBehavior: terminate` for ephemeral workloads.\n- Use `MetadataOptions` to enforce IMDSv2: `HttpTokens: required`, `HttpPutResponseHopLimit: 1`.\n- Configure `TagSpecifications` to tag instances, volumes, and ENIs at launch for cost allocation.\n- Use launch template **versions** and set the ASG to `$Latest` or `$Default` to control rollouts.\n\n## Auto Scaling Groups\n\n- **Target tracking** is the right default: scale on `ASGAverageCPUUtilization` at 60-70%.\n- For request-driven workloads, use `ALBRequestCountPerTarget`.\n- **Predictive scaling**: Enable for workloads with predictable daily\u002Fweekly patterns. It pre-provisions capacity 5-10 minutes ahead.\n- Use **mixed instances policy** with multiple instance types (same family, different sizes) to improve Spot availability and reduce costs.\n- Set `HealthCheckType: ELB` when behind a load balancer (default is EC2, which only catches instance failures).\n- Configure `DefaultInstanceWarmup` (e.g., 300s) to prevent premature scale-in while instances are still warming up.\n- Use **instance refresh** for AMI updates: `MinHealthyPercentage: 90`, `InstanceWarmup: 300`.\n\n## Spot Instances\n\nUse Spot for fault-tolerant, stateless, or flexible-schedule workloads. Up to 90% savings.\n\n- **Spot Fleet \u002F Mixed Instances Policy**: Diversify across at least 6-10 instance types and all AZs. The broader the pool, the lower the interruption rate.\n- **Allocation strategy**: `capacity-optimized` (default, best for reducing interruptions) or `price-capacity-optimized` (balances price and capacity). Avoid `lowest-price` — it concentrates instances on the cheapest instance type in a single pool, which means higher interruption rates (AWS reclaims the cheapest capacity first) and lower fleet diversity. The few cents saved per hour are wiped out by the disruption cost of frequent interruptions.\n- **Spot interruption handling**: Use EC2 metadata service or EventBridge to catch the 2-minute warning. Drain connections and save state.\n- **Spot placement score**: Use `aws ec2 get-spot-placement-scores` to find regions\u002FAZs with best capacity before launching.\n- **Spot with ASG**: Use mixed instances policy with `OnDemandBaseCapacity: 1` or `2` and `SpotAllocationStrategy: capacity-optimized` for a baseline of on-demand with Spot overflow.\n- Never use Spot for: databases, single-instance workloads, or anything that cannot tolerate interruption.\n\n## Placement Groups\n\n- **Cluster**: Low-latency, high-throughput between instances (HPC, tightly coupled). Same AZ, same rack.\n- **Spread**: Maximum resilience. Each instance on distinct hardware. Max 7 per AZ. Use for small critical workloads.\n- **Partition**: Large distributed workloads (HDFS, Cassandra, Kafka). Instances in same partition share hardware, different partitions don't.\n\n## Storage: EBS vs Instance Store\n\n**Default to EBS** unless you need maximum IOPS.\n\n### EBS\n\n- **gp3**: Default. 3,000 IOPS \u002F 125 MiB\u002Fs baseline, independently scalable. Always use gp3 over gp2 (cheaper and more flexible).\n- **io2 Block Express**: Databases requiring > 16,000 IOPS or sub-ms latency. Up to 256,000 IOPS and 4,000 MiB\u002Fs.\n- **st1**: Throughput-optimized HDD for sequential reads (big data, log processing). Not for boot volumes.\n- **sc1**: Cold HDD. Cheapest. Infrequent access.\n- Enable **EBS encryption by default** at the account level. No performance penalty on modern instance types.\n- Snapshot lifecycle: Use Data Lifecycle Manager (DLM) to automate snapshots and retention.\n- Size EBS volumes for IOPS and throughput, not just capacity. gp3 can scale IOPS independently of size.\n\n### Instance Store\n\n- Ephemeral NVMe attached to the host. Data lost on stop\u002Fterminate\u002Fhardware failure.\n- Use for: caches, buffers, scratch data, temporary storage. I4i instances deliver up to 2.5M IOPS.\n- Never store data you cannot afford to lose.\n\n## Common CLI Commands\n\n```bash\n# Launch an instance\naws ec2 run-instances --launch-template LaunchTemplateId=lt-xxx,Version='$Latest' --count 1 --subnet-id subnet-xxx\n\n# Describe instances with filters\naws ec2 describe-instances --filters \"Name=tag:Environment,Values=prod\" --query \"Reservations[].Instances[].{ID:InstanceId,Type:InstanceType,State:State.Name}\"\n\n# Get latest AL2023 AMI\naws ssm get-parameters-by-path --path \u002Faws\u002Fservice\u002Fami-amazon-linux-latest --query \"Parameters[?contains(Name,'al2023')].{Name:Name,Value:Value}\"\n\n# Create a launch template\naws ec2 create-launch-template --launch-template-name my-template --launch-template-data file:\u002F\u002Flt-data.json\n\n# Update ASG to use new launch template version\naws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg --launch-template LaunchTemplateId=lt-xxx,Version='$Latest'\n\n# Start instance refresh (rolling AMI update)\naws autoscaling start-instance-refresh --auto-scaling-group-name my-asg --preferences '{\"MinHealthyPercentage\":90,\"InstanceWarmup\":300}'\n\n# Get Spot pricing history\naws ec2 describe-spot-price-history --instance-types m7g.large c7g.large --product-descriptions \"Linux\u002FUNIX\" --start-time $(date -u +%Y-%m-%dT%H:%M:%S)\n\n# Get Spot placement scores\naws ec2 get-spot-placement-scores --target-capacity 10 --instance-types-with-spot-max-price-override \"InstanceType=m7g.large\" --region-names us-east-1 us-west-2\n\n# Check Compute Optimizer recommendations\naws compute-optimizer get-ec2-instance-recommendations --instance-arns arn:aws:ec2:us-east-1:123456789012:instance\u002Fi-xxx\n\n# Connect via SSM (no SSH keys needed)\naws ssm start-session --target i-xxx\n```\n\n## Output Format\n\n| Field                       | Details                                                               |\n| --------------------------- | --------------------------------------------------------------------- |\n| **Instance type**           | Family, size, and architecture (e.g., m7g.large \u002F arm64)              |\n| **AMI**                     | AMI source (AL2023, custom), resolution method (SSM parameter)        |\n| **Storage (EBS type\u002Fsize)** | Volume type (gp3, io2), size, IOPS, throughput                        |\n| **ASG config**              | Min\u002Fmax\u002Fdesired, health check type, instance warmup                   |\n| **Spot strategy**           | On-demand base capacity, Spot allocation strategy, instance diversity |\n| **Key pair \u002F SSM**          | SSM Session Manager (preferred) or key pair for access                |\n| **Security group**          | Inbound\u002Foutbound rules, referenced SG IDs                             |\n| **Monitoring**              | CloudWatch agent config, detailed monitoring, custom metrics          |\n\n## Related Skills\n\n- `networking` — VPC, subnets, security groups, and NAT strategy for EC2 instances\n- `iam` — Instance profiles, least-privilege policies, and SSM permissions\n- `s3` — Storage integration, instance backups, and bootstrap scripts\n- `observability` — CloudWatch agent, alarms, dashboards, and Compute Optimizer\n- `cloudfront` — CDN in front of EC2-backed web applications\n\n## Anti-Patterns\n\n- **Using SSH keys**: Use SSM Session Manager instead. No need to manage key pairs, open port 22, or maintain bastion hosts. SSM provides audit logging and IAM-based access control.\n- **IMDSv1 still enabled**: Enforce IMDSv2 (`HttpTokens: required`) in launch templates. IMDSv1 is vulnerable to SSRF attacks that can steal instance credentials.\n- **Manually launching instances**: Everything should go through launch templates and ASGs, even \"temporary\" instances. Manual instances become untracked snowflakes.\n- **Single instance type in ASG**: Use mixed instances policy with 3+ instance types from the same family. This improves Spot availability and on-demand capacity during shortages.\n- **gp2 volumes**: gp2 ties IOPS to volume size. gp3 is cheaper, with independently configurable IOPS and throughput. Migrate all gp2 volumes to gp3.\n- **Oversized instances**: Running m5.4xlarge at 5% CPU because \"we might need it.\" Use Compute Optimizer, right-size, and scale horizontally instead.\n- **No EBS encryption**: Enable default encryption at the account level. There is no performance penalty on current generation instances and it satisfies most compliance requirements.\n- **Using public IPs when not needed**: Place instances in private subnets behind a load balancer or NAT Gateway. Use VPC endpoints for AWS service access.\n- **Ignoring Graviton**: Arm64 (Graviton) instances are 20-30% better price-performance for most workloads. Test compatibility and migrate -- most Linux workloads run without changes.\n",{"data":35,"body":36},{"name":4,"description":6},{"type":37,"children":38},"root",[39,47,54,116,122,127,182,200,210,216,328,334,437,443,448,561,567,600,606,616,623,688,694,712,718,1383,1389,1545,1551,1609,1615,1715],{"type":40,"tag":41,"props":42,"children":43},"element","p",{},[44],{"type":45,"value":46},"text","You are an AWS EC2 specialist. When advising on EC2 workloads:",{"type":40,"tag":48,"props":49,"children":51},"h2",{"id":50},"process",[52],{"type":45,"value":53},"Process",{"type":40,"tag":55,"props":56,"children":57},"ol",{},[58,64,69,74,79],{"type":40,"tag":59,"props":60,"children":61},"li",{},[62],{"type":45,"value":63},"Clarify the workload: compute-bound, memory-bound, storage-bound, GPU, or general-purpose",{"type":40,"tag":59,"props":65,"children":66},{},[67],{"type":45,"value":68},"Recommend instance type family and size based on requirements",{"type":40,"tag":59,"props":70,"children":71},{},[72],{"type":45,"value":73},"Design launch template, ASG, and scaling configuration",{"type":40,"tag":59,"props":75,"children":76},{},[77],{"type":45,"value":78},"Configure storage, networking, and cost optimization",{"type":40,"tag":59,"props":80,"children":81},{},[82,84,91,93,99,101,107,108,114],{"type":45,"value":83},"Use the ",{"type":40,"tag":85,"props":86,"children":88},"code",{"className":87},[],[89],{"type":45,"value":90},"awsknowledge",{"type":45,"value":92}," MCP tools (",{"type":40,"tag":85,"props":94,"children":96},{"className":95},[],[97],{"type":45,"value":98},"mcp__plugin_aws-dev-toolkit_awsknowledge__aws___search_documentation",{"type":45,"value":100},", ",{"type":40,"tag":85,"props":102,"children":104},{"className":103},[],[105],{"type":45,"value":106},"mcp__plugin_aws-dev-toolkit_awsknowledge__aws___read_documentation",{"type":45,"value":100},{"type":40,"tag":85,"props":109,"children":111},{"className":110},[],[112],{"type":45,"value":113},"mcp__plugin_aws-dev-toolkit_awsknowledge__aws___recommend",{"type":45,"value":115},") to verify current instance types, pricing, or feature availability",{"type":40,"tag":48,"props":117,"children":119},{"id":118},"instance-type-selection",[120],{"type":45,"value":121},"Instance Type Selection",{"type":40,"tag":41,"props":123,"children":124},{},[125],{"type":45,"value":126},"Follow this decision tree:",{"type":40,"tag":128,"props":129,"children":130},"ul",{},[131,142,152,162,172],{"type":40,"tag":59,"props":132,"children":133},{},[134,140],{"type":40,"tag":135,"props":136,"children":137},"strong",{},[138],{"type":45,"value":139},"General purpose (M family)",{"type":45,"value":141},": Default choice. M7i, M7g (Graviton, 20-30% better price-performance), M7a (AMD).",{"type":40,"tag":59,"props":143,"children":144},{},[145,150],{"type":40,"tag":135,"props":146,"children":147},{},[148],{"type":45,"value":149},"Compute optimized (C family)",{"type":45,"value":151},": CPU-bound workloads -- batch processing, media encoding, HPC, ML inference. C7g for best price-performance.",{"type":40,"tag":59,"props":153,"children":154},{},[155,160],{"type":40,"tag":135,"props":156,"children":157},{},[158],{"type":45,"value":159},"Memory optimized (R\u002FX family)",{"type":45,"value":161},": In-memory databases, large caches, real-time analytics. R7g for most cases, X2idn for extreme memory (up to 4 TB).",{"type":40,"tag":59,"props":163,"children":164},{},[165,170],{"type":40,"tag":135,"props":166,"children":167},{},[168],{"type":45,"value":169},"Storage optimized (I\u002FD family)",{"type":45,"value":171},": High sequential I\u002FO, data warehousing, distributed file systems. I4i for NVMe, D3 for dense HDD.",{"type":40,"tag":59,"props":173,"children":174},{},[175,180],{"type":40,"tag":135,"props":176,"children":177},{},[178],{"type":45,"value":179},"Accelerated (P\u002FG\u002FInf\u002FTrn family)",{"type":45,"value":181},": P5 for ML training, G5 for graphics\u002Finference, Inf2 for cost-efficient inference, Trn1 for training on Trainium.",{"type":40,"tag":41,"props":183,"children":184},{},[185,190,192,198],{"type":40,"tag":135,"props":186,"children":187},{},[188],{"type":45,"value":189},"Always prefer Graviton (arm64)",{"type":45,"value":191}," unless the workload requires x86. Graviton instances (suffix ",{"type":40,"tag":85,"props":193,"children":195},{"className":194},[],[196],{"type":45,"value":197},"g",{"type":45,"value":199},") deliver 20-30% better price-performance.",{"type":40,"tag":41,"props":201,"children":202},{},[203,208],{"type":40,"tag":135,"props":204,"children":205},{},[206],{"type":45,"value":207},"Right-sizing",{"type":45,"value":209},": Start with CloudWatch metrics or Compute Optimizer recommendations. Target 40-70% average CPU utilization. If consistently below 40%, downsize.",{"type":40,"tag":48,"props":211,"children":213},{"id":212},"launch-templates",[214],{"type":45,"value":215},"Launch Templates",{"type":40,"tag":128,"props":217,"children":218},{},[219,229,246,259,287,300],{"type":40,"tag":59,"props":220,"children":221},{},[222,227],{"type":40,"tag":135,"props":223,"children":224},{},[225],{"type":45,"value":226},"Always use launch templates",{"type":45,"value":228},", never launch configurations (deprecated).",{"type":40,"tag":59,"props":230,"children":231},{},[232,234],{"type":45,"value":233},"Pin the AMI ID in the template. Use SSM Parameter Store to resolve the latest AMI at deploy time:",{"type":40,"tag":235,"props":236,"children":240},"pre",{"className":237,"code":239,"language":45},[238],"language-text","\u002Faws\u002Fservice\u002Fami-amazon-linux-latest\u002Fal2023-ami-kernel-default-arm64\n",[241],{"type":40,"tag":85,"props":242,"children":244},{"__ignoreMap":243},"",[245],{"type":45,"value":239},{"type":40,"tag":59,"props":247,"children":248},{},[249,251,257],{"type":45,"value":250},"Set ",{"type":40,"tag":85,"props":252,"children":254},{"className":253},[],[255],{"type":45,"value":256},"InstanceInitiatedShutdownBehavior: terminate",{"type":45,"value":258}," for ephemeral workloads.",{"type":40,"tag":59,"props":260,"children":261},{},[262,264,270,272,278,279,285],{"type":45,"value":263},"Use ",{"type":40,"tag":85,"props":265,"children":267},{"className":266},[],[268],{"type":45,"value":269},"MetadataOptions",{"type":45,"value":271}," to enforce IMDSv2: ",{"type":40,"tag":85,"props":273,"children":275},{"className":274},[],[276],{"type":45,"value":277},"HttpTokens: required",{"type":45,"value":100},{"type":40,"tag":85,"props":280,"children":282},{"className":281},[],[283],{"type":45,"value":284},"HttpPutResponseHopLimit: 1",{"type":45,"value":286},".",{"type":40,"tag":59,"props":288,"children":289},{},[290,292,298],{"type":45,"value":291},"Configure ",{"type":40,"tag":85,"props":293,"children":295},{"className":294},[],[296],{"type":45,"value":297},"TagSpecifications",{"type":45,"value":299}," to tag instances, volumes, and ENIs at launch for cost allocation.",{"type":40,"tag":59,"props":301,"children":302},{},[303,305,310,312,318,320,326],{"type":45,"value":304},"Use launch template ",{"type":40,"tag":135,"props":306,"children":307},{},[308],{"type":45,"value":309},"versions",{"type":45,"value":311}," and set the ASG to ",{"type":40,"tag":85,"props":313,"children":315},{"className":314},[],[316],{"type":45,"value":317},"$Latest",{"type":45,"value":319}," or ",{"type":40,"tag":85,"props":321,"children":323},{"className":322},[],[324],{"type":45,"value":325},"$Default",{"type":45,"value":327}," to control rollouts.",{"type":40,"tag":48,"props":329,"children":331},{"id":330},"auto-scaling-groups",[332],{"type":45,"value":333},"Auto Scaling Groups",{"type":40,"tag":128,"props":335,"children":336},{},[337,355,367,377,388,400,412],{"type":40,"tag":59,"props":338,"children":339},{},[340,345,347,353],{"type":40,"tag":135,"props":341,"children":342},{},[343],{"type":45,"value":344},"Target tracking",{"type":45,"value":346}," is the right default: scale on ",{"type":40,"tag":85,"props":348,"children":350},{"className":349},[],[351],{"type":45,"value":352},"ASGAverageCPUUtilization",{"type":45,"value":354}," at 60-70%.",{"type":40,"tag":59,"props":356,"children":357},{},[358,360,366],{"type":45,"value":359},"For request-driven workloads, use ",{"type":40,"tag":85,"props":361,"children":363},{"className":362},[],[364],{"type":45,"value":365},"ALBRequestCountPerTarget",{"type":45,"value":286},{"type":40,"tag":59,"props":368,"children":369},{},[370,375],{"type":40,"tag":135,"props":371,"children":372},{},[373],{"type":45,"value":374},"Predictive scaling",{"type":45,"value":376},": Enable for workloads with predictable daily\u002Fweekly patterns. It pre-provisions capacity 5-10 minutes ahead.",{"type":40,"tag":59,"props":378,"children":379},{},[380,381,386],{"type":45,"value":263},{"type":40,"tag":135,"props":382,"children":383},{},[384],{"type":45,"value":385},"mixed instances policy",{"type":45,"value":387}," with multiple instance types (same family, different sizes) to improve Spot availability and reduce costs.",{"type":40,"tag":59,"props":389,"children":390},{},[391,392,398],{"type":45,"value":250},{"type":40,"tag":85,"props":393,"children":395},{"className":394},[],[396],{"type":45,"value":397},"HealthCheckType: ELB",{"type":45,"value":399}," when behind a load balancer (default is EC2, which only catches instance failures).",{"type":40,"tag":59,"props":401,"children":402},{},[403,404,410],{"type":45,"value":291},{"type":40,"tag":85,"props":405,"children":407},{"className":406},[],[408],{"type":45,"value":409},"DefaultInstanceWarmup",{"type":45,"value":411}," (e.g., 300s) to prevent premature scale-in while instances are still warming up.",{"type":40,"tag":59,"props":413,"children":414},{},[415,416,421,423,429,430,436],{"type":45,"value":263},{"type":40,"tag":135,"props":417,"children":418},{},[419],{"type":45,"value":420},"instance refresh",{"type":45,"value":422}," for AMI updates: ",{"type":40,"tag":85,"props":424,"children":426},{"className":425},[],[427],{"type":45,"value":428},"MinHealthyPercentage: 90",{"type":45,"value":100},{"type":40,"tag":85,"props":431,"children":433},{"className":432},[],[434],{"type":45,"value":435},"InstanceWarmup: 300",{"type":45,"value":286},{"type":40,"tag":48,"props":438,"children":440},{"id":439},"spot-instances",[441],{"type":45,"value":442},"Spot Instances",{"type":40,"tag":41,"props":444,"children":445},{},[446],{"type":45,"value":447},"Use Spot for fault-tolerant, stateless, or flexible-schedule workloads. Up to 90% savings.",{"type":40,"tag":128,"props":449,"children":450},{},[451,461,495,505,523,556],{"type":40,"tag":59,"props":452,"children":453},{},[454,459],{"type":40,"tag":135,"props":455,"children":456},{},[457],{"type":45,"value":458},"Spot Fleet \u002F Mixed Instances Policy",{"type":45,"value":460},": Diversify across at least 6-10 instance types and all AZs. The broader the pool, the lower the interruption rate.",{"type":40,"tag":59,"props":462,"children":463},{},[464,469,471,477,479,485,487,493],{"type":40,"tag":135,"props":465,"children":466},{},[467],{"type":45,"value":468},"Allocation strategy",{"type":45,"value":470},": ",{"type":40,"tag":85,"props":472,"children":474},{"className":473},[],[475],{"type":45,"value":476},"capacity-optimized",{"type":45,"value":478}," (default, best for reducing interruptions) or ",{"type":40,"tag":85,"props":480,"children":482},{"className":481},[],[483],{"type":45,"value":484},"price-capacity-optimized",{"type":45,"value":486}," (balances price and capacity). Avoid ",{"type":40,"tag":85,"props":488,"children":490},{"className":489},[],[491],{"type":45,"value":492},"lowest-price",{"type":45,"value":494}," — it concentrates instances on the cheapest instance type in a single pool, which means higher interruption rates (AWS reclaims the cheapest capacity first) and lower fleet diversity. The few cents saved per hour are wiped out by the disruption cost of frequent interruptions.",{"type":40,"tag":59,"props":496,"children":497},{},[498,503],{"type":40,"tag":135,"props":499,"children":500},{},[501],{"type":45,"value":502},"Spot interruption handling",{"type":45,"value":504},": Use EC2 metadata service or EventBridge to catch the 2-minute warning. Drain connections and save state.",{"type":40,"tag":59,"props":506,"children":507},{},[508,513,515,521],{"type":40,"tag":135,"props":509,"children":510},{},[511],{"type":45,"value":512},"Spot placement score",{"type":45,"value":514},": Use ",{"type":40,"tag":85,"props":516,"children":518},{"className":517},[],[519],{"type":45,"value":520},"aws ec2 get-spot-placement-scores",{"type":45,"value":522}," to find regions\u002FAZs with best capacity before launching.",{"type":40,"tag":59,"props":524,"children":525},{},[526,531,533,539,540,546,548,554],{"type":40,"tag":135,"props":527,"children":528},{},[529],{"type":45,"value":530},"Spot with ASG",{"type":45,"value":532},": Use mixed instances policy with ",{"type":40,"tag":85,"props":534,"children":536},{"className":535},[],[537],{"type":45,"value":538},"OnDemandBaseCapacity: 1",{"type":45,"value":319},{"type":40,"tag":85,"props":541,"children":543},{"className":542},[],[544],{"type":45,"value":545},"2",{"type":45,"value":547}," and ",{"type":40,"tag":85,"props":549,"children":551},{"className":550},[],[552],{"type":45,"value":553},"SpotAllocationStrategy: capacity-optimized",{"type":45,"value":555}," for a baseline of on-demand with Spot overflow.",{"type":40,"tag":59,"props":557,"children":558},{},[559],{"type":45,"value":560},"Never use Spot for: databases, single-instance workloads, or anything that cannot tolerate interruption.",{"type":40,"tag":48,"props":562,"children":564},{"id":563},"placement-groups",[565],{"type":45,"value":566},"Placement Groups",{"type":40,"tag":128,"props":568,"children":569},{},[570,580,590],{"type":40,"tag":59,"props":571,"children":572},{},[573,578],{"type":40,"tag":135,"props":574,"children":575},{},[576],{"type":45,"value":577},"Cluster",{"type":45,"value":579},": Low-latency, high-throughput between instances (HPC, tightly coupled). Same AZ, same rack.",{"type":40,"tag":59,"props":581,"children":582},{},[583,588],{"type":40,"tag":135,"props":584,"children":585},{},[586],{"type":45,"value":587},"Spread",{"type":45,"value":589},": Maximum resilience. Each instance on distinct hardware. Max 7 per AZ. Use for small critical workloads.",{"type":40,"tag":59,"props":591,"children":592},{},[593,598],{"type":40,"tag":135,"props":594,"children":595},{},[596],{"type":45,"value":597},"Partition",{"type":45,"value":599},": Large distributed workloads (HDFS, Cassandra, Kafka). Instances in same partition share hardware, different partitions don't.",{"type":40,"tag":48,"props":601,"children":603},{"id":602},"storage-ebs-vs-instance-store",[604],{"type":45,"value":605},"Storage: EBS vs Instance Store",{"type":40,"tag":41,"props":607,"children":608},{},[609,614],{"type":40,"tag":135,"props":610,"children":611},{},[612],{"type":45,"value":613},"Default to EBS",{"type":45,"value":615}," unless you need maximum IOPS.",{"type":40,"tag":617,"props":618,"children":620},"h3",{"id":619},"ebs",[621],{"type":45,"value":622},"EBS",{"type":40,"tag":128,"props":624,"children":625},{},[626,636,646,656,666,678,683],{"type":40,"tag":59,"props":627,"children":628},{},[629,634],{"type":40,"tag":135,"props":630,"children":631},{},[632],{"type":45,"value":633},"gp3",{"type":45,"value":635},": Default. 3,000 IOPS \u002F 125 MiB\u002Fs baseline, independently scalable. Always use gp3 over gp2 (cheaper and more flexible).",{"type":40,"tag":59,"props":637,"children":638},{},[639,644],{"type":40,"tag":135,"props":640,"children":641},{},[642],{"type":45,"value":643},"io2 Block Express",{"type":45,"value":645},": Databases requiring > 16,000 IOPS or sub-ms latency. Up to 256,000 IOPS and 4,000 MiB\u002Fs.",{"type":40,"tag":59,"props":647,"children":648},{},[649,654],{"type":40,"tag":135,"props":650,"children":651},{},[652],{"type":45,"value":653},"st1",{"type":45,"value":655},": Throughput-optimized HDD for sequential reads (big data, log processing). Not for boot volumes.",{"type":40,"tag":59,"props":657,"children":658},{},[659,664],{"type":40,"tag":135,"props":660,"children":661},{},[662],{"type":45,"value":663},"sc1",{"type":45,"value":665},": Cold HDD. Cheapest. Infrequent access.",{"type":40,"tag":59,"props":667,"children":668},{},[669,671,676],{"type":45,"value":670},"Enable ",{"type":40,"tag":135,"props":672,"children":673},{},[674],{"type":45,"value":675},"EBS encryption by default",{"type":45,"value":677}," at the account level. No performance penalty on modern instance types.",{"type":40,"tag":59,"props":679,"children":680},{},[681],{"type":45,"value":682},"Snapshot lifecycle: Use Data Lifecycle Manager (DLM) to automate snapshots and retention.",{"type":40,"tag":59,"props":684,"children":685},{},[686],{"type":45,"value":687},"Size EBS volumes for IOPS and throughput, not just capacity. gp3 can scale IOPS independently of size.",{"type":40,"tag":617,"props":689,"children":691},{"id":690},"instance-store",[692],{"type":45,"value":693},"Instance Store",{"type":40,"tag":128,"props":695,"children":696},{},[697,702,707],{"type":40,"tag":59,"props":698,"children":699},{},[700],{"type":45,"value":701},"Ephemeral NVMe attached to the host. Data lost on stop\u002Fterminate\u002Fhardware failure.",{"type":40,"tag":59,"props":703,"children":704},{},[705],{"type":45,"value":706},"Use for: caches, buffers, scratch data, temporary storage. I4i instances deliver up to 2.5M IOPS.",{"type":40,"tag":59,"props":708,"children":709},{},[710],{"type":45,"value":711},"Never store data you cannot afford to lose.",{"type":40,"tag":48,"props":713,"children":715},{"id":714},"common-cli-commands",[716],{"type":45,"value":717},"Common CLI Commands",{"type":40,"tag":235,"props":719,"children":723},{"className":720,"code":721,"language":722,"meta":243,"style":243},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Launch an instance\naws ec2 run-instances --launch-template LaunchTemplateId=lt-xxx,Version='$Latest' --count 1 --subnet-id subnet-xxx\n\n# Describe instances with filters\naws ec2 describe-instances --filters \"Name=tag:Environment,Values=prod\" --query \"Reservations[].Instances[].{ID:InstanceId,Type:InstanceType,State:State.Name}\"\n\n# Get latest AL2023 AMI\naws ssm get-parameters-by-path --path \u002Faws\u002Fservice\u002Fami-amazon-linux-latest --query \"Parameters[?contains(Name,'al2023')].{Name:Name,Value:Value}\"\n\n# Create a launch template\naws ec2 create-launch-template --launch-template-name my-template --launch-template-data file:\u002F\u002Flt-data.json\n\n# Update ASG to use new launch template version\naws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg --launch-template LaunchTemplateId=lt-xxx,Version='$Latest'\n\n# Start instance refresh (rolling AMI update)\naws autoscaling start-instance-refresh --auto-scaling-group-name my-asg --preferences '{\"MinHealthyPercentage\":90,\"InstanceWarmup\":300}'\n\n# Get Spot pricing history\naws ec2 describe-spot-price-history --instance-types m7g.large c7g.large --product-descriptions \"Linux\u002FUNIX\" --start-time $(date -u +%Y-%m-%dT%H:%M:%S)\n\n# Get Spot placement scores\naws ec2 get-spot-placement-scores --target-capacity 10 --instance-types-with-spot-max-price-override \"InstanceType=m7g.large\" --region-names us-east-1 us-west-2\n\n# Check Compute Optimizer recommendations\naws compute-optimizer get-ec2-instance-recommendations --instance-arns arn:aws:ec2:us-east-1:123456789012:instance\u002Fi-xxx\n\n# Connect via SSM (no SSH keys needed)\naws ssm start-session --target i-xxx\n","bash",[724],{"type":40,"tag":85,"props":725,"children":726},{"__ignoreMap":243},[727,739,804,814,823,879,887,896,941,949,958,995,1003,1012,1060,1067,1076,1120,1128,1137,1217,1225,1234,1294,1302,1311,1339,1347,1356],{"type":40,"tag":728,"props":729,"children":732},"span",{"class":730,"line":731},"line",1,[733],{"type":40,"tag":728,"props":734,"children":736},{"style":735},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[737],{"type":45,"value":738},"# Launch an instance\n",{"type":40,"tag":728,"props":740,"children":742},{"class":730,"line":741},2,[743,748,754,759,764,769,775,779,783,788,794,799],{"type":40,"tag":728,"props":744,"children":746},{"style":745},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[747],{"type":45,"value":22},{"type":40,"tag":728,"props":749,"children":751},{"style":750},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[752],{"type":45,"value":753}," ec2",{"type":40,"tag":728,"props":755,"children":756},{"style":750},[757],{"type":45,"value":758}," run-instances",{"type":40,"tag":728,"props":760,"children":761},{"style":750},[762],{"type":45,"value":763}," --launch-template",{"type":40,"tag":728,"props":765,"children":766},{"style":750},[767],{"type":45,"value":768}," LaunchTemplateId=lt-xxx,Version=",{"type":40,"tag":728,"props":770,"children":772},{"style":771},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[773],{"type":45,"value":774},"'",{"type":40,"tag":728,"props":776,"children":777},{"style":750},[778],{"type":45,"value":317},{"type":40,"tag":728,"props":780,"children":781},{"style":771},[782],{"type":45,"value":774},{"type":40,"tag":728,"props":784,"children":785},{"style":750},[786],{"type":45,"value":787}," --count",{"type":40,"tag":728,"props":789,"children":791},{"style":790},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[792],{"type":45,"value":793}," 1",{"type":40,"tag":728,"props":795,"children":796},{"style":750},[797],{"type":45,"value":798}," --subnet-id",{"type":40,"tag":728,"props":800,"children":801},{"style":750},[802],{"type":45,"value":803}," subnet-xxx\n",{"type":40,"tag":728,"props":805,"children":807},{"class":730,"line":806},3,[808],{"type":40,"tag":728,"props":809,"children":811},{"emptyLinePlaceholder":810},true,[812],{"type":45,"value":813},"\n",{"type":40,"tag":728,"props":815,"children":817},{"class":730,"line":816},4,[818],{"type":40,"tag":728,"props":819,"children":820},{"style":735},[821],{"type":45,"value":822},"# Describe instances with filters\n",{"type":40,"tag":728,"props":824,"children":826},{"class":730,"line":825},5,[827,831,835,840,845,850,855,860,865,869,874],{"type":40,"tag":728,"props":828,"children":829},{"style":745},[830],{"type":45,"value":22},{"type":40,"tag":728,"props":832,"children":833},{"style":750},[834],{"type":45,"value":753},{"type":40,"tag":728,"props":836,"children":837},{"style":750},[838],{"type":45,"value":839}," describe-instances",{"type":40,"tag":728,"props":841,"children":842},{"style":750},[843],{"type":45,"value":844}," --filters",{"type":40,"tag":728,"props":846,"children":847},{"style":771},[848],{"type":45,"value":849}," \"",{"type":40,"tag":728,"props":851,"children":852},{"style":750},[853],{"type":45,"value":854},"Name=tag:Environment,Values=prod",{"type":40,"tag":728,"props":856,"children":857},{"style":771},[858],{"type":45,"value":859},"\"",{"type":40,"tag":728,"props":861,"children":862},{"style":750},[863],{"type":45,"value":864}," --query",{"type":40,"tag":728,"props":866,"children":867},{"style":771},[868],{"type":45,"value":849},{"type":40,"tag":728,"props":870,"children":871},{"style":750},[872],{"type":45,"value":873},"Reservations[].Instances[].{ID:InstanceId,Type:InstanceType,State:State.Name}",{"type":40,"tag":728,"props":875,"children":876},{"style":771},[877],{"type":45,"value":878},"\"\n",{"type":40,"tag":728,"props":880,"children":882},{"class":730,"line":881},6,[883],{"type":40,"tag":728,"props":884,"children":885},{"emptyLinePlaceholder":810},[886],{"type":45,"value":813},{"type":40,"tag":728,"props":888,"children":890},{"class":730,"line":889},7,[891],{"type":40,"tag":728,"props":892,"children":893},{"style":735},[894],{"type":45,"value":895},"# Get latest AL2023 AMI\n",{"type":40,"tag":728,"props":897,"children":899},{"class":730,"line":898},8,[900,904,909,914,919,924,928,932,937],{"type":40,"tag":728,"props":901,"children":902},{"style":745},[903],{"type":45,"value":22},{"type":40,"tag":728,"props":905,"children":906},{"style":750},[907],{"type":45,"value":908}," ssm",{"type":40,"tag":728,"props":910,"children":911},{"style":750},[912],{"type":45,"value":913}," get-parameters-by-path",{"type":40,"tag":728,"props":915,"children":916},{"style":750},[917],{"type":45,"value":918}," --path",{"type":40,"tag":728,"props":920,"children":921},{"style":750},[922],{"type":45,"value":923}," \u002Faws\u002Fservice\u002Fami-amazon-linux-latest",{"type":40,"tag":728,"props":925,"children":926},{"style":750},[927],{"type":45,"value":864},{"type":40,"tag":728,"props":929,"children":930},{"style":771},[931],{"type":45,"value":849},{"type":40,"tag":728,"props":933,"children":934},{"style":750},[935],{"type":45,"value":936},"Parameters[?contains(Name,'al2023')].{Name:Name,Value:Value}",{"type":40,"tag":728,"props":938,"children":939},{"style":771},[940],{"type":45,"value":878},{"type":40,"tag":728,"props":942,"children":944},{"class":730,"line":943},9,[945],{"type":40,"tag":728,"props":946,"children":947},{"emptyLinePlaceholder":810},[948],{"type":45,"value":813},{"type":40,"tag":728,"props":950,"children":952},{"class":730,"line":951},10,[953],{"type":40,"tag":728,"props":954,"children":955},{"style":735},[956],{"type":45,"value":957},"# Create a launch template\n",{"type":40,"tag":728,"props":959,"children":961},{"class":730,"line":960},11,[962,966,970,975,980,985,990],{"type":40,"tag":728,"props":963,"children":964},{"style":745},[965],{"type":45,"value":22},{"type":40,"tag":728,"props":967,"children":968},{"style":750},[969],{"type":45,"value":753},{"type":40,"tag":728,"props":971,"children":972},{"style":750},[973],{"type":45,"value":974}," create-launch-template",{"type":40,"tag":728,"props":976,"children":977},{"style":750},[978],{"type":45,"value":979}," --launch-template-name",{"type":40,"tag":728,"props":981,"children":982},{"style":750},[983],{"type":45,"value":984}," my-template",{"type":40,"tag":728,"props":986,"children":987},{"style":750},[988],{"type":45,"value":989}," --launch-template-data",{"type":40,"tag":728,"props":991,"children":992},{"style":750},[993],{"type":45,"value":994}," file:\u002F\u002Flt-data.json\n",{"type":40,"tag":728,"props":996,"children":998},{"class":730,"line":997},12,[999],{"type":40,"tag":728,"props":1000,"children":1001},{"emptyLinePlaceholder":810},[1002],{"type":45,"value":813},{"type":40,"tag":728,"props":1004,"children":1006},{"class":730,"line":1005},13,[1007],{"type":40,"tag":728,"props":1008,"children":1009},{"style":735},[1010],{"type":45,"value":1011},"# Update ASG to use new launch template version\n",{"type":40,"tag":728,"props":1013,"children":1014},{"class":730,"line":23},[1015,1019,1024,1029,1034,1039,1043,1047,1051,1055],{"type":40,"tag":728,"props":1016,"children":1017},{"style":745},[1018],{"type":45,"value":22},{"type":40,"tag":728,"props":1020,"children":1021},{"style":750},[1022],{"type":45,"value":1023}," autoscaling",{"type":40,"tag":728,"props":1025,"children":1026},{"style":750},[1027],{"type":45,"value":1028}," update-auto-scaling-group",{"type":40,"tag":728,"props":1030,"children":1031},{"style":750},[1032],{"type":45,"value":1033}," --auto-scaling-group-name",{"type":40,"tag":728,"props":1035,"children":1036},{"style":750},[1037],{"type":45,"value":1038}," my-asg",{"type":40,"tag":728,"props":1040,"children":1041},{"style":750},[1042],{"type":45,"value":763},{"type":40,"tag":728,"props":1044,"children":1045},{"style":750},[1046],{"type":45,"value":768},{"type":40,"tag":728,"props":1048,"children":1049},{"style":771},[1050],{"type":45,"value":774},{"type":40,"tag":728,"props":1052,"children":1053},{"style":750},[1054],{"type":45,"value":317},{"type":40,"tag":728,"props":1056,"children":1057},{"style":771},[1058],{"type":45,"value":1059},"'\n",{"type":40,"tag":728,"props":1061,"children":1062},{"class":730,"line":27},[1063],{"type":40,"tag":728,"props":1064,"children":1065},{"emptyLinePlaceholder":810},[1066],{"type":45,"value":813},{"type":40,"tag":728,"props":1068,"children":1070},{"class":730,"line":1069},16,[1071],{"type":40,"tag":728,"props":1072,"children":1073},{"style":735},[1074],{"type":45,"value":1075},"# Start instance refresh (rolling AMI update)\n",{"type":40,"tag":728,"props":1077,"children":1079},{"class":730,"line":1078},17,[1080,1084,1088,1093,1097,1101,1106,1111,1116],{"type":40,"tag":728,"props":1081,"children":1082},{"style":745},[1083],{"type":45,"value":22},{"type":40,"tag":728,"props":1085,"children":1086},{"style":750},[1087],{"type":45,"value":1023},{"type":40,"tag":728,"props":1089,"children":1090},{"style":750},[1091],{"type":45,"value":1092}," start-instance-refresh",{"type":40,"tag":728,"props":1094,"children":1095},{"style":750},[1096],{"type":45,"value":1033},{"type":40,"tag":728,"props":1098,"children":1099},{"style":750},[1100],{"type":45,"value":1038},{"type":40,"tag":728,"props":1102,"children":1103},{"style":750},[1104],{"type":45,"value":1105}," --preferences",{"type":40,"tag":728,"props":1107,"children":1108},{"style":771},[1109],{"type":45,"value":1110}," '",{"type":40,"tag":728,"props":1112,"children":1113},{"style":750},[1114],{"type":45,"value":1115},"{\"MinHealthyPercentage\":90,\"InstanceWarmup\":300}",{"type":40,"tag":728,"props":1117,"children":1118},{"style":771},[1119],{"type":45,"value":1059},{"type":40,"tag":728,"props":1121,"children":1123},{"class":730,"line":1122},18,[1124],{"type":40,"tag":728,"props":1125,"children":1126},{"emptyLinePlaceholder":810},[1127],{"type":45,"value":813},{"type":40,"tag":728,"props":1129,"children":1131},{"class":730,"line":1130},19,[1132],{"type":40,"tag":728,"props":1133,"children":1134},{"style":735},[1135],{"type":45,"value":1136},"# Get Spot pricing history\n",{"type":40,"tag":728,"props":1138,"children":1140},{"class":730,"line":1139},20,[1141,1145,1149,1154,1159,1164,1169,1174,1178,1183,1187,1192,1197,1202,1207,1212],{"type":40,"tag":728,"props":1142,"children":1143},{"style":745},[1144],{"type":45,"value":22},{"type":40,"tag":728,"props":1146,"children":1147},{"style":750},[1148],{"type":45,"value":753},{"type":40,"tag":728,"props":1150,"children":1151},{"style":750},[1152],{"type":45,"value":1153}," describe-spot-price-history",{"type":40,"tag":728,"props":1155,"children":1156},{"style":750},[1157],{"type":45,"value":1158}," --instance-types",{"type":40,"tag":728,"props":1160,"children":1161},{"style":750},[1162],{"type":45,"value":1163}," m7g.large",{"type":40,"tag":728,"props":1165,"children":1166},{"style":750},[1167],{"type":45,"value":1168}," c7g.large",{"type":40,"tag":728,"props":1170,"children":1171},{"style":750},[1172],{"type":45,"value":1173}," --product-descriptions",{"type":40,"tag":728,"props":1175,"children":1176},{"style":771},[1177],{"type":45,"value":849},{"type":40,"tag":728,"props":1179,"children":1180},{"style":750},[1181],{"type":45,"value":1182},"Linux\u002FUNIX",{"type":40,"tag":728,"props":1184,"children":1185},{"style":771},[1186],{"type":45,"value":859},{"type":40,"tag":728,"props":1188,"children":1189},{"style":750},[1190],{"type":45,"value":1191}," --start-time",{"type":40,"tag":728,"props":1193,"children":1194},{"style":771},[1195],{"type":45,"value":1196}," $(",{"type":40,"tag":728,"props":1198,"children":1199},{"style":745},[1200],{"type":45,"value":1201},"date",{"type":40,"tag":728,"props":1203,"children":1204},{"style":750},[1205],{"type":45,"value":1206}," -u",{"type":40,"tag":728,"props":1208,"children":1209},{"style":750},[1210],{"type":45,"value":1211}," +%Y-%m-%dT%H:%M:%S",{"type":40,"tag":728,"props":1213,"children":1214},{"style":771},[1215],{"type":45,"value":1216},")\n",{"type":40,"tag":728,"props":1218,"children":1220},{"class":730,"line":1219},21,[1221],{"type":40,"tag":728,"props":1222,"children":1223},{"emptyLinePlaceholder":810},[1224],{"type":45,"value":813},{"type":40,"tag":728,"props":1226,"children":1228},{"class":730,"line":1227},22,[1229],{"type":40,"tag":728,"props":1230,"children":1231},{"style":735},[1232],{"type":45,"value":1233},"# Get Spot placement scores\n",{"type":40,"tag":728,"props":1235,"children":1237},{"class":730,"line":1236},23,[1238,1242,1246,1251,1256,1261,1266,1270,1275,1279,1284,1289],{"type":40,"tag":728,"props":1239,"children":1240},{"style":745},[1241],{"type":45,"value":22},{"type":40,"tag":728,"props":1243,"children":1244},{"style":750},[1245],{"type":45,"value":753},{"type":40,"tag":728,"props":1247,"children":1248},{"style":750},[1249],{"type":45,"value":1250}," get-spot-placement-scores",{"type":40,"tag":728,"props":1252,"children":1253},{"style":750},[1254],{"type":45,"value":1255}," --target-capacity",{"type":40,"tag":728,"props":1257,"children":1258},{"style":790},[1259],{"type":45,"value":1260}," 10",{"type":40,"tag":728,"props":1262,"children":1263},{"style":750},[1264],{"type":45,"value":1265}," --instance-types-with-spot-max-price-override",{"type":40,"tag":728,"props":1267,"children":1268},{"style":771},[1269],{"type":45,"value":849},{"type":40,"tag":728,"props":1271,"children":1272},{"style":750},[1273],{"type":45,"value":1274},"InstanceType=m7g.large",{"type":40,"tag":728,"props":1276,"children":1277},{"style":771},[1278],{"type":45,"value":859},{"type":40,"tag":728,"props":1280,"children":1281},{"style":750},[1282],{"type":45,"value":1283}," --region-names",{"type":40,"tag":728,"props":1285,"children":1286},{"style":750},[1287],{"type":45,"value":1288}," us-east-1",{"type":40,"tag":728,"props":1290,"children":1291},{"style":750},[1292],{"type":45,"value":1293}," us-west-2\n",{"type":40,"tag":728,"props":1295,"children":1297},{"class":730,"line":1296},24,[1298],{"type":40,"tag":728,"props":1299,"children":1300},{"emptyLinePlaceholder":810},[1301],{"type":45,"value":813},{"type":40,"tag":728,"props":1303,"children":1305},{"class":730,"line":1304},25,[1306],{"type":40,"tag":728,"props":1307,"children":1308},{"style":735},[1309],{"type":45,"value":1310},"# Check Compute Optimizer recommendations\n",{"type":40,"tag":728,"props":1312,"children":1314},{"class":730,"line":1313},26,[1315,1319,1324,1329,1334],{"type":40,"tag":728,"props":1316,"children":1317},{"style":745},[1318],{"type":45,"value":22},{"type":40,"tag":728,"props":1320,"children":1321},{"style":750},[1322],{"type":45,"value":1323}," compute-optimizer",{"type":40,"tag":728,"props":1325,"children":1326},{"style":750},[1327],{"type":45,"value":1328}," get-ec2-instance-recommendations",{"type":40,"tag":728,"props":1330,"children":1331},{"style":750},[1332],{"type":45,"value":1333}," --instance-arns",{"type":40,"tag":728,"props":1335,"children":1336},{"style":750},[1337],{"type":45,"value":1338}," arn:aws:ec2:us-east-1:123456789012:instance\u002Fi-xxx\n",{"type":40,"tag":728,"props":1340,"children":1342},{"class":730,"line":1341},27,[1343],{"type":40,"tag":728,"props":1344,"children":1345},{"emptyLinePlaceholder":810},[1346],{"type":45,"value":813},{"type":40,"tag":728,"props":1348,"children":1350},{"class":730,"line":1349},28,[1351],{"type":40,"tag":728,"props":1352,"children":1353},{"style":735},[1354],{"type":45,"value":1355},"# Connect via SSM (no SSH keys needed)\n",{"type":40,"tag":728,"props":1357,"children":1359},{"class":730,"line":1358},29,[1360,1364,1368,1373,1378],{"type":40,"tag":728,"props":1361,"children":1362},{"style":745},[1363],{"type":45,"value":22},{"type":40,"tag":728,"props":1365,"children":1366},{"style":750},[1367],{"type":45,"value":908},{"type":40,"tag":728,"props":1369,"children":1370},{"style":750},[1371],{"type":45,"value":1372}," start-session",{"type":40,"tag":728,"props":1374,"children":1375},{"style":750},[1376],{"type":45,"value":1377}," --target",{"type":40,"tag":728,"props":1379,"children":1380},{"style":750},[1381],{"type":45,"value":1382}," i-xxx\n",{"type":40,"tag":48,"props":1384,"children":1386},{"id":1385},"output-format",[1387],{"type":45,"value":1388},"Output Format",{"type":40,"tag":1390,"props":1391,"children":1392},"table",{},[1393,1412],{"type":40,"tag":1394,"props":1395,"children":1396},"thead",{},[1397],{"type":40,"tag":1398,"props":1399,"children":1400},"tr",{},[1401,1407],{"type":40,"tag":1402,"props":1403,"children":1404},"th",{},[1405],{"type":45,"value":1406},"Field",{"type":40,"tag":1402,"props":1408,"children":1409},{},[1410],{"type":45,"value":1411},"Details",{"type":40,"tag":1413,"props":1414,"children":1415},"tbody",{},[1416,1433,1449,1465,1481,1497,1513,1529],{"type":40,"tag":1398,"props":1417,"children":1418},{},[1419,1428],{"type":40,"tag":1420,"props":1421,"children":1422},"td",{},[1423],{"type":40,"tag":135,"props":1424,"children":1425},{},[1426],{"type":45,"value":1427},"Instance type",{"type":40,"tag":1420,"props":1429,"children":1430},{},[1431],{"type":45,"value":1432},"Family, size, and architecture (e.g., m7g.large \u002F arm64)",{"type":40,"tag":1398,"props":1434,"children":1435},{},[1436,1444],{"type":40,"tag":1420,"props":1437,"children":1438},{},[1439],{"type":40,"tag":135,"props":1440,"children":1441},{},[1442],{"type":45,"value":1443},"AMI",{"type":40,"tag":1420,"props":1445,"children":1446},{},[1447],{"type":45,"value":1448},"AMI source (AL2023, custom), resolution method (SSM parameter)",{"type":40,"tag":1398,"props":1450,"children":1451},{},[1452,1460],{"type":40,"tag":1420,"props":1453,"children":1454},{},[1455],{"type":40,"tag":135,"props":1456,"children":1457},{},[1458],{"type":45,"value":1459},"Storage (EBS type\u002Fsize)",{"type":40,"tag":1420,"props":1461,"children":1462},{},[1463],{"type":45,"value":1464},"Volume type (gp3, io2), size, IOPS, throughput",{"type":40,"tag":1398,"props":1466,"children":1467},{},[1468,1476],{"type":40,"tag":1420,"props":1469,"children":1470},{},[1471],{"type":40,"tag":135,"props":1472,"children":1473},{},[1474],{"type":45,"value":1475},"ASG config",{"type":40,"tag":1420,"props":1477,"children":1478},{},[1479],{"type":45,"value":1480},"Min\u002Fmax\u002Fdesired, health check type, instance warmup",{"type":40,"tag":1398,"props":1482,"children":1483},{},[1484,1492],{"type":40,"tag":1420,"props":1485,"children":1486},{},[1487],{"type":40,"tag":135,"props":1488,"children":1489},{},[1490],{"type":45,"value":1491},"Spot strategy",{"type":40,"tag":1420,"props":1493,"children":1494},{},[1495],{"type":45,"value":1496},"On-demand base capacity, Spot allocation strategy, instance diversity",{"type":40,"tag":1398,"props":1498,"children":1499},{},[1500,1508],{"type":40,"tag":1420,"props":1501,"children":1502},{},[1503],{"type":40,"tag":135,"props":1504,"children":1505},{},[1506],{"type":45,"value":1507},"Key pair \u002F SSM",{"type":40,"tag":1420,"props":1509,"children":1510},{},[1511],{"type":45,"value":1512},"SSM Session Manager (preferred) or key pair for access",{"type":40,"tag":1398,"props":1514,"children":1515},{},[1516,1524],{"type":40,"tag":1420,"props":1517,"children":1518},{},[1519],{"type":40,"tag":135,"props":1520,"children":1521},{},[1522],{"type":45,"value":1523},"Security group",{"type":40,"tag":1420,"props":1525,"children":1526},{},[1527],{"type":45,"value":1528},"Inbound\u002Foutbound rules, referenced SG IDs",{"type":40,"tag":1398,"props":1530,"children":1531},{},[1532,1540],{"type":40,"tag":1420,"props":1533,"children":1534},{},[1535],{"type":40,"tag":135,"props":1536,"children":1537},{},[1538],{"type":45,"value":1539},"Monitoring",{"type":40,"tag":1420,"props":1541,"children":1542},{},[1543],{"type":45,"value":1544},"CloudWatch agent config, detailed monitoring, custom metrics",{"type":40,"tag":48,"props":1546,"children":1548},{"id":1547},"related-skills",[1549],{"type":45,"value":1550},"Related Skills",{"type":40,"tag":128,"props":1552,"children":1553},{},[1554,1565,1576,1587,1598],{"type":40,"tag":59,"props":1555,"children":1556},{},[1557,1563],{"type":40,"tag":85,"props":1558,"children":1560},{"className":1559},[],[1561],{"type":45,"value":1562},"networking",{"type":45,"value":1564}," — VPC, subnets, security groups, and NAT strategy for EC2 instances",{"type":40,"tag":59,"props":1566,"children":1567},{},[1568,1574],{"type":40,"tag":85,"props":1569,"children":1571},{"className":1570},[],[1572],{"type":45,"value":1573},"iam",{"type":45,"value":1575}," — Instance profiles, least-privilege policies, and SSM permissions",{"type":40,"tag":59,"props":1577,"children":1578},{},[1579,1585],{"type":40,"tag":85,"props":1580,"children":1582},{"className":1581},[],[1583],{"type":45,"value":1584},"s3",{"type":45,"value":1586}," — Storage integration, instance backups, and bootstrap scripts",{"type":40,"tag":59,"props":1588,"children":1589},{},[1590,1596],{"type":40,"tag":85,"props":1591,"children":1593},{"className":1592},[],[1594],{"type":45,"value":1595},"observability",{"type":45,"value":1597}," — CloudWatch agent, alarms, dashboards, and Compute Optimizer",{"type":40,"tag":59,"props":1599,"children":1600},{},[1601,1607],{"type":40,"tag":85,"props":1602,"children":1604},{"className":1603},[],[1605],{"type":45,"value":1606},"cloudfront",{"type":45,"value":1608}," — CDN in front of EC2-backed web applications",{"type":40,"tag":48,"props":1610,"children":1612},{"id":1611},"anti-patterns",[1613],{"type":45,"value":1614},"Anti-Patterns",{"type":40,"tag":128,"props":1616,"children":1617},{},[1618,1628,1645,1655,1665,1675,1685,1695,1705],{"type":40,"tag":59,"props":1619,"children":1620},{},[1621,1626],{"type":40,"tag":135,"props":1622,"children":1623},{},[1624],{"type":45,"value":1625},"Using SSH keys",{"type":45,"value":1627},": Use SSM Session Manager instead. No need to manage key pairs, open port 22, or maintain bastion hosts. SSM provides audit logging and IAM-based access control.",{"type":40,"tag":59,"props":1629,"children":1630},{},[1631,1636,1638,1643],{"type":40,"tag":135,"props":1632,"children":1633},{},[1634],{"type":45,"value":1635},"IMDSv1 still enabled",{"type":45,"value":1637},": Enforce IMDSv2 (",{"type":40,"tag":85,"props":1639,"children":1641},{"className":1640},[],[1642],{"type":45,"value":277},{"type":45,"value":1644},") in launch templates. IMDSv1 is vulnerable to SSRF attacks that can steal instance credentials.",{"type":40,"tag":59,"props":1646,"children":1647},{},[1648,1653],{"type":40,"tag":135,"props":1649,"children":1650},{},[1651],{"type":45,"value":1652},"Manually launching instances",{"type":45,"value":1654},": Everything should go through launch templates and ASGs, even \"temporary\" instances. Manual instances become untracked snowflakes.",{"type":40,"tag":59,"props":1656,"children":1657},{},[1658,1663],{"type":40,"tag":135,"props":1659,"children":1660},{},[1661],{"type":45,"value":1662},"Single instance type in ASG",{"type":45,"value":1664},": Use mixed instances policy with 3+ instance types from the same family. This improves Spot availability and on-demand capacity during shortages.",{"type":40,"tag":59,"props":1666,"children":1667},{},[1668,1673],{"type":40,"tag":135,"props":1669,"children":1670},{},[1671],{"type":45,"value":1672},"gp2 volumes",{"type":45,"value":1674},": gp2 ties IOPS to volume size. gp3 is cheaper, with independently configurable IOPS and throughput. Migrate all gp2 volumes to gp3.",{"type":40,"tag":59,"props":1676,"children":1677},{},[1678,1683],{"type":40,"tag":135,"props":1679,"children":1680},{},[1681],{"type":45,"value":1682},"Oversized instances",{"type":45,"value":1684},": Running m5.4xlarge at 5% CPU because \"we might need it.\" Use Compute Optimizer, right-size, and scale horizontally instead.",{"type":40,"tag":59,"props":1686,"children":1687},{},[1688,1693],{"type":40,"tag":135,"props":1689,"children":1690},{},[1691],{"type":45,"value":1692},"No EBS encryption",{"type":45,"value":1694},": Enable default encryption at the account level. There is no performance penalty on current generation instances and it satisfies most compliance requirements.",{"type":40,"tag":59,"props":1696,"children":1697},{},[1698,1703],{"type":40,"tag":135,"props":1699,"children":1700},{},[1701],{"type":45,"value":1702},"Using public IPs when not needed",{"type":45,"value":1704},": Place instances in private subnets behind a load balancer or NAT Gateway. Use VPC endpoints for AWS service access.",{"type":40,"tag":59,"props":1706,"children":1707},{},[1708,1713],{"type":40,"tag":135,"props":1709,"children":1710},{},[1711],{"type":45,"value":1712},"Ignoring Graviton",{"type":45,"value":1714},": Arm64 (Graviton) instances are 20-30% better price-performance for most workloads. Test compatibility and migrate -- most Linux workloads run without changes.",{"type":40,"tag":1716,"props":1717,"children":1718},"style",{},[1719],{"type":45,"value":1720},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1722,"total":1820},[1723,1737,1752,1764,1774,1789,1805],{"slug":1724,"name":1724,"fn":1725,"description":1726,"org":1727,"tags":1728,"stars":23,"repoUrl":24,"updatedAt":1736},"agentcore","design Amazon Bedrock AgentCore architectures","Deep-dive into Amazon Bedrock AgentCore platform design, service selection, deployment, and production operations. This skill should be used when the user asks to \"design an AgentCore architecture\", \"deploy agents on AgentCore\", \"configure AgentCore Runtime\", \"set up AgentCore Memory\", \"use AgentCore Gateway\", \"configure AgentCore Identity\", \"set up AgentCore Policy\", \"plan agent observability\", \"evaluate agent quality\", \"move agent PoC to production\", or mentions AgentCore, AgentCore Runtime, AgentCore Memory, AgentCore Gateway, AgentCore Identity, AgentCore Policy, AgentCore Evaluations, AgentCore Code Interpreter, AgentCore Browser, A2A protocol, or multi-agent orchestration on AWS.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1729,1732,1735],{"name":1730,"slug":1731,"type":16},"Agents","agents",{"name":1733,"slug":1734,"type":16},"Architecture","architecture",{"name":21,"slug":22,"type":16},"2026-07-12T08:40:11.108951",{"slug":1738,"name":1738,"fn":1739,"description":1740,"org":1741,"tags":1742,"stars":23,"repoUrl":24,"updatedAt":1751},"aidlc-lite","develop AI applications on AWS","Lightweight AI development lifecycle for building on AWS. A simplified take on the AI-DLC philosophy — think together, then build fast. Acts as a design partner that understands intent, proposes alternatives with trade-offs, and ships working code without the ceremony of full requirements\u002Fdesign\u002Fspec documents. Use when a founder says \"build X on AWS\", \"add Y to my stack\", \"scaffold an API\", or \"write the CDK for Z\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1743,1744,1747,1748],{"name":1730,"slug":1731,"type":16},{"name":1745,"slug":1746,"type":16},"AI Infrastructure","ai-infrastructure",{"name":21,"slug":22,"type":16},{"name":1749,"slug":1750,"type":16},"Engineering","engineering","2026-07-12T08:40:40.204103",{"slug":1753,"name":1753,"fn":1754,"description":1755,"org":1756,"tags":1757,"stars":23,"repoUrl":24,"updatedAt":1763},"architect-for-startups","advise on AWS architecture for startups","AWS architecture advisor tailored specifically for startups. Alters AWS architecture recommendations based on startup stage (pre-revenue through Series B+), team size, runway, and credits. ALWAYS use when asked about building on AWS, choosing services, planning infrastructure, managing costs with credits, or preparing architecture for fundraising.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1758,1759,1760],{"name":1733,"slug":1734,"type":16},{"name":21,"slug":22,"type":16},{"name":1761,"slug":1762,"type":16},"Strategy","strategy","2026-07-12T08:41:33.557354",{"slug":1765,"name":1765,"fn":1766,"description":1767,"org":1768,"tags":1769,"stars":23,"repoUrl":24,"updatedAt":1773},"aws-architect","design and review AWS architectures","Design and review AWS architectures following Well-Architected Framework principles. Use when planning new infrastructure, reviewing existing architectures, evaluating trade-offs between AWS services, or when asked about AWS best practices.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1770,1771,1772],{"name":1733,"slug":1734,"type":16},{"name":21,"slug":22,"type":16},{"name":18,"slug":19,"type":16},"2026-07-12T08:40:57.630086",{"slug":1775,"name":1775,"fn":1776,"description":1777,"org":1778,"tags":1779,"stars":23,"repoUrl":24,"updatedAt":1788},"aws-compare","compare AWS architecture options","Compare 2-3 AWS architecture options side-by-side across cost, complexity, performance, security, and operational burden. Use when evaluating trade-offs between approaches or when the user is deciding between options.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1780,1781,1782,1785],{"name":1733,"slug":1734,"type":16},{"name":21,"slug":22,"type":16},{"name":1783,"slug":1784,"type":16},"Cost Optimization","cost-optimization",{"name":1786,"slug":1787,"type":16},"Security","security","2026-07-12T08:40:23.960287",{"slug":1790,"name":1790,"fn":1791,"description":1792,"org":1793,"tags":1794,"stars":23,"repoUrl":24,"updatedAt":1804},"aws-debug","debug AWS infrastructure and deployment failures","Debug AWS infrastructure issues, deployment failures, and runtime errors. Use when troubleshooting CloudFormation stack failures, Lambda errors, ECS task failures, permission issues, networking problems, or any AWS service misbehavior.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1795,1796,1799,1802],{"name":21,"slug":22,"type":16},{"name":1797,"slug":1798,"type":16},"Debugging","debugging",{"name":1800,"slug":1801,"type":16},"Deployment","deployment",{"name":1803,"slug":1595,"type":16},"Observability","2026-07-12T08:40:16.767171",{"slug":1806,"name":1806,"fn":1807,"description":1808,"org":1809,"tags":1810,"stars":23,"repoUrl":24,"updatedAt":1819},"aws-diagram","generate AWS architecture diagrams","Generate AWS architecture diagrams in Mermaid or ASCII from a description, existing IaC, or conversation context. Use when the user wants to visualize an architecture.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1811,1812,1813,1816],{"name":1733,"slug":1734,"type":16},{"name":21,"slug":22,"type":16},{"name":1814,"slug":1815,"type":16},"Diagrams","diagrams",{"name":1817,"slug":1818,"type":16},"Visualization","visualization","2026-07-12T08:40:43.26341",42,{"items":1822,"total":1994},[1823,1838,1859,1869,1882,1895,1905,1915,1934,1949,1964,1979],{"slug":1824,"name":1824,"fn":1825,"description":1826,"org":1827,"tags":1828,"stars":1835,"repoUrl":1836,"updatedAt":1837},"agentcore-investigation","investigate Bedrock AgentCore runtime sessions","Investigate Bedrock AgentCore runtime sessions via CloudWatch Logs Insights — resolve session\u002Ftrace IDs, query OTEL spans, filter noise, build timelines. Use when debugging AgentCore agent sessions, tracing tool calls, or analyzing latency.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1829,1830,1831,1834],{"name":21,"slug":22,"type":16},{"name":1797,"slug":1798,"type":16},{"name":1832,"slug":1833,"type":16},"Logs","logs",{"name":1803,"slug":1595,"type":16},9427,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fmcp","2026-07-12T08:37:22.601527",{"slug":1839,"name":1840,"fn":1841,"description":1842,"org":1843,"tags":1844,"stars":1835,"repoUrl":1836,"updatedAt":1858},"amazon-aurora-dsql","amazon aurora dsql","build applications with Aurora DSQL","Build with Aurora DSQL — manage schemas, execute queries, handle migrations, diagnose query plans, load data, and develop applications with a serverless, distributed SQL database. Covers IAM auth, multi-tenant patterns, MySQL-to-DSQL and PostgreSQL-to-DSQL schema conversion, FK replacement code generation, OCC retry patterns, ORM migration (Django\u002FHibernate\u002FRails), DDL operations, query plan explainability, SQL compatibility validation, and bulk data loading. Triggers on phrases like: DSQL, Aurora DSQL, create DSQL table, DSQL schema, migrate to DSQL, distributed SQL database, serverless PostgreSQL-compatible database, DSQL query plan, DSQL EXPLAIN ANALYZE, why is my DSQL query slow, DSQL foreign key, DSQL OCC retry, DSQL multi-region, load into DSQL, load CSV into DSQL, bulk load DSQL, aurora-dsql-loader.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1845,1848,1849,1852,1855],{"name":1846,"slug":1847,"type":16},"Aurora","aurora",{"name":21,"slug":22,"type":16},{"name":1850,"slug":1851,"type":16},"Database","database",{"name":1853,"slug":1854,"type":16},"Serverless","serverless",{"name":1856,"slug":1857,"type":16},"SQL","sql","2026-07-12T08:36:45.053393",{"slug":1860,"name":1861,"fn":1841,"description":1842,"org":1862,"tags":1863,"stars":1835,"repoUrl":1836,"updatedAt":1868},"aurora-dsql","aurora dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1864,1865,1866,1867],{"name":21,"slug":22,"type":16},{"name":1850,"slug":1851,"type":16},{"name":1853,"slug":1854,"type":16},{"name":1856,"slug":1857,"type":16},"2026-07-12T08:36:42.694299",{"slug":1870,"name":1871,"fn":1841,"description":1842,"org":1872,"tags":1873,"stars":1835,"repoUrl":1836,"updatedAt":1881},"aws-dsql","aws dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1874,1875,1876,1879,1880],{"name":21,"slug":22,"type":16},{"name":1850,"slug":1851,"type":16},{"name":1877,"slug":1878,"type":16},"Migration","migration",{"name":1853,"slug":1854,"type":16},{"name":1856,"slug":1857,"type":16},"2026-07-12T08:36:38.584057",{"slug":1883,"name":1884,"fn":1841,"description":1842,"org":1885,"tags":1886,"stars":1835,"repoUrl":1836,"updatedAt":1894},"distributed-postgres","distributed postgres",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1887,1888,1889,1892,1893],{"name":21,"slug":22,"type":16},{"name":1850,"slug":1851,"type":16},{"name":1890,"slug":1891,"type":16},"PostgreSQL","postgresql",{"name":1853,"slug":1854,"type":16},{"name":1856,"slug":1857,"type":16},"2026-07-12T08:36:46.530743",{"slug":1896,"name":1897,"fn":1841,"description":1842,"org":1898,"tags":1899,"stars":1835,"repoUrl":1836,"updatedAt":1904},"distributed-sql","distributed sql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1900,1901,1902,1903],{"name":21,"slug":22,"type":16},{"name":1850,"slug":1851,"type":16},{"name":1853,"slug":1854,"type":16},{"name":1856,"slug":1857,"type":16},"2026-07-12T08:36:48.104182",{"slug":1906,"name":1906,"fn":1841,"description":1842,"org":1907,"tags":1908,"stars":1835,"repoUrl":1836,"updatedAt":1914},"dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1909,1910,1911,1912,1913],{"name":21,"slug":22,"type":16},{"name":1850,"slug":1851,"type":16},{"name":1877,"slug":1878,"type":16},{"name":1853,"slug":1854,"type":16},{"name":1856,"slug":1857,"type":16},"2026-07-12T08:36:36.374512",{"slug":1916,"name":1916,"fn":1917,"description":1918,"org":1919,"tags":1920,"stars":1931,"repoUrl":1932,"updatedAt":1933},"cost-efficiency-analyzer","analyze cost efficiency and expenses","Analyzes cost structure, cost efficiency, and expense management from P&L data. Use when the user asks about costs, expenses, COGS, operating expenses, cost ratios, cost control, spending efficiency, margin compression from cost side, or wants to understand where money is going. Also use for \"are we spending too much\", \"cost breakdown\", \"expense analysis\", or \"how efficient are our operations\". NOT for revenue or top-line analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1921,1924,1927,1928],{"name":1922,"slug":1923,"type":16},"Accounting","accounting",{"name":1925,"slug":1926,"type":16},"Analytics","analytics",{"name":1783,"slug":1784,"type":16},{"name":1929,"slug":1930,"type":16},"Finance","finance",3176,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fagentcore-samples","2026-07-12T08:40:03.29555",{"slug":1935,"name":1935,"fn":1936,"description":1937,"org":1938,"tags":1939,"stars":1931,"repoUrl":1932,"updatedAt":1948},"executive-financial-briefing","generate executive financial briefings","Generates a concise executive-level financial briefing or summary suitable for a CEO, CFO, or board presentation. Use when the user asks for a summary, briefing, executive summary, board update, financial overview, financial health check, or \"how is the business doing\". Covers the full P&L picture in one page. Also use for \"give me the highlights\", \"what do I need to know\", or \"quick financial update\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1940,1941,1942,1945],{"name":21,"slug":22,"type":16},{"name":1929,"slug":1930,"type":16},{"name":1943,"slug":1944,"type":16},"Management","management",{"name":1946,"slug":1947,"type":16},"Reporting","reporting","2026-07-12T08:40:02.066471",{"slug":1950,"name":1950,"fn":1951,"description":1952,"org":1953,"tags":1954,"stars":1931,"repoUrl":1932,"updatedAt":1963},"multi-quarter-trend-analysis","analyze multi-quarter financial trends","Analyzes financial trends across multiple quarters by comparing P&L metrics over time. Use when the user wants to see trends, patterns, trajectories, or directional movement across 3 or more quarters. Also use for \"how are we trending\", \"show me the trend\", \"track performance over time\", \"quarter over quarter comparison across all quarters\", or any multi-period longitudinal analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1955,1956,1957,1960],{"name":1925,"slug":1926,"type":16},{"name":1929,"slug":1930,"type":16},{"name":1958,"slug":1959,"type":16},"Financial Statements","financial-statements",{"name":1961,"slug":1962,"type":16},"Variance Analysis","variance-analysis","2026-07-12T08:40:00.79141",{"slug":1965,"name":1965,"fn":1966,"description":1967,"org":1968,"tags":1969,"stars":1931,"repoUrl":1932,"updatedAt":1978},"pdf","process and manipulate PDF documents","Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text\u002Ftables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting\u002Fdecrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1970,1973,1976],{"name":1971,"slug":1972,"type":16},"Automation","automation",{"name":1974,"slug":1975,"type":16},"Documents","documents",{"name":1977,"slug":1965,"type":16},"PDF","2026-07-12T08:41:44.135656",{"slug":1980,"name":1980,"fn":1981,"description":1982,"org":1983,"tags":1984,"stars":1931,"repoUrl":1932,"updatedAt":1993},"quarterly-kpi-calculator","calculate quarterly financial KPIs","Calculates quarterly financial KPIs from P&L data. P&L figures can be provided directly by the user or fetched from the financial data MCP server. Use when the user wants KPI calculations such as Gross Margin %, EBITDA Margin %, Operating Expense Ratio, or Revenue Growth % QoQ. Also use for quarterly performance review, P&L analysis, or interpreting financial ratios against benchmarks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1985,1986,1989,1990],{"name":1922,"slug":1923,"type":16},{"name":1987,"slug":1988,"type":16},"Data Analysis","data-analysis",{"name":1929,"slug":1930,"type":16},{"name":1991,"slug":1992,"type":16},"KPI","kpi","2026-07-12T08:39:59.54971",150]