Skip to content

Commit

Permalink
move session creation out of SSMStore constructor for reuse
Browse files Browse the repository at this point in the history
  • Loading branch information
Daniel Fuentes committed Aug 2, 2018
1 parent 7c1c368 commit d1a43b5
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 24 deletions.
40 changes: 40 additions & 0 deletions store/shared.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package store

import (
"os"

"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/ec2metadata"
"github.com/aws/aws-sdk-go/aws/session"
)

const (
RegionEnvVar = "CHAMBER_AWS_REGION"
)

func getSession(numRetries int) (*session.Session, *string) {
var region *string

if regionOverride, ok := os.LookupEnv(RegionEnvVar); ok {
region = aws.String(regionOverride)
}
retSession := session.Must(session.NewSessionWithOptions(
session.Options{
Config: aws.Config{
Region: region,
},
SharedConfigState: session.SharedConfigEnable,
},
))

// If region is still not set, attempt to determine it via ec2 metadata API
if aws.StringValue(retSession.Config.Region) == "" {
session := session.New()
ec2metadataSvc := ec2metadata.New(session)
if regionOverride, err := ec2metadataSvc.Region(); err == nil {
region = aws.String(regionOverride)
}
}

return retSession, region
}
25 changes: 1 addition & 24 deletions store/ssmstore.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ import (

"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/ec2metadata"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/ssm"
"github.com/aws/aws-sdk-go/service/ssm/ssmiface"
)
Expand Down Expand Up @@ -40,29 +38,8 @@ type SSMStore struct {

// NewSSMStore creates a new SSMStore
func NewSSMStore(numRetries int) *SSMStore {
var region *string
ssmSession, region := getSession(numRetries)

if regionOverride, ok := os.LookupEnv("CHAMBER_AWS_REGION"); ok {
region = aws.String(regionOverride)
}
ssmSession := session.Must(session.NewSessionWithOptions(
session.Options{
Config: aws.Config{
Region: region,
},
SharedConfigState: session.SharedConfigEnable,
},
))

// If region is still not set, attempt to determine it via ec2 metadata API
region = nil
if aws.StringValue(ssmSession.Config.Region) == "" {
session := session.New()
ec2metadataSvc := ec2metadata.New(session)
if regionOverride, err := ec2metadataSvc.Region(); err == nil {
region = aws.String(regionOverride)
}
}
svc := ssm.New(ssmSession, &aws.Config{
MaxRetries: aws.Int(numRetries),
Region: region,
Expand Down

0 comments on commit d1a43b5

Please sign in to comment.