Skip to main content

Module: ec2-ami-snapshot

Terraform module to easily generate AMI snapshots to create replica instances

Usage

Create an AWS instance

resource "aws_instance" "default" {
ami = "ami-408c7f28"
instance_type = "t1.micro"

tags = {
Name = "test1"
}
}

Create AMI from an AWS instance. Instance ID is required"

module "tf_ami_from_instance" {
source = "git::https://github.com/cloudposse/tf_ami_from_instance.git?ref=master"
source_instance_id = "${aws_instance.web.id}"
stage = "${var.stage}"
namespace = "${var.namespace}"
name = "${var.name}"
attributes = "${var.attributes}"
tags = "${var.tags}"
}

Caveats

  • Terraform will only keep the latest AMI snapshot (terraform will delete the previously generated AMI) See our Lamda based solution which avoids this pitfall: https://github.com/cloudposse/tf_lambda_ami_backup
  • This is is not compatible with autoscaling groups

Requirements

No requirements.

Providers

NameVersion
awsn/a

Modules

NameSourceVersion
labelgit::https://github.com/cloudposse/tf_label.git0.2.0

Resources

NameType
aws_ami_from_instance.defaultresource

Inputs

NameDescriptionTypeDefaultRequired
attributesAdditional attributes (e.g. policy or role)list(string)[]no
delimiterDelimiter to be used between name, namespace, stage, etc.string"-"no
nameThe Name of the application or solution (e.g. bastion or portal)string""no
namespaceNamespace (e.g. cp or cloudposse)string""no
snapshot_without_rebootn/astring"true"no
source_instance_idn/aanyn/ayes
stageStage (e.g. prod, dev, staging)string""no
tagsAdditional tags (e.g. map('BusinessUnit','XYZ'))map(string){}no

Outputs

NameDescription
ami_idAMI ID depends on the instance type and region in which you're launching your stack. And IDs can change regularly, such as when an AMI is updated with software updates.