diff options
| author | Dave Henderson <dhenderson@gmail.com> | 2017-03-22 20:34:39 -0400 |
|---|---|---|
| committer | Dave Henderson <dhenderson@gmail.com> | 2017-03-22 20:44:21 -0400 |
| commit | 1fcee69f84b43c44e7db5ff412de849fc88a12c2 (patch) | |
| tree | c30c15d7838cc8773d8decb2f40e7e1a46366dee | |
| parent | 5143caaac3af39d62dfe790f122b0f79c202ea84 (diff) | |
Performance fixes for running ec2tag in non-aws environments
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
| -rw-r--r-- | aws/ec2info.go | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/aws/ec2info.go b/aws/ec2info.go index 8b9ab2ad..fbbff53a 100644 --- a/aws/ec2info.go +++ b/aws/ec2info.go @@ -1,11 +1,16 @@ package aws import ( + "net/http" + "time" + "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/ec2" ) +var describerClient InstanceDescriber + // Ec2Info - type Ec2Info struct { describer func() InstanceDescriber @@ -23,8 +28,11 @@ func NewEc2Info() *Ec2Info { metaClient := NewEc2Meta() return &Ec2Info{ describer: func() InstanceDescriber { - region := metaClient.Region() - return ec2Client(region) + if describerClient == nil { + region := metaClient.Region() + describerClient = ec2Client(region) + } + return describerClient }, metaClient: metaClient, cache: make(map[string]interface{}), @@ -34,6 +42,7 @@ func NewEc2Info() *Ec2Info { func ec2Client(region string) (client InstanceDescriber) { config := aws.NewConfig() config = config.WithRegion(region) + config = config.WithHTTPClient(&http.Client{Timeout: 500 * time.Millisecond}) client = ec2.New(session.New(config)) return client } @@ -59,6 +68,8 @@ func (e *Ec2Info) Tag(tag string, def ...string) string { } func (e *Ec2Info) describeInstance() (output *ec2.DescribeInstancesOutput) { + // cache the InstanceDescriber here + e.describer() if e.metaClient.nonAWS { return nil } |
