diff --git a/builder/amazon/chroot/step_check_ec2.go b/builder/amazon/chroot/step_check_ec2.go index d600e8a8e..4e8d5e6e8 100644 --- a/builder/amazon/chroot/step_check_ec2.go +++ b/builder/amazon/chroot/step_check_ec2.go @@ -1,15 +1,32 @@ package chroot import ( + "fmt" + "github.com/mitchellh/goamz/aws" "github.com/mitchellh/multistep" "github.com/mitchellh/packer/packer" + "log" ) +// StepCheckEC2 verifies that this builder is running on an EC2 instance. type StepCheckEC2 struct{} func (s *StepCheckEC2) Run(state map[string]interface{}) multistep.StepAction { ui := state["ui"].(packer.Ui) + ui.Say("Verifying we're on an EC2 instance...") + id, err := aws.GetMetaData("instance-id") + if err != nil { + log.Printf("Error: %s", err) + err := fmt.Errorf( + "Error retrieving the ID of the instance Packer is running on.\n" + + "Please verify Packer is running on a proper AWS EC2 instance.") + state["error"] = err + ui.Error(err.Error()) + return multistep.ActionHalt + } + log.Printf("Instance ID: %s", string(id)) + return multistep.ActionContinue }