in pkg/providers/v2/cloud.go [151:217]
func newCloud(cfg *awsconfigv1alpha1.AWSCloudConfig) (cloudprovider.Interface, error) {
sess, err := session.NewSession(&aws.Config{})
if err != nil {
return nil, fmt.Errorf("unable to initialize AWS session: %v", err)
}
creds := credentials.NewChainCredentials(
[]credentials.Provider{
&credentials.EnvProvider{},
&ec2rolecreds.EC2RoleProvider{
Client: ec2metadata.New(sess),
},
&credentials.SharedCredentialsProvider{},
})
metadataClient := ec2metadata.New(sess)
if err != nil {
return nil, fmt.Errorf("error creating AWS metadata client: %q", err)
}
az, err := getAvailabilityZone(metadataClient)
if err != nil {
return nil, err
}
region, err := azToRegion(az)
if err != nil {
return nil, err
}
ec2Sess, err := session.NewSession(&aws.Config{
Region: aws.String(region),
Credentials: creds,
})
if err != nil {
return nil, fmt.Errorf("unable to initialize AWS session: %v", err)
}
ec2Service := ec2.New(ec2Sess)
if err != nil {
return nil, fmt.Errorf("error creating AWS ec2 client: %q", err)
}
var tags awsTagging
if cfg.Config.ClusterName != "" {
tags, err = newAWSTags(cfg.Config.ClusterName)
if err != nil {
return nil, err
}
} else {
klog.Warning("misconfigured cluster: no clusterName")
}
instances, err := newInstances(az, creds, tags)
if err != nil {
return nil, err
}
return &cloud{
creds: creds,
instances: instances,
region: region,
metadata: metadataClient,
ec2: ec2Service,
tags: tags,
}, nil
}