Skip to content

Commit 0e33283

Browse files
committed
upgrade aws-sdk-go dependency for cloudwatch from v1 to v2
1 parent 78fbbce commit 0e33283

File tree

4 files changed

+32
-29
lines changed

4 files changed

+32
-29
lines changed

go.mod

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ go 1.17
55
require (
66
github.com/VividCortex/gohistogram v1.0.0
77
github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5
8-
github.com/aws/aws-sdk-go v1.40.45
98
github.com/aws/aws-sdk-go-v2 v1.9.1
109
github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1
1110
github.com/casbin/casbin/v2 v2.37.0

go.sum

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,6 @@ github.com/armon/go-metrics v0.4.0 h1:yCQqn7dwca4ITXb+CbubHmedzaQYHhNhrEXLYUeEe8
6060
github.com/armon/go-metrics v0.4.0/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4=
6161
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
6262
github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
63-
github.com/aws/aws-sdk-go v1.40.45 h1:QN1nsY27ssD/JmW4s83qmSb+uL6DG4GmCDzjmJB4xUI=
64-
github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q=
6563
github.com/aws/aws-sdk-go-v2 v1.9.1 h1:ZbovGV/qo40nrOJ4q8G33AGICzaPI45FHQWJ9650pF4=
6664
github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4=
6765
github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1 h1:w/fPGB0t5rWwA43mux4e9ozFSH5zF1moQemlA131PWc=
@@ -571,7 +569,6 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b
571569
golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8=
572570
golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
573571
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
574-
golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
575572
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
576573
golang.org/x/net v0.0.0-20211216030914-fe4d6282115f h1:hEYJvxw1lSnWIl8X9ofsYMklzaDs90JI2az5YMd4fPM=
577574
golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=

metrics/cloudwatch/cloudwatch.go

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,20 @@ import (
88
"sync"
99
"time"
1010

11-
"github.com/aws/aws-sdk-go/aws"
12-
"github.com/aws/aws-sdk-go/service/cloudwatch"
13-
"github.com/aws/aws-sdk-go/service/cloudwatch/cloudwatchiface"
11+
"github.com/aws/aws-sdk-go-v2/aws"
12+
"github.com/aws/aws-sdk-go-v2/service/cloudwatch"
13+
"github.com/aws/aws-sdk-go-v2/service/cloudwatch/types"
1414

1515
"github.com/go-kit/kit/metrics"
1616
"github.com/go-kit/kit/metrics/generic"
1717
"github.com/go-kit/kit/metrics/internal/lv"
1818
"github.com/go-kit/log"
1919
)
2020

21+
type CloudWatchAPI interface {
22+
PutMetricData(context.Context, *cloudwatch.PutMetricDataInput) (*cloudwatch.PutMetricDataOutput, error)
23+
}
24+
2125
const (
2226
maxConcurrentRequests = 20
2327
maxValuesInABatch = 150
@@ -32,7 +36,7 @@ type CloudWatch struct {
3236
mtx sync.RWMutex
3337
sem chan struct{}
3438
namespace string
35-
svc cloudwatchiface.CloudWatchAPI
39+
svc CloudWatchAPI
3640
counters *lv.Space
3741
gauges *lv.Space
3842
histograms *lv.Space
@@ -85,7 +89,7 @@ func WithConcurrentRequests(n int) Option {
8589
// Namespace is applied to all created metrics and maps to the CloudWatch namespace.
8690
// Callers must ensure that regular calls to Send are performed, either
8791
// manually or with one of the helper methods.
88-
func New(namespace string, svc cloudwatchiface.CloudWatchAPI, options ...Option) *CloudWatch {
92+
func New(namespace string, svc CloudWatchAPI, options ...Option) *CloudWatch {
8993
cw := &CloudWatch{
9094
sem: nil, // set below
9195
namespace: namespace,
@@ -157,11 +161,11 @@ func (cw *CloudWatch) Send() error {
157161
defer cw.mtx.RUnlock()
158162
now := time.Now()
159163

160-
var datums []*cloudwatch.MetricDatum
164+
var datums []types.MetricDatum
161165

162166
cw.counters.Reset().Walk(func(name string, lvs lv.LabelValues, values []float64) bool {
163167
value := sum(values)
164-
datums = append(datums, &cloudwatch.MetricDatum{
168+
datums = append(datums, types.MetricDatum{
165169
MetricName: aws.String(name),
166170
Dimensions: makeDimensions(lvs...),
167171
Value: aws.Float64(value),
@@ -175,7 +179,7 @@ func (cw *CloudWatch) Send() error {
175179
return true
176180
}
177181

178-
datum := &cloudwatch.MetricDatum{
182+
datum := types.MetricDatum{
179183
MetricName: aws.String(name),
180184
Dimensions: makeDimensions(lvs...),
181185
Timestamp: aws.Time(now),
@@ -192,8 +196,8 @@ func (cw *CloudWatch) Send() error {
192196
if len(datum.Values) == maxValuesInABatch {
193197
break
194198
}
195-
datum.Values = append(datum.Values, aws.Float64(value))
196-
datum.Counts = append(datum.Counts, aws.Float64(float64(count)))
199+
datum.Values = append(datum.Values, value)
200+
datum.Counts = append(datum.Counts, float64(count))
197201
}
198202

199203
datums = append(datums, datum)
@@ -217,7 +221,7 @@ func (cw *CloudWatch) Send() error {
217221

218222
for _, perc := range cw.percentiles {
219223
value := histogram.Quantile(perc)
220-
datums = append(datums, &cloudwatch.MetricDatum{
224+
datums = append(datums, types.MetricDatum{
221225
MetricName: aws.String(fmt.Sprintf("%s_%s", name, formatPerc(perc))),
222226
Dimensions: makeDimensions(lvs...),
223227
Value: aws.Float64(value),
@@ -227,22 +231,24 @@ func (cw *CloudWatch) Send() error {
227231
return true
228232
})
229233

230-
var batches [][]*cloudwatch.MetricDatum
234+
var batches [][]types.MetricDatum
231235
for len(datums) > 0 {
232-
var batch []*cloudwatch.MetricDatum
236+
var batch []types.MetricDatum
233237
lim := min(len(datums), maxConcurrentRequests)
234238
batch, datums = datums[:lim], datums[lim:]
235239
batches = append(batches, batch)
236240
}
237241

238242
var errors = make(chan error, len(batches))
239243
for _, batch := range batches {
240-
go func(batch []*cloudwatch.MetricDatum) {
244+
go func(batch []types.MetricDatum) {
241245
cw.sem <- struct{}{}
242246
defer func() {
243247
<-cw.sem
244248
}()
245-
_, err := cw.svc.PutMetricData(&cloudwatch.PutMetricDataInput{
249+
250+
// using TODO context, should be passed in ideally
251+
_, err := cw.svc.PutMetricData(context.TODO(), &cloudwatch.PutMetricDataInput{
246252
Namespace: aws.String(cw.namespace),
247253
MetricData: batch,
248254
})
@@ -349,10 +355,10 @@ func (h *Histogram) Observe(value float64) {
349355
h.obs(h.name, h.lvs, value)
350356
}
351357

352-
func makeDimensions(labelValues ...string) []*cloudwatch.Dimension {
353-
dimensions := make([]*cloudwatch.Dimension, len(labelValues)/2)
358+
func makeDimensions(labelValues ...string) []types.Dimension {
359+
dimensions := make([]types.Dimension, len(labelValues)/2)
354360
for i, j := 0, 0; i < len(labelValues); i, j = i+2, j+1 {
355-
dimensions[j] = &cloudwatch.Dimension{
361+
dimensions[j] = types.Dimension{
356362
Name: aws.String(labelValues[i]),
357363
Value: aws.String(labelValues[i+1]),
358364
}

metrics/cloudwatch/cloudwatch_test.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
package cloudwatch
22

33
import (
4+
"context"
45
"errors"
56
"fmt"
67
"strconv"
78
"sync"
89
"testing"
910

10-
"github.com/aws/aws-sdk-go/service/cloudwatch"
11-
"github.com/aws/aws-sdk-go/service/cloudwatch/cloudwatchiface"
11+
"github.com/aws/aws-sdk-go-v2/service/cloudwatch"
12+
"github.com/aws/aws-sdk-go-v2/service/cloudwatch/types"
1213

1314
"github.com/go-kit/kit/metrics"
1415
"github.com/go-kit/kit/metrics/teststat"
@@ -20,20 +21,20 @@ const metricNameToGenerateError = "metric_name_used_to_throw_an_error"
2021
var errTest = errors.New("test error")
2122

2223
type mockCloudWatch struct {
23-
cloudwatchiface.CloudWatchAPI
24+
CloudWatchAPI
2425
mtx sync.RWMutex
2526
valuesReceived map[string][]float64
26-
dimensionsReceived map[string][]*cloudwatch.Dimension
27+
dimensionsReceived map[string][]types.Dimension
2728
}
2829

2930
func newMockCloudWatch() *mockCloudWatch {
3031
return &mockCloudWatch{
3132
valuesReceived: map[string][]float64{},
32-
dimensionsReceived: map[string][]*cloudwatch.Dimension{},
33+
dimensionsReceived: map[string][]types.Dimension{},
3334
}
3435
}
3536

36-
func (mcw *mockCloudWatch) PutMetricData(input *cloudwatch.PutMetricDataInput) (*cloudwatch.PutMetricDataOutput, error) {
37+
func (mcw *mockCloudWatch) PutMetricData(_ context.Context, input *cloudwatch.PutMetricDataInput) (*cloudwatch.PutMetricDataOutput, error) {
3738
mcw.mtx.Lock()
3839
defer mcw.mtx.Unlock()
3940
for _, datum := range input.MetricData {
@@ -43,7 +44,7 @@ func (mcw *mockCloudWatch) PutMetricData(input *cloudwatch.PutMetricDataInput) (
4344

4445
if len(datum.Values) > 0 {
4546
for _, v := range datum.Values {
46-
mcw.valuesReceived[*datum.MetricName] = append(mcw.valuesReceived[*datum.MetricName], *v)
47+
mcw.valuesReceived[*datum.MetricName] = append(mcw.valuesReceived[*datum.MetricName], v)
4748
}
4849
} else {
4950
mcw.valuesReceived[*datum.MetricName] = append(mcw.valuesReceived[*datum.MetricName], *datum.Value)

0 commit comments

Comments
 (0)