// ToServiceConfig creates an aws Config object from the CliConfig object. func (cfg *CliConfig) ToServiceConfig() (*aws.Config, error) { region := cfg.getRegion() if region == "" { return nil, fmt.Errorf("Set a region with the --%s flag or %s environment variable", cli.RegionFlag, cli.AwsRegionEnvVar) } awsDefaults := defaults.Get() credentialProviders := cfg.getCredentialProviders(cfg.getEC2MetadataClient(&awsDefaults)) chainCredentials := credentials.NewChainCredentials(credentialProviders) creds, err := chainCredentials.Get() if err != nil { return nil, err } // This is just a fail-fast check to ensure that valid credentials are available before returning to the caller. if creds.AccessKeyID == "" { return nil, fmt.Errorf("Error getting valid credentials") } svcConfig := awsDefaults.Config svcConfig.Region = aws.String(region) svcConfig.Credentials = chainCredentials return svcConfig, nil }
// NewClient creates and initializes a generic service client for testing. func NewClient(cfgs ...*aws.Config) *client.Client { info := metadata.ClientInfo{ Endpoint: "http://endpoint", SigningName: "", } def := defaults.Get() def.Config.MergeIn(cfgs...) return client.New(*def.Config, info, def.Handlers) }
// New creates a new instance of the handlers merging in the provided Configs // on top of the SDK's default configurations. Once the session is created it // can be mutated to modify Configs or Handlers. The session is safe to be read // concurrently, but it should not be written to concurrently. // // Example: // // Create a session with the default config and request handlers. // sess := session.New() // // // Create a session with a custom region // sess := session.New(&aws.Config{Region: aws.String("us-east-1")}) // // // Create a session, and add additional handlers for all service // // clients created with the session to inherit. Adds logging handler. // sess := session.New() // sess.Handlers.Send.PushFront(func(r *request.Request) { // // Log every request made and its payload // logger.Println("Request: %s/%s, Payload: %s", r.ClientInfo.ServiceName, r.Operation, r.Params) // }) // // // Create a S3 client instance from a session // sess := session.New() // svc := s3.New(sess) func New(cfgs ...*aws.Config) *Session { def := defaults.Get() s := &Session{ Config: def.Config, Handlers: def.Handlers, } s.Config.MergeIn(cfgs...) initHandlers(s) return s }
// ToServiceConfig creates an aws Config object from the CliConfig object. func (cfg *CliConfig) ToServiceConfig() (*aws.Config, error) { region := cfg.getRegion() if region == "" { // TODO: Move AWS_REGION to a const. return nil, fmt.Errorf("Set a region with the --%s flag or AWS_REGION environment variable", RegionFlag) } chainCredentials := credentials.NewChainCredentials(cfg.getCredentialProviders()) creds, err := chainCredentials.Get() if err != nil { return nil, err } // This is just a fail-fast check to ensure that valid credentials are available before returning to the caller. if creds.AccessKeyID == "" { return nil, fmt.Errorf("Error getting valid credentials") } svcConfig := defaults.Get().Config svcConfig.Credentials = chainCredentials svcConfig.Region = aws.String(region) return svcConfig, nil }