Skip to content

Commit 0ef6867

Browse files
committed
upgrade aws-sdk-go-v2 check-aws-sqs-queue-size
1 parent 85b1d8b commit 0ef6867

File tree

3 files changed

+72
-23
lines changed

3 files changed

+72
-23
lines changed

check-aws-sqs-queue-size/lib/check-aws-sqs-queue-size.go

Lines changed: 30 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
package checkawssqsqueuesize
22

33
import (
4+
"context"
45
"errors"
56
"fmt"
67
"os"
78
"strconv"
89

9-
"github.com/aws/aws-sdk-go/aws"
10-
"github.com/aws/aws-sdk-go/aws/credentials"
11-
"github.com/aws/aws-sdk-go/aws/session"
12-
"github.com/aws/aws-sdk-go/service/sqs"
10+
"github.com/aws/aws-sdk-go-v2/aws"
11+
"github.com/aws/aws-sdk-go-v2/config"
12+
"github.com/aws/aws-sdk-go-v2/credentials"
13+
"github.com/aws/aws-sdk-go-v2/service/sqs"
14+
"github.com/aws/aws-sdk-go-v2/service/sqs/types"
1315
"github.com/jessevdk/go-flags"
1416
"github.com/mackerelio/checkers"
1517
)
@@ -32,51 +34,54 @@ var opts struct {
3234

3335
const sqsAttributeOfQueueSize = "ApproximateNumberOfMessages"
3436

35-
func createService(region, awsAccessKeyID, awsSecretAccessKey string) (*sqs.SQS, error) {
36-
sess, err := session.NewSession()
37-
if err != nil {
38-
return nil, err
39-
}
40-
41-
config := aws.NewConfig()
37+
func createService(ctx context.Context, region, awsAccessKeyID, awsSecretAccessKey string) (*sqs.Client, error) {
38+
var opts []func(*config.LoadOptions) error
4239
if awsAccessKeyID != "" && awsSecretAccessKey != "" {
43-
config = config.WithCredentials(credentials.NewStaticCredentials(awsAccessKeyID, awsSecretAccessKey, ""))
40+
opts = append(opts, config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider(awsAccessKeyID, awsSecretAccessKey, "")))
4441
}
4542
if region != "" {
46-
config = config.WithRegion(region)
43+
opts = append(opts, config.WithRegion(region))
44+
}
45+
46+
cfg, err := config.LoadDefaultConfig(ctx, opts...)
47+
if err != nil {
48+
return nil, err
4749
}
48-
return sqs.New(sess, config), nil
50+
51+
return sqs.NewFromConfig(cfg), nil
4952
}
5053

51-
func getSqsQueueSize(region, awsAccessKeyID, awsSecretAccessKey, queueName string) (int, error) {
52-
sqsClient, err := createService(region, awsAccessKeyID, awsSecretAccessKey)
54+
func getSqsQueueSize(ctx context.Context, region, awsAccessKeyID, awsSecretAccessKey, queueName string) (int, error) {
55+
sqsClient, err := createService(ctx, region, awsAccessKeyID, awsSecretAccessKey)
5356
if err != nil {
5457
return -1, err
5558
}
5659

5760
// Get queue url
58-
q, err := sqsClient.GetQueueUrl(&sqs.GetQueueUrlInput{
61+
q, err := sqsClient.GetQueueUrl(ctx, &sqs.GetQueueUrlInput{
5962
QueueName: aws.String(queueName),
6063
})
6164
if err != nil {
6265
return -1, err
6366
}
6467

6568
// Get queue attribute
66-
attr, err := sqsClient.GetQueueAttributes(&sqs.GetQueueAttributesInput{
67-
QueueUrl: q.QueueUrl,
68-
AttributeNames: []*string{aws.String(sqsAttributeOfQueueSize)},
69+
attr, err := sqsClient.GetQueueAttributes(ctx, &sqs.GetQueueAttributesInput{
70+
QueueUrl: q.QueueUrl,
71+
AttributeNames: []types.QueueAttributeName{
72+
types.QueueAttributeNameApproximateNumberOfMessages,
73+
},
6974
})
7075
if err != nil {
7176
return -1, err
7277
}
7378

7479
// Queue size
7580
sizeStr, ok := attr.Attributes[sqsAttributeOfQueueSize]
76-
if !ok || sizeStr == nil {
81+
if !ok {
7782
return -1, errors.New("attribute not found")
7883
}
79-
size, err := strconv.Atoi(*sizeStr)
84+
size, err := strconv.Atoi(sizeStr)
8085
if err != nil {
8186
return -1, err
8287
}
@@ -85,12 +90,14 @@ func getSqsQueueSize(region, awsAccessKeyID, awsSecretAccessKey, queueName strin
8590
}
8691

8792
func run(args []string) *checkers.Checker {
93+
ctx := context.Background()
94+
8895
_, err := flags.ParseArgs(&opts, args)
8996
if err != nil {
9097
os.Exit(1)
9198
}
9299

93-
size, err := getSqsQueueSize(opts.Region, opts.AccessKeyID, opts.SecretAccessKey, opts.QueueName)
100+
size, err := getSqsQueueSize(ctx, opts.Region, opts.AccessKeyID, opts.SecretAccessKey, opts.QueueName)
94101
if err != nil {
95102
return checkers.NewChecker(checkers.UNKNOWN, err.Error())
96103
}

go.mod

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ toolchain go1.23.7
77
require (
88
github.com/StackExchange/wmi v1.2.1
99
github.com/aws/aws-sdk-go v1.53.14
10+
github.com/aws/aws-sdk-go-v2 v1.36.3
11+
github.com/aws/aws-sdk-go-v2/config v1.29.14
12+
github.com/aws/aws-sdk-go-v2/credentials v1.17.67
13+
github.com/aws/aws-sdk-go-v2/service/sqs v1.38.5
1014
github.com/beevik/ntp v1.3.1
1115
github.com/bradfitz/gomemcache v0.0.0-20230905024940-24af94b03874
1216
github.com/elazarl/goproxy v0.0.0-20231117061959-7cc037d33fb5
@@ -39,6 +43,16 @@ require (
3943
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
4044
github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 // indirect
4145
github.com/Microsoft/go-winio v0.6.1 // indirect
46+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 // indirect
47+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 // indirect
48+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 // indirect
49+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect
50+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 // indirect
51+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 // indirect
52+
github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 // indirect
53+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 // indirect
54+
github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 // indirect
55+
github.com/aws/smithy-go v1.22.2 // indirect
4256
github.com/containerd/containerd v1.6.26 // indirect
4357
github.com/containerd/log v0.1.0 // indirect
4458
github.com/davecgh/go-spew v1.1.1 // indirect

go.sum

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,34 @@ github.com/alexbrainman/sspi v0.0.0-20231016080023-1a75b4708caa h1:LHTHcTQiSGT7V
1616
github.com/alexbrainman/sspi v0.0.0-20231016080023-1a75b4708caa/go.mod h1:cEWa1LVoE5KvSD9ONXsZrj0z6KqySlCCNKHlLzbqAt4=
1717
github.com/aws/aws-sdk-go v1.53.14 h1:SzhkC2Pzag0iRW8WBb80RzKdGXDydJR9LAMs2GyKJ2M=
1818
github.com/aws/aws-sdk-go v1.53.14/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
19+
github.com/aws/aws-sdk-go-v2 v1.36.3 h1:mJoei2CxPutQVxaATCzDUjcZEjVRdpsiiXi2o38yqWM=
20+
github.com/aws/aws-sdk-go-v2 v1.36.3/go.mod h1:LLXuLpgzEbD766Z5ECcRmi8AzSwfZItDtmABVkRLGzg=
21+
github.com/aws/aws-sdk-go-v2/config v1.29.14 h1:f+eEi/2cKCg9pqKBoAIwRGzVb70MRKqWX4dg1BDcSJM=
22+
github.com/aws/aws-sdk-go-v2/config v1.29.14/go.mod h1:wVPHWcIFv3WO89w0rE10gzf17ZYy+UVS1Geq8Iei34g=
23+
github.com/aws/aws-sdk-go-v2/credentials v1.17.67 h1:9KxtdcIA/5xPNQyZRgUSpYOE6j9Bc4+D7nZua0KGYOM=
24+
github.com/aws/aws-sdk-go-v2/credentials v1.17.67/go.mod h1:p3C44m+cfnbv763s52gCqrjaqyPikj9Sg47kUVaNZQQ=
25+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 h1:x793wxmUWVDhshP8WW2mlnXuFrO4cOd3HLBroh1paFw=
26+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30/go.mod h1:Jpne2tDnYiFascUEs2AWHJL9Yp7A5ZVy3TNyxaAjD6M=
27+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 h1:ZK5jHhnrioRkUNOc+hOgQKlUL5JeC3S6JgLxtQ+Rm0Q=
28+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34/go.mod h1:p4VfIceZokChbA9FzMbRGz5OV+lekcVtHlPKEO0gSZY=
29+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 h1:SZwFm17ZUNNg5Np0ioo/gq8Mn6u9w19Mri8DnJ15Jf0=
30+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34/go.mod h1:dFZsC0BLo346mvKQLWmoJxT+Sjp+qcVR1tRVHQGOH9Q=
31+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo=
32+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo=
33+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 h1:eAh2A4b5IzM/lum78bZ590jy36+d/aFLgKF/4Vd1xPE=
34+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3/go.mod h1:0yKJC/kb8sAnmlYa6Zs3QVYqaC8ug2AbnNChv5Ox3uA=
35+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 h1:dM9/92u2F1JbDaGooxTq18wmmFzbJRfXfVfy96/1CXM=
36+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15/go.mod h1:SwFBy2vjtA0vZbjjaFtfN045boopadnoVPhu4Fv66vY=
37+
github.com/aws/aws-sdk-go-v2/service/sqs v1.38.5 h1:KNgVWw8qbPzjYnIF1gL0EAszy6VKGnmUK6VSm1huYY8=
38+
github.com/aws/aws-sdk-go-v2/service/sqs v1.38.5/go.mod h1:Bar4MrRxeqdn6XIh8JGfiXuFRmyrrsZNTJotxEJmWW0=
39+
github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 h1:1Gw+9ajCV1jogloEv1RRnvfRFia2cL6c9cuKV2Ps+G8=
40+
github.com/aws/aws-sdk-go-v2/service/sso v1.25.3/go.mod h1:qs4a9T5EMLl/Cajiw2TcbNt2UNo/Hqlyp+GiuG4CFDI=
41+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 h1:hXmVKytPfTy5axZ+fYbR5d0cFmC3JvwLm5kM83luako=
42+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1/go.mod h1:MlYRNmYu/fGPoxBQVvBYr9nyr948aY/WLUvwBMBJubs=
43+
github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 h1:1XuUZ8mYJw9B6lzAkXhqHlJd/XvaX32evhproijJEZY=
44+
github.com/aws/aws-sdk-go-v2/service/sts v1.33.19/go.mod h1:cQnB8CUnxbMU82JvlqjKR2HBOm3fe9pWorWBza6MBJ4=
45+
github.com/aws/smithy-go v1.22.2 h1:6D9hW43xKFrRx/tXXfAlIZc4JI+yQe6snnWcQyxSyLQ=
46+
github.com/aws/smithy-go v1.22.2/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg=
1947
github.com/beevik/ntp v1.3.1 h1:Y/srlT8L1yQr58kyPWFPZIxRL8ttx2SRIpVYJqZIlAM=
2048
github.com/beevik/ntp v1.3.1/go.mod h1:fT6PylBq86Tsq23ZMEe47b7QQrZfYBFPnpzt0a9kJxw=
2149
github.com/bradfitz/gomemcache v0.0.0-20230905024940-24af94b03874 h1:N7oVaKyGp8bttX0bfZGmcGkjz7DLQXhAn3DNd3T0ous=

0 commit comments

Comments
 (0)