diff --git a/builder/amazonebs/step_create_ami.go b/builder/amazonebs/step_create_ami.go index 27d41c304..81a9a2cbd 100644 --- a/builder/amazonebs/step_create_ami.go +++ b/builder/amazonebs/step_create_ami.go @@ -1,25 +1,42 @@ package amazonebs import ( + "bytes" "fmt" "github.com/mitchellh/goamz/ec2" "github.com/mitchellh/multistep" "github.com/mitchellh/packer/packer" + "text/template" + "time" ) type stepCreateAMI struct{} +type amiNameData struct { + CreateTime string +} + func (s *stepCreateAMI) Run(state map[string]interface{}) multistep.StepAction { config := state["config"].(config) ec2conn := state["ec2"].(*ec2.EC2) instance := state["instance"].(*ec2.Instance) ui := state["ui"].(packer.Ui) + // Parse the name of the AMI + amiNameBuf := new(bytes.Buffer) + tData := amiNameData{ + time.Now().UTC().String(), + } + + t := template.Must(template.New("ami").Parse(config.AMIName)) + t.Execute(amiNameBuf, tData) + amiName := amiNameBuf.String() + // Create the image - ui.Say("Creating the AMI...") + ui.Say(fmt.Sprintf("Creating the AMI: %s", amiName)) createOpts := &ec2.CreateImage{ InstanceId: instance.InstanceId, - Name: config.AMIName, + Name: amiName, } createResp, err := ec2conn.CreateImage(createOpts)