66"github.com/aws/aws-sdk-go/aws/session"
77"github.com/pkg/errors"
88"github.com/prometheus/client_golang/prometheus"
9+ "os"
910"sigs.k8s.io/aws-load-balancer-controller/pkg/aws/metrics"
1011"sigs.k8s.io/aws-load-balancer-controller/pkg/aws/services"
1112"sigs.k8s.io/aws-load-balancer-controller/pkg/aws/throttle"
@@ -44,14 +45,6 @@ type Cloud interface {
4445func NewCloud (cfg CloudConfig , metricsRegisterer prometheus.Registerer ) (Cloud , error ) {
4546metadataSess := session .Must (session .NewSession (aws .NewConfig ()))
4647metadata := services .NewEC2Metadata (metadataSess )
47- if len (cfg .Region ) == 0 {
48- region , err := metadata .Region ()
49- if err != nil {
50- return nil , errors .Wrap (err , "failed to introspect region from EC2Metadata, specify --aws-region instead if EC2Metadata is unavailable" )
51- }
52- cfg .Region = region
53- }
54-
5548if len (cfg .VpcID ) == 0 {
5649vpcId , err := metadata .VpcID ()
5750if err != nil {
@@ -60,6 +53,22 @@ func NewCloud(cfg CloudConfig, metricsRegisterer prometheus.Registerer) (Cloud,
6053cfg .VpcID = vpcId
6154}
6255
56+ if len (cfg .Region ) == 0 {
57+ region := os .Getenv ("AWS_DEFAULT_REGION" )
58+ if region == "" {
59+ region = os .Getenv ("AWS_REGION" )
60+ }
61+
62+ if region == "" {
63+ err := (error )(nil )
64+ region , err = metadata .Region ()
65+ if err != nil {
66+ return nil , errors .Wrap (err , "failed to introspect region from EC2Metadata, specify --aws-region instead if EC2Metadata is unavailable" )
67+ }
68+ }
69+ cfg .Region = region
70+ }
71+
6372awsCFG := aws .NewConfig ().WithRegion (cfg .Region ).WithSTSRegionalEndpoint (endpoints .RegionalSTSEndpoint ).WithMaxRetries (cfg .MaxRetries )
6473sess := session .Must (session .NewSession (awsCFG ))
6574injectUserAgent (& sess .Handlers )
0 commit comments