1
1
package checkawssqsqueuesize
2
2
3
3
import (
4
+ "context"
4
5
"errors"
5
6
"fmt"
6
7
"os"
7
8
"strconv"
8
9
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"
13
15
"github.com/jessevdk/go-flags"
14
16
"github.com/mackerelio/checkers"
15
17
)
@@ -32,51 +34,54 @@ var opts struct {
32
34
33
35
const sqsAttributeOfQueueSize = "ApproximateNumberOfMessages"
34
36
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
42
39
if awsAccessKeyID != "" && awsSecretAccessKey != "" {
43
- config = config .WithCredentials (credentials .NewStaticCredentials (awsAccessKeyID , awsSecretAccessKey , "" ))
40
+ opts = append ( opts , config .WithCredentialsProvider (credentials .NewStaticCredentialsProvider (awsAccessKeyID , awsSecretAccessKey , "" ) ))
44
41
}
45
42
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
47
49
}
48
- return sqs .New (sess , config ), nil
50
+
51
+ return sqs .NewFromConfig (cfg ), nil
49
52
}
50
53
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 )
53
56
if err != nil {
54
57
return - 1 , err
55
58
}
56
59
57
60
// Get queue url
58
- q , err := sqsClient .GetQueueUrl (& sqs.GetQueueUrlInput {
61
+ q , err := sqsClient .GetQueueUrl (ctx , & sqs.GetQueueUrlInput {
59
62
QueueName : aws .String (queueName ),
60
63
})
61
64
if err != nil {
62
65
return - 1 , err
63
66
}
64
67
65
68
// 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
+ },
69
74
})
70
75
if err != nil {
71
76
return - 1 , err
72
77
}
73
78
74
79
// Queue size
75
80
sizeStr , ok := attr .Attributes [sqsAttributeOfQueueSize ]
76
- if ! ok || sizeStr == nil {
81
+ if ! ok {
77
82
return - 1 , errors .New ("attribute not found" )
78
83
}
79
- size , err := strconv .Atoi (* sizeStr )
84
+ size , err := strconv .Atoi (sizeStr )
80
85
if err != nil {
81
86
return - 1 , err
82
87
}
@@ -85,12 +90,14 @@ func getSqsQueueSize(region, awsAccessKeyID, awsSecretAccessKey, queueName strin
85
90
}
86
91
87
92
func run (args []string ) * checkers.Checker {
93
+ ctx := context .Background ()
94
+
88
95
_ , err := flags .ParseArgs (& opts , args )
89
96
if err != nil {
90
97
os .Exit (1 )
91
98
}
92
99
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 )
94
101
if err != nil {
95
102
return checkers .NewChecker (checkers .UNKNOWN , err .Error ())
96
103
}
0 commit comments