github.com/rudderlabs/rudder-go-kit@v0.30.0/filemanager/config.go (about)

     1  package filemanager
     2  
     3  import (
     4  	"os"
     5  
     6  	"github.com/rudderlabs/rudder-go-kit/config"
     7  )
     8  
     9  type ProviderConfigOpts struct {
    10  	Provider           string
    11  	Bucket             string
    12  	Prefix             string
    13  	Config             *config.Config
    14  	ExternalIDSupplier func() string
    15  }
    16  
    17  func GetProviderConfigFromEnv(opts ProviderConfigOpts) map[string]interface{} {
    18  	if opts.Config == nil {
    19  		opts.Config = config.Default
    20  	}
    21  	if opts.ExternalIDSupplier == nil {
    22  		opts.ExternalIDSupplier = func() string { return "" }
    23  	}
    24  	config := opts.Config
    25  	providerConfig := make(map[string]interface{})
    26  	switch opts.Provider {
    27  	case "S3":
    28  		providerConfig["bucketName"] = opts.Bucket
    29  		providerConfig["prefix"] = opts.Prefix
    30  		providerConfig["accessKeyID"] = config.GetString("AWS_ACCESS_KEY_ID", "")
    31  		providerConfig["accessKey"] = config.GetString("AWS_SECRET_ACCESS_KEY", "")
    32  		providerConfig["enableSSE"] = config.GetBool("AWS_ENABLE_SSE", false)
    33  		providerConfig["regionHint"] = config.GetString("AWS_S3_REGION_HINT", "us-east-1")
    34  		providerConfig["iamRoleArn"] = config.GetString("BACKUP_IAM_ROLE_ARN", "")
    35  		if providerConfig["iamRoleArn"] != "" {
    36  			providerConfig["externalID"] = opts.ExternalIDSupplier()
    37  		}
    38  	case "GCS":
    39  		providerConfig["bucketName"] = opts.Bucket
    40  		providerConfig["prefix"] = opts.Prefix
    41  		credentials, err := os.ReadFile(config.GetString("GOOGLE_APPLICATION_CREDENTIALS", ""))
    42  		if err == nil {
    43  			providerConfig["credentials"] = string(credentials)
    44  		}
    45  	case "AZURE_BLOB":
    46  		providerConfig["containerName"] = opts.Bucket
    47  		providerConfig["prefix"] = opts.Prefix
    48  		providerConfig["accountName"] = config.GetString("AZURE_STORAGE_ACCOUNT", "")
    49  		providerConfig["accountKey"] = config.GetString("AZURE_STORAGE_ACCESS_KEY", "")
    50  	case "MINIO":
    51  		providerConfig["bucketName"] = opts.Bucket
    52  		providerConfig["prefix"] = opts.Prefix
    53  		providerConfig["endPoint"] = config.GetString("MINIO_ENDPOINT", "localhost:9000")
    54  		providerConfig["accessKeyID"] = config.GetString("MINIO_ACCESS_KEY_ID", "minioadmin")
    55  		providerConfig["secretAccessKey"] = config.GetString("MINIO_SECRET_ACCESS_KEY", "minioadmin")
    56  		providerConfig["useSSL"] = config.GetBool("MINIO_SSL", false)
    57  	case "DIGITAL_OCEAN_SPACES":
    58  		providerConfig["bucketName"] = opts.Bucket
    59  		providerConfig["prefix"] = opts.Prefix
    60  		providerConfig["endPoint"] = config.GetString("DO_SPACES_ENDPOINT", "")
    61  		providerConfig["accessKeyID"] = config.GetString("DO_SPACES_ACCESS_KEY_ID", "")
    62  		providerConfig["accessKey"] = config.GetString("DO_SPACES_SECRET_ACCESS_KEY", "")
    63  	}
    64  
    65  	return providerConfig
    66  }