@@ -2,11 +2,15 @@ package deploy
2
2
3
3
import (
4
4
"context"
5
+ "time"
6
+
5
7
"github.com/aws/aws-sdk-go/aws"
8
+ "github.com/aws/aws-sdk-go/aws/awserr"
6
9
"github.com/aws/aws-sdk-go/aws/awsutil"
7
10
"github.com/aws/aws-sdk-go/service/ec2"
8
11
"github.com/aws/aws-sdk-go/service/elbv2"
9
12
"k8s.io/apimachinery/pkg/util/sets"
13
+ "k8s.io/apimachinery/pkg/util/wait"
10
14
"sigs.k8s.io/aws-alb-ingress-controller/pkg/cloud"
11
15
"sigs.k8s.io/aws-alb-ingress-controller/pkg/logging"
12
16
)
@@ -91,10 +95,20 @@ func (p *defaultTagProvider) ReconcileEC2Tags(ctx context.Context, ec2ResID stri
91
95
modify , remove := computeTagChangeSet (curTags , desiredTags )
92
96
if len (modify ) > 0 {
93
97
logging .FromContext (ctx ).Info ("modifying tags" , "ID" , ec2ResID , "changes" , awsutil .Prettify (modify ))
94
- if _ , err := p .cloud .EC2 ().CreateTagsWithContext (ctx , & ec2.CreateTagsInput {
95
- Resources : []* string {aws .String (ec2ResID )},
96
- Tags : convertToEC2Tags (modify ),
97
- }); err != nil {
98
+
99
+ if err := wait .PollImmediateUntil (2 * time .Second , func () (done bool , err error ) {
100
+ if _ , err := p .cloud .EC2 ().CreateTagsWithContext (ctx , & ec2.CreateTagsInput {
101
+ Resources : []* string {aws .String (ec2ResID )},
102
+ Tags : convertToEC2Tags (modify ),
103
+ }); err != nil {
104
+ if awsErr , ok := err .(awserr.Error ); ok && awsErr .Code () == "InvalidGroup.NotFound" {
105
+ return false , nil
106
+ }
107
+ return false , err
108
+ }
109
+
110
+ return true , nil
111
+ }, ctx .Done ()); err != nil {
98
112
return err
99
113
}
100
114
logging .FromContext (ctx ).Info ("modified tags" , "ID" , ec2ResID )
0 commit comments