{"id":"1eaffe56-14dd-43b2-9006-5ebca6421e27","shortId":"KBrcvc","kind":"skill","title":"ec2","tagline":"AWS EC2 virtual machine management — instances, security groups, key pairs, AMIs, EBS volumes, Auto Scaling Groups, Spot Instances, Session Manager, placement groups, and instance lifecycle automation.  Trigger on ANY of these, even when EC2 isn't named explicitly: - Launching or","description":"# AWS EC2\n\nAmazon Elastic Compute Cloud (EC2) provides resizable compute capacity in the cloud.\n\n**Advanced patterns** (Auto Scaling, Spot Fleets, Session Manager, Instance Connect, IMDS, Placement Groups, scheduled scaling): see [instance-management.md](instance-management.md).\n\n## Table of Contents\n\n- [Core Concepts](#core-concepts)\n- [Common Patterns](#common-patterns)\n- [CLI Reference](#cli-reference)\n- [Best Practices](#best-practices)\n- [Troubleshooting](#troubleshooting)\n- [References](#references)\n\n## Core Concepts\n\n### Instance Types\n\n| Category | Example | Use Case |\n|----------|---------|----------|\n| General Purpose | t3, m6i, t4g (Graviton) | Web servers, dev environments |\n| Compute Optimized | c6i, c7g (Graviton) | Batch processing, gaming |\n| Memory Optimized | r6i, r7g (Graviton) | Databases, caching |\n| Storage Optimized | i3, d3 | Data warehousing |\n| Accelerated | p4d, g5 | ML, graphics |\n\nGraviton (ARM) instances (t4g, m7g, c7g, r7g) are ~20% cheaper than x86 equivalents for the same performance — worth considering for new workloads.\n\n### Purchasing Options\n\n| Option | Description |\n|--------|-------------|\n| On-Demand | Pay by the hour/second |\n| Reserved | 1-3 year commitment, up to 72% discount |\n| Spot | Unused capacity, up to 90% discount — can be interrupted with 2-minute notice |\n| Savings Plans | Flexible commitment-based discount |\n\n### AMI (Amazon Machine Image)\n\nTemplate containing OS, software, and configuration for launching instances. Use SSM Parameter Store to look up the latest official AMIs rather than hardcoding IDs:\n\n```bash\n# Latest Amazon Linux 2 AMI\naws ssm get-parameter \\\n  --name /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 \\\n  --query 'Parameter.Value' --output text\n\n# Latest Amazon Linux 2023\naws ssm get-parameter \\\n  --name /aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64 \\\n  --query 'Parameter.Value' --output text\n\n# Latest Ubuntu 22.04\naws ssm get-parameter \\\n  --name /aws/service/canonical/ubuntu/server/22.04/stable/current/amd64/hvm/ebs-gp2/ami-id \\\n  --query 'Parameter.Value' --output text\n```\n\n### Security Groups\n\nVirtual firewalls controlling inbound and outbound traffic. Changes take effect immediately — no restart required.\n\n## Common Patterns\n\n### Launch an Instance\n\n```bash\n# Create key pair\naws ec2 create-key-pair \\\n  --key-name my-key \\\n  --query 'KeyMaterial' \\\n  --output text > my-key.pem\nchmod 400 my-key.pem\n\n# Create security group\naws ec2 create-security-group \\\n  --group-name web-server-sg \\\n  --description \"Web server security group\" \\\n  --vpc-id vpc-12345678\n\n# Allow SSH and HTTP\naws ec2 authorize-security-group-ingress \\\n  --group-id sg-12345678 \\\n  --protocol tcp \\\n  --port 22 \\\n  --cidr 10.0.0.0/8\n\naws ec2 authorize-security-group-ingress \\\n  --group-id sg-12345678 \\\n  --protocol tcp \\\n  --port 80 \\\n  --cidr 0.0.0.0/0\n\n# Launch instance\naws ec2 run-instances \\\n  --image-id ami-0123456789abcdef0 \\\n  --instance-type t3.micro \\\n  --key-name my-key \\\n  --security-group-ids sg-12345678 \\\n  --subnet-id subnet-12345678 \\\n  --associate-public-ip-address \\\n  --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=web-server}]'\n\n# Wait until running, then get IP\naws ec2 wait instance-running --instance-ids i-1234567890abcdef0\naws ec2 describe-instances \\\n  --instance-ids i-1234567890abcdef0 \\\n  --query 'Reservations[].Instances[].PublicIpAddress' --output text\n```\n\n**boto3:**\n\n```python\nimport boto3\n\nec2 = boto3.resource('ec2')\n\ninstances = ec2.create_instances(\n    ImageId='ami-0123456789abcdef0',\n    InstanceType='t3.micro',\n    KeyName='my-key',\n    SecurityGroupIds=['sg-12345678'],\n    SubnetId='subnet-12345678',\n    MinCount=1,\n    MaxCount=1,\n    TagSpecifications=[{\n        'ResourceType': 'instance',\n        'Tags': [{'Key': 'Name', 'Value': 'web-server'}]\n    }]\n)\n\ninstance = instances[0]\ninstance.wait_until_running()\ninstance.reload()\nprint(f\"Instance ID: {instance.id}\")\nprint(f\"Public IP: {instance.public_ip_address}\")\n```\n\n### User Data Script\n\n> **OS package manager note:**\n> - **Amazon Linux 2**: use `amazon-linux-extras install nginx1 -y` — `yum install nginx` fails because nginx is not in the default AL2 repos\n> - **Amazon Linux 2023**: use `dnf install -y nginx`\n> - **Ubuntu**: use `apt-get install -y nginx`\n> - **Amazon Linux 2 / RHEL**: `httpd` (Apache) is always available via `yum install -y httpd`\n\n```bash\n# Amazon Linux 2 — nginx via amazon-linux-extras\naws ec2 run-instances \\\n  --image-id ami-0123456789abcdef0 \\\n  --instance-type t3.micro \\\n  --key-name my-key \\\n  --security-group-ids sg-12345678 \\\n  --subnet-id subnet-12345678 \\\n  --user-data '#!/bin/bash\namazon-linux-extras install nginx1 -y\nsystemctl start nginx\nsystemctl enable nginx\n'\n\n# Amazon Linux 2 — httpd (Apache, simpler alternative)\n# --user-data '#!/bin/bash\n# yum install -y httpd\n# systemctl start httpd\n# systemctl enable httpd\n# echo \"<h1>Hello from $(hostname -f)</h1>\" > /var/www/html/index.html\n# '\n```\n\n### Attach IAM Role\n\n```bash\n# Create instance profile\naws iam create-instance-profile \\\n  --instance-profile-name web-server-profile\n\naws iam add-role-to-instance-profile \\\n  --instance-profile-name web-server-profile \\\n  --role-name web-server-role\n\n# Launch with profile\naws ec2 run-instances \\\n  --image-id ami-0123456789abcdef0 \\\n  --instance-type t3.micro \\\n  --iam-instance-profile Name=web-server-profile \\\n  ...\n```\n\n### Create AMI from Instance\n\n```bash\naws ec2 create-image \\\n  --instance-id i-1234567890abcdef0 \\\n  --name \"my-custom-ami-$(date +%Y%m%d)\" \\\n  --description \"Custom AMI with web server\" \\\n  --no-reboot\n```\n\n### Auto Scaling Group with Spot (Modern Approach)\n\nThe recommended way to use Spot Instances at scale is via Auto Scaling Groups with a mixed-instances policy — not the legacy `request-spot-instances` API. This supports instance diversification to minimize interruptions.\n\nSee [instance-management.md](instance-management.md) for the full setup. Quick example:\n\n```bash\n# 1. Create launch template with IMDSv2\naws ec2 create-launch-template \\\n  --launch-template-name my-lt \\\n  --launch-template-data '{\n    \"ImageId\": \"ami-0123456789abcdef0\",\n    \"SecurityGroupIds\": [\"sg-12345678\"],\n    \"IamInstanceProfile\": {\"Name\": \"my-profile\"},\n    \"MetadataOptions\": {\"HttpTokens\": \"required\", \"HttpEndpoint\": \"enabled\"}\n  }'\n\n# 2. Create ASG with mixed-instances (Spot + On-Demand diversification)\naws autoscaling create-auto-scaling-group \\\n  --auto-scaling-group-name my-asg \\\n  --min-size 0 --max-size 20 --desired-capacity 2 \\\n  --vpc-zone-identifier \"subnet-111,subnet-222\" \\\n  --mixed-instances-policy '{\n    \"LaunchTemplate\": {\n      \"LaunchTemplateSpecification\": {\"LaunchTemplateName\": \"my-lt\", \"Version\": \"$Latest\"},\n      \"Overrides\": [\n        {\"InstanceType\": \"c5.xlarge\"},\n        {\"InstanceType\": \"c5.2xlarge\"},\n        {\"InstanceType\": \"c5a.xlarge\"}\n      ]\n    },\n    \"InstancesDistribution\": {\n      \"OnDemandBaseCapacity\": 0,\n      \"OnDemandPercentageAboveBaseCapacity\": 0,\n      \"SpotAllocationStrategy\": \"capacity-optimized\"\n    }\n  }'\n```\n\n### EBS Volume Management\n\n```bash\n# Create volume\naws ec2 create-volume \\\n  --availability-zone us-east-1a \\\n  --size 100 \\\n  --volume-type gp3 \\\n  --iops 3000 \\\n  --throughput 125 \\\n  --encrypted\n\n# Attach to instance\naws ec2 attach-volume \\\n  --volume-id vol-12345678 \\\n  --instance-id i-1234567890abcdef0 \\\n  --device /dev/sdf\n\n# Create snapshot\naws ec2 create-snapshot \\\n  --volume-id vol-12345678 \\\n  --description \"Daily backup\"\n```\n\n## CLI Reference\n\n### Instance Management\n\n| Command | Description |\n|---------|-------------|\n| `aws ec2 run-instances` | Launch instances |\n| `aws ec2 describe-instances` | List instances |\n| `aws ec2 start-instances` | Start stopped instances |\n| `aws ec2 stop-instances` | Stop running instances |\n| `aws ec2 reboot-instances` | Reboot instances |\n| `aws ec2 terminate-instances` | Terminate instances |\n| `aws ec2 modify-instance-attribute` | Modify instance settings |\n\n### Security Groups\n\n| Command | Description |\n|---------|-------------|\n| `aws ec2 create-security-group` | Create security group |\n| `aws ec2 describe-security-groups` | List security groups |\n| `aws ec2 authorize-security-group-ingress` | Add inbound rule |\n| `aws ec2 revoke-security-group-ingress` | Remove inbound rule |\n| `aws ec2 authorize-security-group-egress` | Add outbound rule |\n\n### AMIs\n\n| Command | Description |\n|---------|-------------|\n| `aws ec2 describe-images` | List AMIs |\n| `aws ec2 create-image` | Create AMI from instance |\n| `aws ec2 copy-image` | Copy AMI to another region |\n| `aws ec2 deregister-image` | Delete AMI |\n\n### EBS Volumes\n\n| Command | Description |\n|---------|-------------|\n| `aws ec2 create-volume` | Create EBS volume |\n| `aws ec2 attach-volume` | Attach to instance |\n| `aws ec2 detach-volume` | Detach from instance |\n| `aws ec2 create-snapshot` | Create snapshot |\n| `aws ec2 modify-volume` | Resize/modify volume |\n\n## Best Practices\n\n### Security\n\n- **Use IAM roles** instead of access keys on instances\n- **Restrict security groups** — principle of least privilege\n- **Use private subnets** for backend instances\n- **Enable IMDSv2** to prevent SSRF attacks\n- **Encrypt EBS volumes** at rest\n\n```bash\n# Require IMDSv2 on existing instance\naws ec2 modify-instance-metadata-options \\\n  --instance-id i-1234567890abcdef0 \\\n  --http-tokens required \\\n  --http-endpoint enabled\n```\n\n### Performance\n\n- **Right-size instances** — monitor and adjust\n- **Use EBS-optimized instances**\n- **Choose appropriate EBS volume type** (gp3 is the default good choice; io2 for high IOPS)\n- **Use placement groups** for low-latency networking (see instance-management.md)\n\n### Cost Optimization\n\n- **Use Spot Instances** for fault-tolerant workloads (batch, ML training, CI)\n- **Stop/terminate unused instances**\n- **Use Reserved Instances or Savings Plans** for steady-state workloads\n- **Delete unused EBS volumes and snapshots**\n- **Consider Graviton (t4g, m7g, c7g)** — ~20% cheaper for same performance\n\n### Reliability\n\n- **Use Auto Scaling Groups** for high availability (see instance-management.md)\n- **Deploy across multiple AZs**\n- **Use Elastic Load Balancer** for traffic distribution\n- **Implement health checks**\n\n## Troubleshooting\n\n### Cannot SSH to Instance\n\n**First: identify the error type — it points to different root causes:**\n\n| Error | What it means | Primary suspects |\n|-------|--------------|-----------------|\n| `Connection refused` | Network is reachable, but SSH daemon is not listening | sshd crashed, sshd not installed, OS firewall (ufw/iptables) blocking, wrong port |\n| `Connection timed out` | Packets never arrive | Security group blocks port 22, NACL blocks traffic, no public IP, wrong IP |\n| `Permission denied` | Connected, but auth failed | Wrong key file, wrong username, key not authorized |\n\n**Common username by OS:**\n\n| OS | Default SSH user |\n|----|-----------------|\n| Amazon Linux 2 / 2023 | `ec2-user` |\n| Ubuntu | `ubuntu` |\n| Debian | `admin` |\n| CentOS / RHEL | `ec2-user` or `centos` |\n| Windows | `Administrator` |\n\n**Diagnostic commands:**\n\n```bash\n# 1. Check instance state and public IP\naws ec2 describe-instances \\\n  --instance-ids i-1234567890abcdef0 \\\n  --query \"Reservations[].Instances[].{State:State.Name,PublicIP:PublicIpAddress,StatusChecks:State.Name}\"\n\n# 2. Check instance status (system + instance checks)\naws ec2 describe-instance-status --instance-ids i-1234567890abcdef0\n\n# 3. Check security group rules for port 22\naws ec2 describe-security-groups \\\n  --group-ids sg-12345678 \\\n  --query \"SecurityGroups[].IpPermissions[?ToPort==\\`22\\`]\"\n\n# 4. Get console output to see boot logs, sshd errors, OOM events\naws ec2 get-console-output \\\n  --instance-id i-1234567890abcdef0 \\\n  --latest \\\n  --query Output --output text\n```\n\n**If connection refused — get inside via Session Manager to fix sshd:**\n\n```bash\n# Requires SSM agent on instance + AmazonSSMManagedInstanceCore policy\naws ssm start-session --target i-1234567890abcdef0\n\n# Once inside, diagnose:\nsystemctl status ssh        # Ubuntu\nsystemctl status sshd       # Amazon Linux\ndf -h                       # Check disk full\nsudo sshd -t                # Test sshd config for syntax errors\nsudo journalctl -u ssh -n 50  # Recent sshd logs\n```\n\n**Use Session Manager instead of SSH** (no open ports, no key pair needed):\n\n```bash\naws ssm start-session --target i-1234567890abcdef0\n\n# Port forwarding via SSM\naws ssm start-session \\\n  --target i-1234567890abcdef0 \\\n  --document-name AWS-StartPortForwardingSession \\\n  --parameters '{\"portNumber\":[\"22\"],\"localPortNumber\":[\"2222\"]}'\n```\n\n### Instance Won't Start\n\n**Causes:**\n- Reached instance limits\n- Insufficient capacity in AZ\n- EBS volume issue\n- Invalid AMI\n\n```bash\n# Check instance state reason\naws ec2 describe-instances \\\n  --instance-ids i-1234567890abcdef0 \\\n  --query \"Reservations[].Instances[].StateReason\"\n```\n\n### Instance Unreachable\n\n```bash\n# Check instance status\naws ec2 describe-instance-status \\\n  --instance-ids i-1234567890abcdef0\n\n# Get console output\naws ec2 get-console-output \\\n  --instance-id i-1234567890abcdef0 \\\n  --latest\n\n# Get screenshot (for Windows/GUI issues)\naws ec2 get-console-screenshot \\\n  --instance-id i-1234567890abcdef0\n```\n\n### High CPU/Memory\n\n```bash\n# Enable detailed monitoring\naws ec2 monitor-instances \\\n  --instance-ids i-1234567890abcdef0\n\n# Check CloudWatch metrics (cross-platform date command)\nSTART=$(date -u -v-1H +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u --date='1 hour ago' +%Y-%m-%dT%H:%M:%SZ)\naws cloudwatch get-metric-statistics \\\n  --namespace AWS/EC2 \\\n  --metric-name CPUUtilization \\\n  --dimensions Name=InstanceId,Value=i-1234567890abcdef0 \\\n  --start-time \"$START\" \\\n  --end-time \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\" \\\n  --period 300 \\\n  --statistics Average\n```\n\n## References\n\n- [EC2 User Guide](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/)\n- [EC2 API Reference](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/)\n- [EC2 CLI Reference](https://docs.aws.amazon.com/cli/latest/reference/ec2/)\n- [boto3 EC2](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html)","tags":["ec2","aws","agent","skills","itsmostafa","agent-skills","agentic-ai","claude-code","claude-skills","codex","coding-agents"],"capabilities":["skill","source-itsmostafa","skill-ec2","topic-agent-skills","topic-agentic-ai","topic-aws","topic-claude-code","topic-claude-skills","topic-codex","topic-coding-agents"],"categories":["aws-agent-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/itsmostafa/aws-agent-skills/ec2","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add itsmostafa/aws-agent-skills","source_repo":"https://github.com/itsmostafa/aws-agent-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 1100 github stars · SKILL.md body (14,185 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:53:11.451Z","embedding":null,"createdAt":"2026-04-18T21:55:40.139Z","updatedAt":"2026-05-18T18:53:11.451Z","lastSeenAt":"2026-05-18T18:53:11.451Z","tsv":"'-111':928 '-12345678':352,368,387,423,428,503,506,637,642,873,1000,1020,1554 '-222':930 '-3':180 '/0':394 '/8':375 '/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64':263 '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2':248 '/aws/service/canonical/ubuntu/server/22.04/stable/current/amd64/hvm/ebs-gp2/ami-id':277 '/awsec2/latest/apireference/)':1888 '/awsec2/latest/userguide/)':1882 '/bin/bash':646,670 '/cli/latest/reference/ec2/)':1894 '/dev/null':1825 '/dev/sdf':1008 '/v1/documentation/api/latest/reference/services/ec2.html)':1899 '/var/www/html/index.html':686 '0':523,914,952,954 '0.0.0.0':393 '0123456789abcdef0':407,494,621,744,870 '1':179,508,510,844,1490,1829 '10.0.0.0':374 '100':978 '1234567890abcdef0':463,474,773,1006,1267,1507,1535,1583,1616,1674,1687,1731,1753,1768,1786,1803,1856 '125':986 '1a':976 '1h':1817 '2':198,240,549,589,604,662,884,922,1469,1517,1824 '20':153,918,1353 '2023':256,573,1470 '22':372,1436,1543,1559,1696 '22.04':270 '2222':1698 '3':1536 '300':1873 '3000':984 '4':1560 '400':325 '50':1648 '72':185 '80':391 '90':192 'acceler':140 'access':1221 'across':1369 'add':711,1112,1132 'add-role-to-instance-profil':710 'address':433,539 'adjust':1283 'admin':1477 'administr':1486 'advanc':56 'agent':1603 'ago':1831 'al2':569 'allow':353 'altern':666 'alway':594 'amazon':44,209,238,254,547,552,571,587,602,608,648,660,1467,1627 'amazon-linux-extra':551,607,647 'amazonssmmanagedinstancecor':1606 'ami':12,208,231,241,406,493,620,743,759,778,785,869,1135,1144,1151,1160,1170,1715 'ami-0123456789abcdef0':405,492,619,742,868 'anoth':1162 'apach':592,664 'api':826,1884 'approach':798 'appropri':1290 'apt':582 'apt-get':581 'arm':146 'arriv':1431 'asg':886,910 'associ':430 'associate-public-ip-address':429 'attach':687,988,994,1186,1188 'attach-volum':993,1185 'attack':1243 'attribut':1079 'auth':1449 'author':360,379,1108,1128,1458 'authorize-security-group-egress':1127 'authorize-security-group-ingress':359,378,1107 'auto':15,58,792,810,900,904,1360 'auto-scaling-group-nam':903 'autom':27 'autosc':897 'avail':595,971,1365 'availability-zon':970 'averag':1875 'aw':2,42,242,257,271,307,330,357,376,397,452,464,611,694,708,734,763,850,896,965,991,1011,1030,1037,1044,1052,1060,1067,1074,1087,1096,1105,1115,1125,1138,1145,1154,1164,1175,1183,1191,1199,1206,1255,1497,1524,1544,1572,1608,1666,1679,1692,1721,1742,1757,1775,1793,1838 'aws-startportforwardingsess':1691 'aws/ec2':1845 'az':1371,1710 'backend':1236 'backup':1023 'balanc':1375 'base':206 'bash':236,303,601,690,762,843,962,1249,1489,1600,1665,1716,1738,1789 'batch':124,1324 'best':92,95,1213 'best-practic':94 'block':1423,1434,1438 'boot':1566 'boto3':481,484,1895 'boto3.amazonaws.com':1898 'boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html)':1897 'boto3.resource':486 'c5.2xlarge':947 'c5.xlarge':945 'c5a.xlarge':949 'c6i':121 'c7g':122,150,1352 'cach':133 'cannot':1383 'capac':52,189,921,957,1708 'capacity-optim':956 'case':108 'categori':105 'caus':1397,1703 'cento':1478,1484 'chang':291 'cheaper':154,1354 'check':1381,1491,1518,1523,1537,1631,1717,1739,1804 'chmod':324 'choic':1299 'choos':1289 'ci':1327 'cidr':373,392 'cli':87,90,1024,1890 'cli-refer':89 'cloud':47,55 'cloudwatch':1805,1839 'command':1028,1085,1136,1173,1488,1811 'commit':182,205 'commitment-bas':204 'common':82,85,298,1459 'common-pattern':84 'comput':46,51,119 'concept':78,81,102 'config':1639 'configur':217 'connect':65,1404,1426,1447,1590 'consid':163,1348 'consol':1562,1576,1755,1761,1779 'contain':213 'content':76 'control':286 'copi':1157,1159 'copy-imag':1156 'core':77,80,101 'core-concept':79 'cost':1314 'cpu/memory':1788 'cpuutil':1849 'crash':1416 'creat':304,310,327,333,691,697,758,766,845,853,885,899,963,968,1009,1014,1090,1093,1148,1150,1178,1180,1202,1204 'create-auto-scaling-group':898 'create-imag':765,1147 'create-instance-profil':696 'create-key-pair':309 'create-launch-templ':852 'create-security-group':332,1089 'create-snapshot':1013,1201 'create-volum':967,1177 'cross':1808 'cross-platform':1807 'custom':777,784 'd':782 'd3':137 'daemon':1411 'daili':1022 'data':138,541,645,669,866 'databas':132 'date':779,1810,1813,1826,1828,1864 'debian':1476 'default':568,1297,1464 'delet':1169,1342 'demand':173,894 'deni':1446 'deploy':1368 'deregist':1167 'deregister-imag':1166 'describ':467,1040,1099,1141,1500,1527,1547,1724,1745 'describe-imag':1140 'describe-inst':466,1039,1499,1723 'describe-instance-status':1526,1744 'describe-security-group':1098,1546 'descript':170,343,783,1021,1029,1086,1137,1174 'desir':920 'desired-capac':919 'detach':1194,1196 'detach-volum':1193 'detail':1791 'dev':117 'devic':1007 'df':1629 'diagnos':1619 'diagnost':1487 'differ':1395 'dimens':1850 'discount':186,193,207 'disk':1632 'distribut':1378 'diversif':830,895 'dnf':575 'docs.aws.amazon.com':1881,1887,1893 'docs.aws.amazon.com/awsec2/latest/apireference/)':1886 'docs.aws.amazon.com/awsec2/latest/userguide/)':1880 'docs.aws.amazon.com/cli/latest/reference/ec2/)':1892 'document':1689 'document-nam':1688 'dt':1820,1834,1868 'east':975 'eb':13,959,1171,1181,1245,1286,1291,1344,1711 'ebs-optim':1285 'ec2':1,3,35,43,48,308,331,358,377,398,453,465,485,487,612,735,764,851,966,992,1012,1031,1038,1045,1053,1061,1068,1075,1088,1097,1106,1116,1126,1139,1146,1155,1165,1176,1184,1192,1200,1207,1256,1472,1481,1498,1525,1545,1573,1722,1743,1758,1776,1794,1877,1883,1889,1896 'ec2-user':1471,1480 'ec2.create':489 'echo':681 'effect':293 'egress':1131 'elast':45,1373 'enabl':658,679,883,1238,1275,1790 'encrypt':987,1244 'end':1862 'end-tim':1861 'endpoint':1274 'environ':118 'equival':157 'error':1390,1398,1569,1642 'even':33 'event':1571 'exampl':106,842 'exist':1253 'explicit':39 'extra':554,610,650 'f':529,534,685 'fail':561,1450 'fault':1321 'fault-toler':1320 'file':1453 'firewal':285,1421 'first':1387 'fix':1598 'fleet':61 'flexibl':203 'forward':1676 'full':839,1633 'g5':142 'game':126 'general':109 'get':245,260,274,450,583,1561,1575,1592,1754,1760,1770,1778,1841 'get-console-output':1574,1759 'get-console-screenshot':1777 'get-metric-statist':1840 'get-paramet':244,259,273 'good':1298 'gp3':982,1294 'graphic':144 'graviton':114,123,131,145,1349 'group':9,17,23,68,283,329,335,337,347,362,365,381,384,420,634,794,812,902,906,1084,1092,1095,1101,1104,1110,1120,1130,1227,1306,1362,1433,1539,1549,1551 'group-id':364,383,1550 'group-nam':336 'guid':1879 'h':1630,1821,1835,1869 'hardcod':234 'health':1380 'hello':682 'high':1302,1364,1787 'hostnam':684 'hour':1830 'hour/second':177 'http':356,1269,1273 'http-endpoint':1272 'http-token':1268 'httpd':591,600,663,674,677,680 'httpendpoint':882 'httptoken':880 'i-1234567890abcdef0':461,472,771,1004,1265,1505,1533,1581,1614,1672,1685,1729,1751,1766,1784,1801,1854 'i3':136 'iam':688,695,709,750,1217 'iam-instance-profil':749 'iaminstanceprofil':874 'id':235,350,366,385,404,421,426,460,471,531,618,635,640,741,770,998,1003,1018,1264,1504,1532,1552,1580,1728,1750,1765,1783,1800 'identifi':926,1388 'imag':211,403,617,740,767,1142,1149,1158,1168 'image-id':402,616,739 'imageid':491,867 'imd':66 'imdsv2':849,1239,1251 'immedi':294 'implement':1379 'import':483 'inbound':287,1113,1123 'ingress':363,382,1111,1121 'insid':1593,1618 'instal':555,559,576,584,598,651,672,1419 'instanc':7,19,25,64,103,147,220,302,396,401,409,438,456,459,468,470,477,488,490,513,521,522,530,615,623,692,698,701,714,717,738,746,751,761,769,805,817,825,829,890,933,990,1002,1026,1034,1036,1041,1043,1048,1051,1056,1059,1064,1066,1071,1073,1078,1081,1153,1190,1198,1224,1237,1254,1259,1263,1280,1288,1318,1330,1333,1386,1492,1501,1503,1510,1519,1522,1528,1531,1579,1605,1699,1705,1718,1725,1727,1734,1736,1740,1746,1749,1764,1782,1797,1799 'instance-id':458,469,768,1001,1262,1502,1530,1578,1726,1748,1763,1781,1798 'instance-management.md':72,73,835,836,1313,1367 'instance-profile-nam':700,716 'instance-run':455 'instance-typ':408,622,745 'instance.id':532 'instance.public':537 'instance.reload':527 'instance.wait':524 'instanceid':1852 'instancesdistribut':950 'instancetyp':495,944,946,948 'instead':1219,1655 'insuffici':1707 'interrupt':196,833 'invalid':1714 'io2':1300 'iop':983,1303 'ip':432,451,536,538,1442,1444,1496 'ippermiss':1557 'isn':36 'issu':1713,1774 'journalctl':1644 'key':10,305,311,314,318,413,417,440,500,515,627,631,1222,1452,1456,1662 'key-nam':313,412,626 'keymateri':320 'keynam':497 'latenc':1310 'latest':229,237,253,268,942,1584,1769 'launch':40,219,300,395,731,846,854,857,864,1035 'launch-template-data':863 'launch-template-nam':856 'launchtempl':935 'launchtemplatenam':937 'launchtemplatespecif':936 'least':1230 'legaci':821 'lifecycl':26 'limit':1706 'linux':239,255,548,553,572,588,603,609,649,661,1468,1628 'list':1042,1102,1143 'listen':1414 'load':1374 'localportnumb':1697 'log':1567,1651 'look':226 'low':1309 'low-lat':1308 'lt':862,940 'm':781,1819,1822,1833,1836,1867,1870 'm6i':112 'm7g':149,1351 'machin':5,210 'manag':6,21,63,545,961,1027,1596,1654 'max':916 'max-siz':915 'maxcount':509 'mean':1401 'memori':127 'metadata':1260 'metadataopt':879 'metric':1806,1842,1847 'metric-nam':1846 'min':912 'min-siz':911 'mincount':507 'minim':832 'minut':199 'mix':816,889,932 'mixed-inst':815,888 'mixed-instances-polici':931 'ml':143,1325 'modern':797 'modifi':1077,1080,1209,1258 'modify-instance-attribut':1076 'modify-instance-metadata-opt':1257 'modify-volum':1208 'monitor':1281,1792,1796 'monitor-inst':1795 'multipl':1370 'my-asg':908 'my-custom-ami':775 'my-key':316,415,498,629 'my-key.pem':323,326 'my-lt':860,938 'my-profil':876 'n':1647 'nacl':1437 'name':38,247,262,276,315,338,414,441,516,628,703,719,726,753,774,859,875,907,1690,1848,1851 'namespac':1844 'need':1664 'network':1311,1406 'never':1430 'new':165 'nginx':560,563,578,586,605,656,659 'nginx1':556,652 'no-reboot':789 'note':546 'notic':200 'offici':230 'on-demand':171,892 'ondemandbasecapac':951 'ondemandpercentageabovebasecapac':953 'oom':1570 'open':1659 'optim':120,128,135,958,1287,1315 'option':168,169,1261 'os':214,543,1420,1462,1463 'outbound':289,1133 'output':251,266,280,321,479,1563,1577,1586,1587,1756,1762 'overrid':943 'p4d':141 'packag':544 'packet':1429 'pair':11,306,312,1663 'paramet':223,246,261,275,1694 'parameter.value':250,265,279 'pattern':57,83,86,299 'pay':174 'perform':161,1276,1357 'period':1872 'permiss':1445 'placement':22,67,1305 'plan':202,1336 'platform':1809 'point':1393 'polici':818,934,1607 'port':371,390,1425,1435,1542,1660,1675 'portnumb':1695 'practic':93,96,1214 'prevent':1241 'primari':1402 'principl':1228 'print':528,533 'privat':1233 'privileg':1231 'process':125 'profil':693,699,702,707,715,718,723,733,752,757,878 'protocol':369,388 'provid':49 'public':431,535,1441,1495 'publicip':1513 'publicipaddress':478,1514 'purchas':167 'purpos':110 'python':482 'queri':249,264,278,319,475,1508,1555,1585,1732 'quick':841 'r6i':129 'r7g':130,151 'rather':232 'reach':1704 'reachabl':1408 'reason':1720 'reboot':791,1063,1065 'reboot-inst':1062 'recent':1649 'recommend':800 'refer':88,91,99,100,1025,1876,1885,1891 'refus':1405,1591 'region':1163 'reliabl':1358 'remov':1122 'repo':570 'request':823 'request-spot-inst':822 'requir':297,881,1250,1271,1601 'reserv':178,476,1332,1509,1733 'resiz':50 'resize/modify':1211 'resourcetyp':437,512 'rest':1248 'restart':296 'restrict':1225 'revok':1118 'revoke-security-group-ingress':1117 'rhel':590,1479 'right':1278 'right-siz':1277 'role':689,712,725,730,1218 'role-nam':724 'root':1396 'rule':1114,1124,1134,1540 'run':400,448,457,526,614,737,1033,1058 'run-inst':399,613,736,1032 'save':201,1335 'scale':16,59,70,793,807,811,901,905,1361 'schedul':69 'screenshot':1771,1780 'script':542 'secur':8,282,328,334,346,361,380,419,633,1083,1091,1094,1100,1103,1109,1119,1129,1215,1226,1432,1538,1548 'security-group-id':418,632 'securitygroup':1556 'securitygroupid':501,871 'see':71,834,1312,1366,1565 'server':116,341,345,445,520,706,722,729,756,788 'session':20,62,1595,1612,1653,1670,1683 'set':1082 'setup':840 'sg':342,367,386,422,502,636,872,1553 'simpler':665 'size':913,917,977,1279 'skill' 'skill-ec2' 'snapshot':1010,1015,1203,1205,1347 'softwar':215 'source-itsmostafa' 'specif':436 'spot':18,60,187,796,804,824,891,1317 'spotallocationstrategi':955 'ssh':354,1384,1410,1465,1622,1646,1657 'sshd':1415,1417,1568,1599,1626,1635,1638,1650 'ssm':222,243,258,272,1602,1609,1667,1678,1680 'ssrf':1242 'start':655,676,1047,1049,1611,1669,1682,1702,1812,1858,1860 'start-inst':1046 'start-sess':1610,1668,1681 'start-tim':1857 'startportforwardingsess':1693 'state':1340,1493,1511,1719 'state.name':1512,1516 'statereason':1735 'statist':1843,1874 'status':1520,1529,1621,1625,1741,1747 'statuscheck':1515 'steadi':1339 'steady-st':1338 'stop':1050,1055,1057 'stop-inst':1054 'stop/terminate':1328 'storag':134 'store':224 'subnet':425,427,505,639,641,927,929,1234 'subnet-id':424,638 'subnetid':504 'sudo':1634,1643 'support':828 'suspect':1403 'syntax':1641 'system':1521 'systemctl':654,657,675,678,1620,1624 'sz':1823,1837,1871 't3':111 't3.micro':411,496,625,748 't4g':113,148,1350 'tabl':74 'tag':435,439,514 'tag-specif':434 'tagspecif':511 'take':292 'target':1613,1671,1684 'tcp':370,389 'templat':212,847,855,858,865 'termin':1070,1072 'terminate-inst':1069 'test':1637 'text':252,267,281,322,480,1588 'throughput':985 'time':1427,1859,1863 'token':1270 'toler':1322 'topic-agent-skills' 'topic-agentic-ai' 'topic-aws' 'topic-claude-code' 'topic-claude-skills' 'topic-codex' 'topic-coding-agents' 'toport':1558 'traffic':290,1377,1439 'train':1326 'trigger':28 'troubleshoot':97,98,1382 'type':104,410,624,747,981,1293,1391 'u':1645,1814,1827,1865 'ubuntu':269,579,1474,1475,1623 'ufw/iptables':1422 'unreach':1737 'unus':188,1329,1343 'us':974 'us-east-1a':973 'use':107,221,550,574,580,803,1216,1232,1284,1304,1316,1331,1359,1372,1652 'user':540,644,668,1466,1473,1482,1878 'user-data':643,667 'usernam':1455,1460 'v':1816 'v-1h':1815 'valu':442,517,1853 'version':941 'via':596,606,809,1594,1677 'virtual':4,284 'vol':999,1019 'volum':14,960,964,969,980,995,997,1017,1172,1179,1182,1187,1195,1210,1212,1246,1292,1345,1712 'volume-id':996,1016 'volume-typ':979 'vpc':349,351,924 'vpc-id':348 'vpc-zone-identifi':923 'wait':446,454 'wareh':139 'way':801 'web':115,340,344,444,519,705,721,728,755,787 'web-serv':443,518 'web-server-profil':704,720,754 'web-server-rol':727 'web-server-sg':339 'window':1485 'windows/gui':1773 'won':1700 'workload':166,1323,1341 'worth':162 'wrong':1424,1443,1451,1454 'x86':156 'y':557,577,585,599,653,673,780,1818,1832,1866 'year':181 'yum':558,597,671 'zone':925,972","prices":[{"id":"9a60b82e-d9f8-4a25-af66-85126d1d33b9","listingId":"1eaffe56-14dd-43b2-9006-5ebca6421e27","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"itsmostafa","category":"aws-agent-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:55:40.139Z"}],"sources":[{"listingId":"1eaffe56-14dd-43b2-9006-5ebca6421e27","source":"github","sourceId":"itsmostafa/aws-agent-skills/ec2","sourceUrl":"https://github.com/itsmostafa/aws-agent-skills/tree/main/skills/ec2","isPrimary":false,"firstSeenAt":"2026-04-18T21:55:40.139Z","lastSeenAt":"2026-05-18T18:53:11.451Z"},{"listingId":"1eaffe56-14dd-43b2-9006-5ebca6421e27","source":"skills_sh","sourceId":"itsmostafa/aws-agent-skills/ec2","sourceUrl":"https://skills.sh/itsmostafa/aws-agent-skills/ec2","isPrimary":true,"firstSeenAt":"2026-05-07T20:44:58.273Z","lastSeenAt":"2026-05-07T22:43:07.082Z"}],"details":{"listingId":"1eaffe56-14dd-43b2-9006-5ebca6421e27","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"itsmostafa","slug":"ec2","github":{"repo":"itsmostafa/aws-agent-skills","stars":1100,"topics":["agent-skills","agentic-ai","aws","claude-code","claude-skills","codex","coding-agents"],"license":"mit","html_url":"https://github.com/itsmostafa/aws-agent-skills","pushed_at":"2026-05-18T10:27:09Z","description":"AWS Skills for Agents","skill_md_sha":"a0259c388cddf991ed8af9d4680068fd4935df36","skill_md_path":"skills/ec2/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/itsmostafa/aws-agent-skills/tree/main/skills/ec2"},"layout":"multi","source":"github","category":"aws-agent-skills","frontmatter":{"name":"ec2","description":"AWS EC2 virtual machine management — instances, security groups, key pairs, AMIs, EBS volumes, Auto Scaling Groups, Spot Instances, Session Manager, placement groups, and instance lifecycle automation.  Trigger on ANY of these, even when EC2 isn't named explicitly: - Launching or provisioning: \"spin up a server\", \"create a VM\", \"new instance\", \"run-instances\", mention of instance types (t3, m5, c5, r6, g5, p4d, t4g, c7g, etc.) - SSH / connectivity problems: \"connection refused\", \"connection timed out\", \"permission denied publickey\", \"can't connect to my instance\", \"SSH not working\" - Instance management: resize, stop, start, terminate, reboot, change instance type - Cost optimization: stop dev instances overnight, save money on EC2, spot vs on-demand, reserved instances - Auto Scaling: ASG, launch template, mixed instances policy, scale to zero, scheduled scaling - Spot Instances: spot fleet, spot interruption, capacity-optimized, price-capacity-optimized - AMIs and backups: create image, custom AMI, EBS snapshot, DLM lifecycle policy, copy AMI - Monitoring: EC2 CPU utilization, CloudWatch metrics for instance, instance status checks, console output - Access methods: Session Manager, EC2 Instance Connect, bastion host, port forwarding - Security: IMDSv2, instance metadata, IAM role on instance, security group rules - User data and bootstrap scripts, cloud-init"},"skills_sh_url":"https://skills.sh/itsmostafa/aws-agent-skills/ec2"},"updatedAt":"2026-05-18T18:53:11.451Z"}}