Skip to content

Commit

Permalink
Send the STS queries to the local region
Browse files Browse the repository at this point in the history
  • Loading branch information
johngmyers committed Aug 15, 2020
1 parent 5dcc951 commit 1a253dc
Show file tree
Hide file tree
Showing 5 changed files with 12 additions and 13 deletions.
6 changes: 5 additions & 1 deletion nodeup/pkg/model/bootstrap_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,11 @@ func (b BootstrapClientBuilder) Build(c *fi.ModelBuilderContext) error {
var err error
switch kops.CloudProviderID(b.Cluster.Spec.CloudProvider) {
case kops.CloudProviderAWS:
authenticator, err = awsup.NewAWSAuthenticator()
region, regionErr := awsup.FindRegion(b.Cluster)
if regionErr != nil {
return fmt.Errorf("querying AWS region: %v", regionErr)
}
authenticator, err = awsup.NewAWSAuthenticator(region)
default:
return fmt.Errorf("unsupported cloud provider %s", b.Cluster.Spec.CloudProvider)
}
Expand Down
1 change: 0 additions & 1 deletion upup/pkg/fi/cloudup/awsup/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ go_library(
"//vendor/github.com/aws/aws-sdk-go/aws:go_default_library",
"//vendor/github.com/aws/aws-sdk-go/aws/awserr:go_default_library",
"//vendor/github.com/aws/aws-sdk-go/aws/client:go_default_library",
"//vendor/github.com/aws/aws-sdk-go/aws/ec2metadata:go_default_library",
"//vendor/github.com/aws/aws-sdk-go/aws/endpoints:go_default_library",
"//vendor/github.com/aws/aws-sdk-go/aws/request:go_default_library",
"//vendor/github.com/aws/aws-sdk-go/aws/session:go_default_library",
Expand Down
4 changes: 2 additions & 2 deletions upup/pkg/fi/cloudup/awsup/aws_authenticator.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ type awsAuthenticator struct {

var _ fi.Authenticator = &awsAuthenticator{}

func NewAWSAuthenticator() (fi.Authenticator, error) {
config := aws.NewConfig().WithCredentialsChainVerboseErrors(true)
func NewAWSAuthenticator(region string) (fi.Authenticator, error) {
config := aws.NewConfig().WithCredentialsChainVerboseErrors(true).WithRegion(region)
sess, err := session.NewSession(config)
if err != nil {
return nil, err
Expand Down
13 changes: 4 additions & 9 deletions upup/pkg/fi/cloudup/awsup/aws_verifier.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ import (
"time"

"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/ec2metadata"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/ec2"
"github.com/aws/aws-sdk-go/service/sts"
Expand All @@ -42,6 +41,8 @@ import (
type AWSVerifierOptions struct {
// NodesRoles are the IAM roles that worker nodes are permitted to have.
NodesRoles []string `json:"nodesRoles"`
// Region is the AWS region of the cluster.
Region string
}

type awsVerifier struct {
Expand All @@ -57,7 +58,7 @@ type awsVerifier struct {
var _ fi.Verifier = &awsVerifier{}

func NewAWSVerifier(opt *AWSVerifierOptions) (fi.Verifier, error) {
config := aws.NewConfig().WithCredentialsChainVerboseErrors(true)
config := aws.NewConfig().WithCredentialsChainVerboseErrors(true).WithRegion(opt.Region)
sess, err := session.NewSession(config)
if err != nil {
return nil, err
Expand All @@ -71,13 +72,7 @@ func NewAWSVerifier(opt *AWSVerifierOptions) (fi.Verifier, error) {

partition := strings.Split(aws.StringValue(identity.Arn), ":")[1]

metadata := ec2metadata.New(sess, config)
region, err := metadata.Region()
if err != nil {
return nil, fmt.Errorf("error querying ec2 metadata service (for region): %v", err)
}

ec2Client := ec2.New(sess, config.WithRegion(region))
ec2Client := ec2.New(sess, config)

return &awsVerifier{
accountId: aws.StringValue(identity.Account),
Expand Down
1 change: 1 addition & 0 deletions upup/pkg/fi/cloudup/template_functions.go
Original file line number Diff line number Diff line change
Expand Up @@ -406,6 +406,7 @@ func (tf *TemplateFunctions) KopsControllerConfig() (string, error) {
}
config.Server.Provider.AWS = &awsup.AWSVerifierOptions{
NodesRoles: nodesRoles.List(),
Region: tf.Region,
}
default:
return "", fmt.Errorf("unsupported cloud provider %s", cluster.Spec.CloudProvider)
Expand Down

0 comments on commit 1a253dc

Please sign in to comment.