// Create new AmazonSQS struct func NewClient() *AmazonSQS { svc := &AmazonSQS{} svc.queues = make(map[string]*Queue) region := config.GetConfigValue(sqsConfigSectionName, "region", auth.EnvRegion()) endpoint := config.GetConfigValue(sqsConfigSectionName, "endpoint", "") conf := auth.NewConfig(region, endpoint) conf.SetDefault(defaultRegion, defaultEndpoint) svc.client = SDK.New(conf.Config) return svc }
// Create new AmazonS3 struct func NewClient() *AmazonS3 { s := &AmazonS3{} s.buckets = make(map[string]*Bucket) region := config.GetConfigValue(s3ConfigSectionName, "region", "") endpoint := config.GetConfigValue(s3ConfigSectionName, "endpoint", "") conf := auth.NewConfig(region, endpoint) conf.SetDefault(defaultRegion, defaultEndpoint) if conf.Config.Endpoint != "" { conf.Config.S3ForcePathStyle = true } s.client = SDK.New(conf.Config) return s }
// Create new AmazonSQS struct func NewClient() *AmazonSNS { svc := &AmazonSNS{} svc.apps = make(map[string]*SNSApp) svc.topics = make(map[string]*SNSTopic) region := config.GetConfigValue(snsConfigSectionName, "region", auth.EnvRegion()) endpoint := config.GetConfigValue(snsConfigSectionName, "endpoint", "") conf := auth.NewConfig(region, endpoint) conf.SetDefault(defaultRegion, defaultEndpoint) svc.Client = SDK.New(conf.Config) if config.GetConfigValue(snsConfigSectionName, "app.production", "false") != "false" { isProduction = true } else { isProduction = false } return svc }
// Auth return AWS authorization credentials func Auth() *credentials.Credentials { if auth != nil { return auth } // return if environmental params for AWS auth e := credentials.NewEnvCredentials() _, err := e.Get() if err == nil { auth = e return auth } accessKey := config.GetConfigValue(authConfigSectionName, awsAccessConfigKey, "") secretKey := config.GetConfigValue(authConfigSectionName, awsSecretConfigKey, "") auth = credentials.NewStaticCredentials(accessKey, secretKey, "") return auth }
// Create new AmazonDynamoDB struct func newClient(conf auth.Config) *AmazonDynamoDB { d := &AmazonDynamoDB{} d.tables = make(map[string]*DynamoTable) d.writeTables = make(map[string]bool) d.TablePrefix = config.GetConfigValue(dynamodbConfigSectionName, "prefix", defaultTablePrefix) conf.SetDefault(defaultRegion, defaultEndpoint) awsConf := conf.Config d.client = SDK.New(awsConf) return d }
// Create SNS Topic and return `TopicARN` func (svc *AmazonSNS) createTopic(name string) (string, error) { prefix := config.GetConfigValue(snsConfigSectionName, "prefix", defaultPrefix) in := &SDK.CreateTopicInput{ Name: String(prefix + name), } resp, err := svc.Client.CreateTopic(in) if err != nil { log.Error("[SNS] error on `CreateTopic` operation, name="+name, err.Error()) return "", err } return *resp.TopicARN, nil }
// Get SNSApp struct func (svc *AmazonSNS) GetApp(typ string) (*SNSApp, error) { // get the app from cache app, ok := svc.apps[typ] if ok { return app, nil } arn := config.GetConfigValue(snsConfigSectionName, "app."+typ, "") if arn == "" { errMsg := "[SNS] error, cannot find ARN setting" log.Error(errMsg, typ) return nil, errors.New(errMsg) } app = svc.NewApp(arn, typ) svc.apps[typ] = app return app, nil }
// get bucket func (s *AmazonS3) GetBucket(bucket string) *Bucket { prefix := config.GetConfigValue(s3ConfigSectionName, "prefix", defaultBucketPrefix) bucketName := prefix + bucket // get the bucket from cache b, ok := s.buckets[bucketName] if ok { return b } b = &Bucket{} b.client = s.client b.name = bucketName s.buckets[bucketName] = b return b }
// Get the prefix for DynamoDB table func GetQueuePrefix() string { return config.GetConfigValue(sqsConfigSectionName, "prefix", defaultQueuePrefix) }
// Create new AmazonDynamoDB struct func NewClient() *AmazonDynamoDB { region := config.GetConfigValue(dynamodbConfigSectionName, "region", "") endpoint := config.GetConfigValue(dynamodbConfigSectionName, "endpoint", "") conf := auth.NewConfig(region, endpoint) return newClient(conf) }