diff --git a/builder/amazon/instance/builder.go b/builder/amazon/instance/builder.go index bb655e629..db1d6c28e 100644 --- a/builder/amazon/instance/builder.go +++ b/builder/amazon/instance/builder.go @@ -74,6 +74,7 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, error) { "-s {{.SecretKey}} " + "-d {{.BundleDirectory}} " + "--batch " + + "--location {{.Region}} " + "--retry" } diff --git a/builder/amazon/instance/step_upload_bundle.go b/builder/amazon/instance/step_upload_bundle.go index e002ff43d..ec654aa61 100644 --- a/builder/amazon/instance/step_upload_bundle.go +++ b/builder/amazon/instance/step_upload_bundle.go @@ -11,6 +11,7 @@ type uploadCmdData struct { BucketName string BundleDirectory string ManifestPath string + Region string SecretKey string } @@ -23,12 +24,20 @@ func (s *StepUploadBundle) Run(state multistep.StateBag) multistep.StepAction { manifestPath := state.Get("manifest_path").(string) ui := state.Get("ui").(packer.Ui) - var err error + region, err := config.Region() + if err != nil { + err := fmt.Errorf("Error retrieving region: %s", err) + state.Put("error", err) + ui.Error(err.Error()) + return multistep.ActionHalt + } + config.BundleUploadCommand, err = config.tpl.Process(config.BundleUploadCommand, uploadCmdData{ AccessKey: config.AccessKey, BucketName: config.S3Bucket, BundleDirectory: config.BundleDestination, ManifestPath: manifestPath, + Region: region.Name, SecretKey: config.SecretKey, }) if err != nil { diff --git a/website/source/docs/builders/amazon-instance.html.markdown b/website/source/docs/builders/amazon-instance.html.markdown index 3135bf322..42e34e48b 100644 --- a/website/source/docs/builders/amazon-instance.html.markdown +++ b/website/source/docs/builders/amazon-instance.html.markdown @@ -273,6 +273,7 @@ sudo -n ec2-upload-bundle \ -s {{.SecretKey}} \ -d {{.BundleDirectory}} \ --batch \ + --location {{.Region}} \ --retry ```