Default to force path style if endpoint set

This commit changes the replica configuration behavior to default
the `force-path-style` field to `true` when an `endpoint` is set.
This works because the only service that does not use the path
style is AWS S3 which does not use an endpoint.
This commit is contained in:
Ben Johnson
2021-03-11 15:26:41 -07:00
parent 2e7a6ae715
commit 929a66314c

View File

@@ -271,7 +271,7 @@ type ReplicaConfig struct {
Region string `yaml:"region"` Region string `yaml:"region"`
Bucket string `yaml:"bucket"` Bucket string `yaml:"bucket"`
Endpoint string `yaml:"endpoint"` Endpoint string `yaml:"endpoint"`
ForcePathStyle bool `yaml:"force-path-style"` ForcePathStyle *bool `yaml:"force-path-style"`
} }
// NewReplicaFromConfig instantiates a replica for a DB based on a config. // NewReplicaFromConfig instantiates a replica for a DB based on a config.
@@ -343,7 +343,14 @@ func newS3ReplicaFromConfig(c *ReplicaConfig, db *litestream.DB) (_ *s3.Replica,
} }
bucket, path := c.Bucket, c.Path bucket, path := c.Bucket, c.Path
region, endpoint, forcePathStyle := c.Region, c.Endpoint, c.ForcePathStyle region, endpoint := c.Region, c.Endpoint
// Use path style if an endpoint is explicitly set. This works because the
// only service to not use path style is AWS which does not use an endpoint.
forcePathStyle := (endpoint != "")
if v := c.ForcePathStyle; v != nil {
forcePathStyle = *v
}
// Apply settings from URL, if specified. // Apply settings from URL, if specified.
if c.URL != "" { if c.URL != "" {