From b78b119a11a67736afd5c301eee7fcbc0e96929a Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Thu, 28 May 2015 08:31:22 -0700 Subject: [PATCH] amazon/*: fix merge issues with lib switch --- builder/amazon/common/access_config.go | 24 ++++++++++--------- builder/amazon/common/block_device.go | 2 -- builder/amazon/common/step_ami_region_copy.go | 18 +++++++------- builder/amazon/ebs/builder.go | 3 ++- builder/amazon/instance/builder.go | 3 ++- 5 files changed, 27 insertions(+), 23 deletions(-) diff --git a/builder/amazon/common/access_config.go b/builder/amazon/common/access_config.go index a5403a3fd..16d5041f3 100644 --- a/builder/amazon/common/access_config.go +++ b/builder/amazon/common/access_config.go @@ -8,6 +8,7 @@ import ( "unicode" "github.com/awslabs/aws-sdk-go/aws" + "github.com/awslabs/aws-sdk-go/aws/credentials" "github.com/mitchellh/packer/template/interpolate" ) @@ -22,16 +23,16 @@ type AccessConfig struct { // Config returns a valid aws.Config object for access to AWS services, or // an error if the authentication and region couldn't be resolved func (c *AccessConfig) Config() (*aws.Config, error) { - credsProvider := aws.DetectCreds(c.AccessKey, c.SecretKey, c.Token) - - creds, err := credsProvider.Credentials() - if err != nil { - return nil, err - } - - c.AccessKey = creds.AccessKeyID - c.SecretKey = creds.SecretAccessKey - c.Token = creds.SessionToken + creds := credentials.NewChainCredentials([]credentials.Provider{ + &credentials.StaticProvider{Value: credentials.Value{ + AccessKeyID: c.AccessKey, + SecretAccessKey: c.SecretKey, + SessionToken: c.Token, + }}, + &credentials.EnvProvider{}, + &credentials.SharedCredentialsProvider{Filename: "", Profile: ""}, + &credentials.EC2RoleProvider{}, + }) region, err := c.Region() if err != nil { @@ -40,7 +41,8 @@ func (c *AccessConfig) Config() (*aws.Config, error) { return &aws.Config{ Region: region, - Credentials: credsProvider, + Credentials: creds, + MaxRetries: 11, }, nil } diff --git a/builder/amazon/common/block_device.go b/builder/amazon/common/block_device.go index f86feff1c..9bd8344a3 100644 --- a/builder/amazon/common/block_device.go +++ b/builder/amazon/common/block_device.go @@ -1,8 +1,6 @@ package common import ( - "fmt" - "github.com/awslabs/aws-sdk-go/aws" "github.com/awslabs/aws-sdk-go/service/ec2" "github.com/mitchellh/packer/template/interpolate" diff --git a/builder/amazon/common/step_ami_region_copy.go b/builder/amazon/common/step_ami_region_copy.go index 88ed1884f..33d67c655 100644 --- a/builder/amazon/common/step_ami_region_copy.go +++ b/builder/amazon/common/step_ami_region_copy.go @@ -5,7 +5,6 @@ import ( "sync" - "github.com/awslabs/aws-sdk-go/aws" "github.com/awslabs/aws-sdk-go/service/ec2" "github.com/mitchellh/multistep" @@ -13,7 +12,8 @@ import ( ) type StepAMIRegionCopy struct { - Regions []string + AccessConfig *AccessConfig + Regions []string } func (s *StepAMIRegionCopy) Run(state multistep.StateBag) multistep.StepAction { @@ -37,7 +37,7 @@ func (s *StepAMIRegionCopy) Run(state multistep.StateBag) multistep.StepAction { go func(region string) { defer wg.Done() - id, err := amiRegionCopy(state, ec2conn.Config.Credentials, ami, region, ec2conn.Config.Region) + id, err := amiRegionCopy(state, s.AccessConfig, ami, region, ec2conn.Config.Region) lock.Lock() defer lock.Unlock() @@ -69,15 +69,17 @@ func (s *StepAMIRegionCopy) Cleanup(state multistep.StateBag) { // amiRegionCopy does a copy for the given AMI to the target region and // returns the resulting ID or error. -func amiRegionCopy(state multistep.StateBag, auth aws.CredentialsProvider, imageId string, +func amiRegionCopy(state multistep.StateBag, config *AccessConfig, imageId string, target string, source string) (string, error) { // Connect to the region where the AMI will be copied to - config := &aws.Config{ - Credentials: auth, - Region: target, + awsConfig, err := config.Config() + if err != nil { + return "", err } - regionconn := ec2.New(config) + awsConfig.Region = target + + regionconn := ec2.New(awsConfig) resp, err := regionconn.CopyImage(&ec2.CopyImageInput{ SourceRegion: &source, SourceImageID: &imageId, diff --git a/builder/amazon/ebs/builder.go b/builder/amazon/ebs/builder.go index a2d393bd5..e4f8eb0b2 100644 --- a/builder/amazon/ebs/builder.go +++ b/builder/amazon/ebs/builder.go @@ -121,7 +121,8 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe &stepModifyInstance{}, &stepCreateAMI{}, &awscommon.StepAMIRegionCopy{ - Regions: b.config.AMIRegions, + AccessConfig: &b.config.AccessConfig, + Regions: b.config.AMIRegions, }, &awscommon.StepModifyAMIAttributes{ Description: b.config.AMIDescription, diff --git a/builder/amazon/instance/builder.go b/builder/amazon/instance/builder.go index 66351aab0..bffd1a97a 100644 --- a/builder/amazon/instance/builder.go +++ b/builder/amazon/instance/builder.go @@ -203,7 +203,8 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe }, &StepRegisterAMI{}, &awscommon.StepAMIRegionCopy{ - Regions: b.config.AMIRegions, + AccessConfig: &b.config.AccessConfig, + Regions: b.config.AMIRegions, }, &awscommon.StepModifyAMIAttributes{ Description: b.config.AMIDescription,