Marketplace
aws-ec2-deployment
Launch, configure, and manage EC2 instances with best practices
$ インストール
git clone https://github.com/pluginagentmarketplace/custom-plugin-aws /tmp/custom-plugin-aws && cp -r /tmp/custom-plugin-aws/skills/aws-ec2-deployment ~/.claude/skills/custom-plugin-aws// tip: Run this command in your terminal to install the skill
SKILL.md
name: aws-ec2-deployment description: Launch, configure, and manage EC2 instances with best practices sasmp_version: "1.3.0" bonded_agent: 02-aws-compute bond_type: PRIMARY_BOND
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
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
#!/bin/bash
set -e
yum update -y
yum install -y docker
systemctl enable docker
systemctl start docker
Retry Logic
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
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
Repository

pluginagentmarketplace
Author
pluginagentmarketplace/custom-plugin-aws/skills/aws-ec2-deployment
1
Stars
0
Forks
Updated1d ago
Added1w ago