func New() *Conn { c := new(Conn) // this is looking for keys in env auth, err := aws.EnvAuth() // TODO(mleone896): maybe make a switch to use from config ? if err != nil { log.Fatal(err) } c.r53 = route53.New(auth, aws.USWest) return c }
func setRegion() error { regionName := os.Getenv("AWS_REGION") r, ok := aws.Regions[regionName] if !ok { return fmt.Errorf("Could not find region by name %s", regionName) } region = r auth, err := aws.EnvAuth() if err != nil { logrus.Fatal("AWS failed to authenticate: %v", err) } client = route53.New(auth, region) return nil }
// Get the zone updater channel given a hostedZoneId, creating a new zone updater and a new channel if needed func (m *Manager) getZoneUpdaterCh(hostedZoneId string, region string) (zoneUpdaterCh chan *route53.Change) { var exists bool if zoneUpdaterCh, exists = m.zonesUpdatersChs[hostedZoneId]; !exists { log.Printf("-> ZONEUPDATER:%s:settingUpZoneUpdater\n", hostedZoneId) zoneUpdaterCh = make(chan *route53.Change) zoneUpdater := &ZoneUpdater{ AwsClient: route53.New(m.awsAuth, aws.Regions[region]), HostedZone: hostedZoneId, UpdatesCh: zoneUpdaterCh, } go func() { zoneUpdater.listen() }() } m.zonesUpdatersChs[hostedZoneId] = zoneUpdaterCh return }
func (p *ResourceProvider) Configure(c *terraform.ResourceConfig) error { if _, err := config.Decode(&p.Config, c.Config); err != nil { return err } // Get the auth and region. This can fail if keys/regions were not // specified and we're attempting to use the environment. var errs []error log.Println("[INFO] Building AWS auth structure") auth, err := p.Config.AWSAuth() if err != nil { errs = append(errs, err) } log.Println("[INFO] Building AWS region structure") region, err := p.Config.AWSRegion() if err != nil { errs = append(errs, err) } if len(errs) == 0 { log.Println("[INFO] Initializing EC2 connection") p.ec2conn = ec2.New(auth, region) log.Println("[INFO] Initializing ELB connection") p.elbconn = elb.New(auth, region) log.Println("[INFO] Initializing AutoScaling connection") p.autoscalingconn = autoscaling.New(auth, region) log.Println("[INFO] Initializing S3 connection") p.s3conn = s3.New(auth, region) log.Println("[INFO] Initializing RDS connection") p.rdsconn = rds.New(auth, region) log.Println("[INFO] Initializing Route53 connection") p.route53 = route53.New(auth, region) } if len(errs) > 0 { return &multierror.Error{Errors: errs} } // Create the provider, set the meta p.p = Provider() p.p.SetMeta(p) return nil }
// NewDNSProviderRoute53 returns a DNSProviderRoute53 instance with a configured route53 client. // Authentication is either done using the passed credentials or - when empty - falling back to // the customary AWS credential mechanisms, including the file refernced by $AWS_CREDENTIAL_FILE // (defaulting to $HOME/.aws/credentials) optionally scoped to $AWS_PROFILE, credentials // supplied by the environment variables AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY [ + AWS_SECURITY_TOKEN ], // and finally credentials available via the EC2 instance metadata service. func NewDNSProviderRoute53(awsAccessKey, awsSecretKey, awsRegionName string) (*DNSProviderRoute53, error) { region, ok := aws.Regions[awsRegionName] if !ok { return nil, fmt.Errorf("Invalid AWS region name %s", awsRegionName) } // use aws.GetAuth, which tries really hard to find credentails: // - uses awsAccessKey and awsSecretKey, if provided // - uses AWS_PROFILE / AWS_CREDENTIAL_FILE, if provided // - uses AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY and optionally AWS_SECURITY_TOKEN, if provided // - uses EC2 instance metadata credentials (http://169.254.169.254/latest/meta-data/…), if available // ...and otherwise returns an error if auth, err := aws.GetAuth(awsAccessKey, awsSecretKey); err != nil { return nil, err } else { client := route53.New(auth, region) return &DNSProviderRoute53{client: client}, nil } }
// Client configures and returns a fully initailized AWSClient func (c *Config) Client() (interface{}, error) { var client AWSClient // Get the auth and region. This can fail if keys/regions were not // specified and we're attempting to use the environment. var errs []error log.Println("[INFO] Building AWS auth structure") auth, err := c.AWSAuth() if err != nil { errs = append(errs, err) } log.Println("[INFO] Building AWS region structure") region, err := c.AWSRegion() if err != nil { errs = append(errs, err) } if len(errs) == 0 { log.Println("[INFO] Initializing EC2 connection") client.ec2conn = ec2.New(auth, region) log.Println("[INFO] Initializing ELB connection") client.elbconn = elb.New(auth, region) log.Println("[INFO] Initializing AutoScaling connection") client.autoscalingconn = autoscaling.New(auth, region) log.Println("[INFO] Initializing S3 connection") client.s3conn = s3.New(auth, region) log.Println("[INFO] Initializing RDS connection") client.rdsconn = rds.New(auth, region) log.Println("[INFO] Initializing Route53 connection") client.route53 = route53.New(auth, region) } if len(errs) > 0 { return nil, &multierror.Error{Errors: errs} } return &client, nil }
// NewDNSProviderRoute53 returns a DNSProviderRoute53 instance with a configured route53 client. // Authentication is either done using the passed credentials or - when empty - // using the environment variables AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY. func NewDNSProviderRoute53(awsAccessKey, awsSecretKey, awsRegionName string) (*DNSProviderRoute53, error) { region, ok := aws.Regions[awsRegionName] if !ok { return nil, fmt.Errorf("Invalid AWS region name %s", awsRegionName) } var auth aws.Auth // First try passed in credentials if awsAccessKey != "" && awsSecretKey != "" { auth = aws.Auth{awsAccessKey, awsSecretKey, ""} } else { // try getting credentials from environment envAuth, err := aws.EnvAuth() if err != nil { return nil, fmt.Errorf("AWS credentials missing") } auth = envAuth } client := route53.New(auth, region) return &DNSProviderRoute53{client: client}, nil }