DigitalOcean Spaces

Connect to DigitalOcean Spaces through the S3-compatible API.

Create the adapter

package main

import (
	"context"
	"os"

	files "github.com/cersho/gofiles-sdk"
	"github.com/cersho/gofiles-sdk/providers/digitaloceanspaces"
)

func newClient(ctx context.Context) (*files.Client, error) {
	adapter, err := digitaloceanspaces.New(ctx, digitaloceanspaces.Options{
		Bucket: "uploads",
		Region: "nyc3",
		AccessKeyID: os.Getenv("DO_SPACES_KEY"),
		SecretAccessKey: os.Getenv("DO_SPACES_SECRET"),
	})
	if err != nil {
		return nil, err
	}

	return files.New(files.Options{Adapter: adapter})
}

Environment variables

When credentials are not passed in options, the adapter reads:

VariablePurpose
DO_SPACES_KEYSpaces access key.
DO_SPACES_SECRETSpaces secret key.

Endpoint defaults

If Endpoint is empty, the adapter uses:

https://<region>.digitaloceanspaces.com

Set PublicBaseURL when your Space is behind a custom CDN domain.

On this page