@@ -3,6 +3,7 @@ package elbv2
3
3
import (
4
4
"context"
5
5
"reflect"
6
+ "strings"
6
7
"time"
7
8
8
9
awssdk "github.com/aws/aws-sdk-go-v2/aws"
@@ -29,6 +30,12 @@ var PROTOCOLS_SUPPORTING_LISTENER_ATTRIBUTES = map[elbv2model.Protocol]bool{
29
30
elbv2model .ProtocolTLS : false ,
30
31
}
31
32
33
+ var isolatedRegions = map [string ]bool {
34
+ "us-iso-east-1" : true ,
35
+ "us-iso-west-1" : true ,
36
+ "us-isob-east-1" : true ,
37
+ }
38
+
32
39
// ListenerManager is responsible for create/update/delete Listener resources.
33
40
type ListenerManager interface {
34
41
Create (ctx context.Context , resLS * elbv2model.Listener ) (elbv2model.ListenerStatus , error )
@@ -101,9 +108,12 @@ func (m *defaultListenerManager) Create(ctx context.Context, resLS *elbv2model.L
101
108
}); err != nil {
102
109
return elbv2model.ListenerStatus {}, errors .Wrap (err , "failed to update extra certificates on listener" )
103
110
}
104
- if areListenerAttributesSupported (resLS .Spec .Protocol ) {
105
- if err := m .attributesReconciler .Reconcile (ctx , resLS , sdkLS ); err != nil {
106
- return elbv2model.ListenerStatus {}, err
111
+ listenerARN := awssdk .ToString (sdkLS .Listener .ListenerArn )
112
+ if ! isIsolatedRegion (getRegionFromARN (listenerARN )) {
113
+ if areListenerAttributesSupported (resLS .Spec .Protocol ) {
114
+ if err := m .attributesReconciler .Reconcile (ctx , resLS , sdkLS ); err != nil {
115
+ return elbv2model.ListenerStatus {}, err
116
+ }
107
117
}
108
118
}
109
119
return buildResListenerStatus (sdkLS ), nil
@@ -121,9 +131,12 @@ func (m *defaultListenerManager) Update(ctx context.Context, resLS *elbv2model.L
121
131
if err := m .updateSDKListenerWithExtraCertificates (ctx , resLS , sdkLS , false ); err != nil {
122
132
return elbv2model.ListenerStatus {}, err
123
133
}
124
- if areListenerAttributesSupported (resLS .Spec .Protocol ) {
125
- if err := m .attributesReconciler .Reconcile (ctx , resLS , sdkLS ); err != nil {
126
- return elbv2model.ListenerStatus {}, err
134
+ listenerARN := awssdk .ToString (sdkLS .Listener .ListenerArn )
135
+ if ! isIsolatedRegion (getRegionFromARN (listenerARN )) {
136
+ if areListenerAttributesSupported (resLS .Spec .Protocol ) {
137
+ if err := m .attributesReconciler .Reconcile (ctx , resLS , sdkLS ); err != nil {
138
+ return elbv2model.ListenerStatus {}, err
139
+ }
127
140
}
128
141
}
129
142
return buildResListenerStatus (sdkLS ), nil
@@ -379,3 +392,18 @@ func areListenerAttributesSupported(protocol elbv2model.Protocol) bool {
379
392
supported , exists := PROTOCOLS_SUPPORTING_LISTENER_ATTRIBUTES [protocol ]
380
393
return exists && supported
381
394
}
395
+
396
+ func getRegionFromARN (arn string ) string {
397
+ if strings .HasPrefix (arn , "arn:" ) {
398
+ arnElements := strings .Split (arn , ":" )
399
+ if len (arnElements ) > 3 {
400
+ return arnElements [3 ]
401
+ }
402
+ }
403
+ return ""
404
+ }
405
+
406
+ func isIsolatedRegion (region string ) bool {
407
+ _ , exists := isolatedRegions [region ]
408
+ return exists
409
+ }
0 commit comments