Agent skill

aws-ec2-deployment

Launch, configure, and manage EC2 instances with best practices

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/devops/aws-ec2-deployment-pluginagentmarketpla-custom-plugin-aws-b1e9c35c

SKILL.md

AWS EC2 Deployment Skill

Deploy and manage EC2 instances with production-ready configurations.

Quick Reference

Attribute Value
AWS Service EC2
Complexity Medium
Est. Time 5-15 min
Prerequisites VPC, Security Group, Key Pair

Parameters

Required

Parameter Type Description Validation
instance_type string EC2 instance type Valid type (m6i.large)
ami_id string AMI ID ami-[a-z0-9]{17}
subnet_id string Target subnet subnet-[a-z0-9]{17}
security_group_ids array Security groups Non-empty array

Optional

Parameter Type Default Description
key_name string null SSH key pair name
iam_instance_profile string null IAM role ARN
user_data string null Base64 startup script
ebs_optimized bool true EBS optimization
monitoring bool true Detailed monitoring

Implementation

Launch Instance

bash
aws ec2 run-instances \
  --image-id ami-0abcdef1234567890 \
  --instance-type m6i.large \
  --subnet-id subnet-12345678 \
  --security-group-ids sg-12345678 \
  --key-name my-key \
  --iam-instance-profile Name=MyRole \
  --ebs-optimized \
  --monitoring Enabled=true \
  --metadata-options HttpTokens=required \
  --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=MyServer}]'

User Data Script

bash
#!/bin/bash
set -e
yum update -y
yum install -y docker
systemctl enable docker
systemctl start docker

Retry Logic

python
def launch_with_retry(params, max_retries=3):
    for attempt in range(max_retries):
        try:
            return ec2.run_instances(**params)
        except ec2.exceptions.InsufficientInstanceCapacity:
            params['SubnetId'] = get_alternate_subnet()
            time.sleep(2 ** attempt)
    raise Exception("Failed to launch instance")

Troubleshooting

Common Issues

Symptom Cause Solution
InsufficientInstanceCapacity AZ full Try different AZ
InvalidAMIID AMI not in region Copy AMI
Unauthorized IAM missing Check permissions
Pending forever ENI issue Check subnet IPs

Debug Checklist

  • AMI exists in target region?
  • Subnet has available IPs?
  • Security group allows traffic?
  • Key pair exists?
  • IMDSv2 configured?

Instance Selection Guide

Workload Family Key Feature
Web/API M6i, M7g Balanced
Compute C6i, C7g High CPU
Memory R6i, X2idn High memory
GPU/ML P4d, G5 NVIDIA GPU

Cost Optimization

Strategy Savings
Reserved Instances 30-60%
Savings Plans 30-72%
Spot Instances Up to 90%
Right-sizing 10-50%

Test Template

python
def test_ec2_launch():
    # Arrange
    params = {
        "ImageId": get_latest_amazon_linux_ami(),
        "InstanceType": "t3.micro",
        "MaxCount": 1, "MinCount": 1
    }

    # Act
    response = ec2.run_instances(**params)
    instance_id = response['Instances'][0]['InstanceId']

    # Assert
    waiter = ec2.get_waiter('instance_running')
    waiter.wait(InstanceIds=[instance_id])

    # Cleanup
    ec2.terminate_instances(InstanceIds=[instance_id])

Assets

  • assets/ec2-userdata.sh - Sample user data script

References

Didn't find tool you were looking for?

Be as detailed as possible for better results