@@ -24,10 +24,9 @@ import (
2424 "sync"
2525 "time"
2626
27- "github.com/aws/aws-sdk-go/aws"
28- "github.com/aws/aws-sdk-go/aws/awserr"
29- "github.com/aws/aws-sdk-go/service/sqs"
30- "github.com/aws/aws-sdk-go/service/sqs/sqsiface"
27+ "github.com/aws/aws-sdk-go-v2/aws"
28+ "github.com/aws/aws-sdk-go-v2/service/sqs"
29+ sqstypes "github.com/aws/aws-sdk-go-v2/service/sqs/types"
3130 "github.com/go-logr/logr"
3231 apierrors "k8s.io/apimachinery/pkg/api/errors"
3332 "k8s.io/klog/v2"
@@ -38,6 +37,7 @@ import (
3837
3938 infrav1 "sigs.k8s.io/cluster-api-provider-aws/v2/api/v1beta2"
4039 "sigs.k8s.io/cluster-api-provider-aws/v2/controllers"
40+ "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/awserrors"
4141 "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/scope"
4242 "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/services/instancestate"
4343 "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/logger"
@@ -52,7 +52,7 @@ const Ec2InstanceStateLabelKey = "ec2-instance-state"
5252type AwsInstanceStateReconciler struct {
5353 client.Client
5454 Log logr.Logger
55- sqsServiceFactory func () sqsiface .SQSAPI
55+ sqsServiceFactory func () instancestate .SQSAPI
5656 queueURLs sync.Map
5757 Endpoints []scope.ServiceEndpoint
5858 WatchFilterValue string
@@ -61,7 +61,7 @@ type AwsInstanceStateReconciler struct {
6161// +kubebuilder:rbac:groups=infrastructure.cluster.x-k8s.io,resources=awsclusters,verbs=get;list;watch
6262// +kubebuilder:rbac:groups=infrastructure.cluster.x-k8s.io,resources=awsmachines,verbs=get;list;watch
6363
64- func (r * AwsInstanceStateReconciler ) getSQSService (region string ) (sqsiface .SQSAPI , error ) {
64+ func (r * AwsInstanceStateReconciler ) getSQSService (region string ) (instancestate .SQSAPI , error ) {
6565 if r .sqsServiceFactory != nil {
6666 return r .sqsServiceFactory (), nil
6767 }
@@ -99,7 +99,7 @@ func (r *AwsInstanceStateReconciler) Reconcile(ctx context.Context, req ctrl.Req
9999
100100 // retrieve queue URL if it isn't already tracked
101101 if _ , ok := r .queueURLs .Load (awsCluster .Name ); ! ok {
102- URL , err := r .getQueueURL (awsCluster )
102+ URL , err := r .getQueueURL (ctx , awsCluster )
103103 if err != nil {
104104 if queueNotFoundError (err ) {
105105 return reconcile.Result {}, nil
@@ -129,7 +129,7 @@ func (r *AwsInstanceStateReconciler) watchQueuesForInstanceEvents() {
129129 awsClusterList := & infrav1.AWSClusterList {}
130130 if err := r .Client .List (ctx , awsClusterList ); err == nil {
131131 for i , cluster := range awsClusterList .Items {
132- if URL , err := r .getQueueURL (& awsClusterList .Items [i ]); err == nil {
132+ if URL , err := r .getQueueURL (ctx , & awsClusterList .Items [i ]); err == nil {
133133 r .queueURLs .Store (cluster .Name , queueParams {region : cluster .Spec .Region , URL : URL })
134134 }
135135 }
@@ -144,7 +144,7 @@ func (r *AwsInstanceStateReconciler) watchQueuesForInstanceEvents() {
144144 r .Log .Error (err , "unable to create SQS client" )
145145 return
146146 }
147- resp , err := sqsSvs .ReceiveMessage (& sqs.ReceiveMessageInput {QueueUrl : aws .String (qp .URL )})
147+ resp , err := sqsSvs .ReceiveMessage (ctx , & sqs.ReceiveMessageInput {QueueUrl : aws .String (qp .URL )})
148148 if err != nil {
149149 r .Log .Error (err , "failed to receive messages" )
150150 return
@@ -160,7 +160,7 @@ func (r *AwsInstanceStateReconciler) watchQueuesForInstanceEvents() {
160160 // TODO: handle errors during process message. We currently deletes the message regardless.
161161 r .processMessage (ctx , m )
162162
163- _ , err = sqsSvs .DeleteMessage (& sqs.DeleteMessageInput {
163+ _ , err = sqsSvs .DeleteMessage (ctx , & sqs.DeleteMessageInput {
164164 QueueUrl : aws .String (qp .URL ),
165165 ReceiptHandle : msg .ReceiptHandle ,
166166 })
@@ -216,13 +216,13 @@ func (r *AwsInstanceStateReconciler) processMessage(ctx context.Context, msg mes
216216}
217217
218218// getQueueURL retrieves the SQS queue URL for a given cluster.
219- func (r * AwsInstanceStateReconciler ) getQueueURL (cluster * infrav1.AWSCluster ) (string , error ) {
219+ func (r * AwsInstanceStateReconciler ) getQueueURL (ctx context. Context , cluster * infrav1.AWSCluster ) (string , error ) {
220220 sqsSvs , err := r .getSQSService (cluster .Spec .Region )
221221 if err != nil {
222222 return "" , err
223223 }
224224 queueName := instancestate .GenerateQueueName (cluster .Name )
225- resp , err := sqsSvs .GetQueueUrl (& sqs.GetQueueUrlInput {QueueName : aws .String (queueName )})
225+ resp , err := sqsSvs .GetQueueUrl (ctx , & sqs.GetQueueUrlInput {QueueName : aws .String (queueName )})
226226
227227 if err != nil {
228228 return "" , err
@@ -232,12 +232,11 @@ func (r *AwsInstanceStateReconciler) getQueueURL(cluster *infrav1.AWSCluster) (s
232232}
233233
234234func queueNotFoundError (err error ) bool {
235- if aerr , ok := err .(awserr.Error ); ok {
236- if aerr .Code () == sqs .ErrCodeQueueDoesNotExist {
237- return true
238- }
235+ smithyErr := awserrors .ParseSmithyError (err )
236+ if smithyErr == nil {
237+ return false
239238 }
240- return false
239+ return smithyErr . ErrorCode () == ( & sqstypes. QueueDoesNotExist {}). ErrorCode ()
241240}
242241
243242type queueParams struct {
0 commit comments