<< All versions
Skill v1.0.1
currentAutomated scan100/100hashicorp/agent-skills/aws-ami-builder
+2 new
──Details
PublishedAugust 18, 2026 at 12:35 AM
Content Hashsha256:4bbafef8e86e3efc...
Git SHA4451ceca5456
Bump Typepatch
──Files
Files (1 file, 3.6 KB)
SKILL.md3.6 KBactive
SKILL.md · 174 lines · 3.6 KB
version: "1.0.1" name: aws-ami-builder description: Build Amazon Machine Images (AMIs) with Packer using the amazon-ebs builder. Use when creating custom AMIs for EC2 instances. metadata: lifecycle-status: active
AWS AMI Builder
Build Amazon Machine Images (AMIs) using Packer's amazon-ebs builder.
Reference: Amazon EBS Builder
Note: Building AMIs incurs AWS costs (EC2 instances, EBS storage, data transfer). Builds typically take 10-30 minutes depending on provisioning complexity.
Basic AMI Template
hcl
packer {required_plugins {amazon = {source = "github.com/hashicorp/amazon"version = "~> 1.3"}}}variable "region" {type = stringdefault = "us-west-2"}locals {timestamp = regex_replace(timestamp(), "[- TZ:]", "")}source "amazon-ebs" "ubuntu" {region = var.regioninstance_type = "t3.micro"source_ami_filter {filters = {name = "ubuntu/images/*ubuntu-jammy-22.04-amd64-server-*"root-device-type = "ebs"virtualization-type = "hvm"}most_recent = trueowners = ["099720109477"] # Canonical}ssh_username = "ubuntu"ami_name = "my-app-${local.timestamp}"tags = {Name = "my-app"BuildDate = local.timestamp}}build {sources = ["source.amazon-ebs.ubuntu"]provisioner "shell" {inline = ["sudo apt-get update","sudo apt-get upgrade -y",]}}
Common Source AMI Filters
Ubuntu 22.04 LTS
hcl
source_ami_filter {filters = {name = "ubuntu/images/*ubuntu-jammy-22.04-amd64-server-*"root-device-type = "ebs"virtualization-type = "hvm"}most_recent = trueowners = ["099720109477"] # Canonical}
Amazon Linux 2023
hcl
source_ami_filter {filters = {name = "al2023-ami-*-x86_64"root-device-type = "ebs"virtualization-type = "hvm"}most_recent = trueowners = ["amazon"]}
Multi-Region AMI
hcl
source "amazon-ebs" "ubuntu" {region = "us-west-2"instance_type = "t3.micro"source_ami_filter {filters = {name = "ubuntu/images/*ubuntu-jammy-22.04-amd64-server-*"}most_recent = trueowners = ["099720109477"]}ssh_username = "ubuntu"ami_name = "my-app-${local.timestamp}"# Copy to additional regionsami_regions = ["us-east-1", "us-east-2", "eu-west-1"]}
Authentication
Packer uses AWS credential resolution:
- Environment variables:
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY - AWS credentials file:
~/.aws/credentials - IAM instance profile (when running on EC2)
bash
export AWS_ACCESS_KEY_ID="your-access-key"export AWS_SECRET_ACCESS_KEY="your-secret-key"export AWS_REGION="us-west-2"packer build .
Build Commands
bash
# Initialize pluginspacker init .# Validate templatepacker validate .# Build AMIpacker build .# Build with variablespacker build -var "region=us-east-1" .
Common Issues
SSH Timeout
- Ensure security group allows SSH (port 22)
- Verify subnet has internet access
AMI Already Exists
- AMI names must be unique
- Use timestamp in name:
my-app-${local.timestamp}
Volume Size Too Small
- Check source AMI's volume size
- Set
launch_block_device_mappings.volume_sizeaccordingly