amazon/*: fix merge issues with lib switch

This commit is contained in:
Mitchell Hashimoto 2015-05-28 08:31:22 -07:00
parent 44b980e659
commit b78b119a11
5 changed files with 27 additions and 23 deletions

View File

@ -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
}

View File

@ -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"

View File

@ -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,6 +12,7 @@ import (
)
type StepAMIRegionCopy struct {
AccessConfig *AccessConfig
Regions []string
}
@ -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,

View File

@ -121,6 +121,7 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe
&stepModifyInstance{},
&stepCreateAMI{},
&awscommon.StepAMIRegionCopy{
AccessConfig: &b.config.AccessConfig,
Regions: b.config.AMIRegions,
},
&awscommon.StepModifyAMIAttributes{

View File

@ -203,6 +203,7 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe
},
&StepRegisterAMI{},
&awscommon.StepAMIRegionCopy{
AccessConfig: &b.config.AccessConfig,
Regions: b.config.AMIRegions,
},
&awscommon.StepModifyAMIAttributes{