Documentation
¶
Overview ¶
Package storage provides artifact storage backends for the proxy cache.
Storage backends are accessed via gocloud.dev/blob URLs:
- file:///path/to/dir - Local filesystem storage
- s3://bucket-name - Amazon S3
- s3://bucket?endpoint=http://localhost:9000 - S3-compatible (MinIO)
- gs://bucket-name - Google Cloud Storage (supports GKE Workload Identity via Application Default Credentials)
- azblob://container-name - Azure Blob Storage
Use OpenBucket to create a storage backend from a URL.
Index ¶
- Variables
- func ArtifactPath(ecosystem, namespace, name, version, filename string) string
- type Blob
- func (b *Blob) Close() error
- func (b *Blob) Delete(ctx context.Context, path string) error
- func (b *Blob) Exists(ctx context.Context, path string) (bool, error)
- func (b *Blob) ListPrefix(ctx context.Context, prefix string) ([]ObjectInfo, error)
- func (b *Blob) Open(ctx context.Context, path string) (io.ReadCloser, error)
- func (b *Blob) SignedURL(ctx context.Context, path string, expiry time.Duration) (string, error)
- func (b *Blob) Size(ctx context.Context, path string) (int64, error)
- func (b *Blob) Store(ctx context.Context, path string, r io.Reader) (int64, string, error)
- func (b *Blob) URL() string
- func (b *Blob) UsedSpace(ctx context.Context) (int64, error)
- type GCS
- func (g *GCS) Close() error
- func (g *GCS) Delete(ctx context.Context, path string) error
- func (g *GCS) Exists(ctx context.Context, path string) (bool, error)
- func (g *GCS) ListPrefix(ctx context.Context, prefix string) ([]ObjectInfo, error)
- func (g *GCS) Open(ctx context.Context, path string) (io.ReadCloser, error)
- func (g *GCS) SignedURL(ctx context.Context, path string, expiry time.Duration) (string, error)
- func (g *GCS) Size(ctx context.Context, path string) (int64, error)
- func (g *GCS) Store(ctx context.Context, path string, r io.Reader) (int64, string, error)
- func (g *GCS) URL() string
- func (g *GCS) UsedSpace(ctx context.Context) (int64, error)
- type ObjectInfo
- type Storage
Constants ¶
This section is empty.
Variables ¶
var ( ErrNotFound = errors.New("artifact not found") // ErrSignedURLUnsupported is returned by SignedURL when the backend // cannot generate presigned URLs (e.g. local filesystem). ErrSignedURLUnsupported = errors.New("signed URLs not supported by storage backend") )
Functions ¶
func ArtifactPath ¶
ArtifactPath builds a storage path for an artifact. Format: {ecosystem}/{namespace}/{name}/{version}/{filename} For packages without namespace: {ecosystem}/{name}/{version}/{filename}
Types ¶
type Blob ¶
type Blob struct {
// contains filtered or unexported fields
}
Blob implements Storage using gocloud.dev/blob. Supports local filesystem (file://) and S3 (s3://) URLs.
func (*Blob) ListPrefix ¶ added in v0.4.0
ListPrefix returns object metadata for keys under a prefix.
type GCS ¶ added in v0.8.0
type GCS struct {
// contains filtered or unexported fields
}
GCS adapts a Google Cloud Storage bucket to Storage.
func (*GCS) ListPrefix ¶ added in v0.8.0
type ObjectInfo ¶ added in v0.4.0
ObjectInfo contains metadata for a stored object.
type Storage ¶
type Storage interface {
// Store writes content from r to the given path.
// Returns the number of bytes written and the SHA256 hash of the content.
Store(ctx context.Context, path string, r io.Reader) (size int64, hash string, err error)
// Open returns a reader for the content at path.
// The caller must close the reader when done.
// Returns ErrNotFound if the path does not exist.
Open(ctx context.Context, path string) (io.ReadCloser, error)
// Exists returns true if content exists at path.
Exists(ctx context.Context, path string) (bool, error)
// Delete removes the content at path.
// Returns nil if the path does not exist.
Delete(ctx context.Context, path string) error
// Size returns the size in bytes of content at path.
// Returns ErrNotFound if the path does not exist.
Size(ctx context.Context, path string) (int64, error)
// SignedURL returns a presigned URL granting time-limited GET access to path.
// Returns ErrSignedURLUnsupported if the backend cannot generate presigned URLs.
SignedURL(ctx context.Context, path string, expiry time.Duration) (string, error)
// UsedSpace returns the total bytes used by all stored content.
UsedSpace(ctx context.Context) (int64, error)
// URL returns the storage backend URL (e.g. "file:///path" or "s3://bucket").
URL() string
// Close releases any resources held by the storage backend.
Close() error
}
Storage defines the interface for artifact storage backends.
func OpenBucket ¶
OpenBucket opens a blob bucket from a URL.
Supported URL schemes:
- file:///path/to/dir - Local filesystem storage
- s3://bucket-name - Amazon S3 (uses AWS_* environment variables)
- s3://bucket-name?region=us-east-1&endpoint=http://localhost:9000 - S3-compatible (MinIO, etc.)
- gs://bucket-name - Google Cloud Storage (uses Application Default Credentials; supports Workload Identity on GKE/GCE without any extra configuration)
- azblob://container-name - Azure Blob Storage
For local filesystem, the directory is created if it doesn't exist.