Add -s3-endpoint to command line arguments

to support S3 compatilbe implementations like minio
This commit is contained in:
mrezai 2017-01-19 22:18:21 +03:30
parent af5e0e834d
commit 3cb4e0907d
2 changed files with 13 additions and 3 deletions

View File

@ -32,12 +32,20 @@ func CreateComposer() {
store := filestore.New(dir) store := filestore.New(dir)
store.UseIn(Composer) store.UseIn(Composer)
} else { } else {
s3Config := aws.NewConfig()
if Flags.S3Endpoint == "" {
stdout.Printf("Using 's3://%s' as S3 bucket for storage.\n", Flags.S3Bucket) stdout.Printf("Using 's3://%s' as S3 bucket for storage.\n", Flags.S3Bucket)
} else {
stdout.Printf("Using '%s/%s' as S3 endpoint and bucket for storage.\n", Flags.S3Endpoint, Flags.S3Bucket)
s3Config = s3Config.WithEndpoint(Flags.S3Endpoint).WithS3ForcePathStyle(true)
}
// Derive credentials from AWS_SECRET_ACCESS_KEY, AWS_ACCESS_KEY_ID and // Derive credentials from AWS_SECRET_ACCESS_KEY, AWS_ACCESS_KEY_ID and
// AWS_REGION environment variables. // AWS_REGION environment variables.
credentials := aws.NewConfig().WithCredentials(credentials.NewEnvCredentials()) s3Config = s3Config.WithCredentials(credentials.NewEnvCredentials())
store := s3store.New(Flags.S3Bucket, s3.New(session.New(), credentials)) store := s3store.New(Flags.S3Bucket, s3.New(session.New(), s3Config))
store.UseIn(Composer) store.UseIn(Composer)
locker := memorylocker.New() locker := memorylocker.New()

View File

@ -14,6 +14,7 @@ var Flags struct {
Basepath string Basepath string
Timeout int64 Timeout int64
S3Bucket string S3Bucket string
S3Endpoint string
HooksDir string HooksDir string
ShowVersion bool ShowVersion bool
ExposeMetrics bool ExposeMetrics bool
@ -32,6 +33,7 @@ func ParseFlags() {
flag.StringVar(&Flags.Basepath, "base-path", "/files/", "Basepath of the HTTP server") flag.StringVar(&Flags.Basepath, "base-path", "/files/", "Basepath of the HTTP server")
flag.Int64Var(&Flags.Timeout, "timeout", 30*1000, "Read timeout for connections in milliseconds. A zero value means that reads will not timeout") flag.Int64Var(&Flags.Timeout, "timeout", 30*1000, "Read timeout for connections in milliseconds. A zero value means that reads will not timeout")
flag.StringVar(&Flags.S3Bucket, "s3-bucket", "", "Use AWS S3 with this bucket as storage backend (requires the AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and AWS_REGION environment variables to be set)") flag.StringVar(&Flags.S3Bucket, "s3-bucket", "", "Use AWS S3 with this bucket as storage backend (requires the AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and AWS_REGION environment variables to be set)")
flag.StringVar(&Flags.S3Endpoint, "s3-endpoint", "", "Endpoint to use S3 compatible implementations like minio (requires s3-bucket to be pass)")
flag.StringVar(&Flags.HooksDir, "hooks-dir", "", "Directory to search for available hooks scripts") flag.StringVar(&Flags.HooksDir, "hooks-dir", "", "Directory to search for available hooks scripts")
flag.BoolVar(&Flags.ShowVersion, "version", false, "Print tusd version information") flag.BoolVar(&Flags.ShowVersion, "version", false, "Print tusd version information")
flag.BoolVar(&Flags.ExposeMetrics, "expose-metrics", true, "Expose metrics about tusd usage") flag.BoolVar(&Flags.ExposeMetrics, "expose-metrics", true, "Expose metrics about tusd usage")