diff --git a/aws.go b/aws.go index d0c36d2..1f73899 100644 --- a/aws.go +++ b/aws.go @@ -7,6 +7,7 @@ import ( "mime" "os" "path/filepath" + "strings" "time" "github.com/aws/aws-sdk-go/aws" @@ -27,10 +28,18 @@ type AWS struct { } func NewAWS(p *Plugin) AWS { - sess := session.New(&aws.Config{ - Credentials: credentials.NewStaticCredentials(p.Key, p.Secret, ""), - Region: aws.String(p.Region), - }) + sessCfg := &aws.Config{ + Credentials: credentials.NewStaticCredentials(p.Key, p.Secret, ""), + S3ForcePathStyle: aws.Bool(p.PathStyle), + Region: aws.String(p.Region), + } + + if p.Endpoint != "" { + sessCfg.Endpoint = &p.Endpoint + sessCfg.DisableSSL = aws.Bool(strings.HasPrefix(p.Endpoint, "http://")) + } + sess := session.New(sessCfg) + c := s3.New(sess) cf := cloudfront.New(sess) r := make([]string, 1, 1) diff --git a/main.go b/main.go index c844284..baed8f5 100644 --- a/main.go +++ b/main.go @@ -18,6 +18,11 @@ func main() { app.Action = run app.Version = fmt.Sprintf("1.1.0+%s", build) app.Flags = []cli.Flag{ + cli.StringFlag{ + Name: "endpoint", + Usage: "endpoint for the s3 connection", + EnvVar: "PLUGIN_ENDPOINT,S3_SYNC_ENDPOINT,S3_ENDPOINT", + }, cli.StringFlag{ Name: "access-key", Usage: "aws access key", @@ -28,6 +33,11 @@ func main() { Usage: "aws secret key", EnvVar: "PLUGIN_SECRET_KEY,AWS_SECRET_ACCESS_KEY", }, + cli.BoolFlag{ + Name: "path-style", + Usage: "use path style for bucket paths", + EnvVar: "PLUGIN_PATH_STYLE", + }, cli.StringFlag{ Name: "bucket", Usage: "name of bucket", @@ -117,8 +127,9 @@ func run(c *cli.Context) error { if c.String("env-file") != "" { _ = godotenv.Load(c.String("env-file")) } - plugin := Plugin{ + Endpoint: c.String("endpoint"), + PathStyle: c.Bool("path-style"), Key: c.String("access-key"), Secret: c.String("secret-key"), Bucket: c.String("bucket"), diff --git a/plugin.go b/plugin.go index f814573..d0040ee 100644 --- a/plugin.go +++ b/plugin.go @@ -9,6 +9,7 @@ import ( ) type Plugin struct { + Endpoint string Key string Secret string Bucket string @@ -24,6 +25,7 @@ type Plugin struct { Redirects map[string]string CloudFrontDistribution string DryRun bool + PathStyle bool client AWS jobs []job }