Documentation ¶
Overview ¶
Package s3 implements common object storage abstractions against s3-compatible APIs.
Index ¶
- Constants
- Variables
- func DefaultTransport(config Config) *http.Transport
- func ValidateForTests(conf Config) error
- type Bucket
- func (b *Bucket) Close() error
- func (b *Bucket) Delete(ctx context.Context, name string) error
- func (b *Bucket) Exists(ctx context.Context, name string) (bool, error)
- func (b *Bucket) Get(ctx context.Context, name string) (io.ReadCloser, error)
- func (b *Bucket) GetRange(ctx context.Context, name string, off, length int64) (io.ReadCloser, error)
- func (b *Bucket) IsObjNotFoundErr(err error) bool
- func (b *Bucket) Iter(ctx context.Context, dir string, f func(string) error) error
- func (b *Bucket) Name() string
- func (b *Bucket) Upload(ctx context.Context, name string, r io.Reader) error
- type Config
- type HTTPConfig
- type SSEConfig
- type TraceConfig
Constants ¶
const ( // DirDelim is the delimiter used to model a directory structure in an object store bucket. DirDelim = "/" // SSEKMS is the name of the SSE-KMS method for objectstore encryption. SSEKMS = "SSE-KMS" // SSEC is the name of the SSE-C method for objstore encryption. SSEC = "SSE-C" // SSES3 is the name of the SSE-S3 method for objstore encryption. SSES3 = "SSE-S3" )
Variables ¶
var DefaultConfig = Config{ PutUserMetadata: map[string]string{}, HTTPConfig: HTTPConfig{ IdleConnTimeout: model.Duration(90 * time.Second), ResponseHeaderTimeout: model.Duration(2 * time.Minute), TLSHandshakeTimeout: model.Duration(10 * time.Second), ExpectContinueTimeout: model.Duration(1 * time.Second), MaxIdleConns: 100, MaxIdleConnsPerHost: 100, MaxConnsPerHost: 0, }, PartSize: 1024 * 1024 * 128, }
Functions ¶
func DefaultTransport ¶
DefaultTransport - this default transport is based on the Minio DefaultTransport up until the following commit: https://github.com/minio/minio-go/commit/008c7aa71fc17e11bf980c209a4f8c4d687fc884 The values have since diverged.
func ValidateForTests ¶
ValidateForTests checks to see the config options for tests are set.
Types ¶
type Bucket ¶
type Bucket struct {
// contains filtered or unexported fields
}
Bucket implements the store.Bucket interface against s3-compatible APIs.
func NewBucketWithConfig ¶
NewBucketWithConfig returns a new Bucket using the provided s3 config values.
func (*Bucket) GetRange ¶
func (b *Bucket) GetRange(ctx context.Context, name string, off, length int64) (io.ReadCloser, error)
GetRange returns a new range reader for the given object name and range.
func (*Bucket) IsObjNotFoundErr ¶
IsObjNotFoundErr returns true if error means that object is not found. Relevant to Get operations.
type Config ¶
type Config struct { Bucket string `yaml:"bucket"` Endpoint string `yaml:"endpoint"` Region string `yaml:"region"` AccessKey string `yaml:"access_key"` Insecure bool `yaml:"insecure"` SignatureV2 bool `yaml:"signature_version2"` SecretKey string `yaml:"secret_key"` PutUserMetadata map[string]string `yaml:"put_user_metadata"` HTTPConfig HTTPConfig `yaml:"http_config"` TraceConfig TraceConfig `yaml:"trace"` ListObjectsVersion string `yaml:"list_objects_version"` // PartSize used for multipart upload. Only used if uploaded object size is known and larger than configured PartSize. PartSize uint64 `yaml:"part_size"` SSEConfig SSEConfig `yaml:"sse_config"` }
Config stores the configuration for s3 bucket.
type HTTPConfig ¶
type HTTPConfig struct { IdleConnTimeout model.Duration `yaml:"idle_conn_timeout"` ResponseHeaderTimeout model.Duration `yaml:"response_header_timeout"` InsecureSkipVerify bool `yaml:"insecure_skip_verify"` TLSHandshakeTimeout model.Duration `yaml:"tls_handshake_timeout"` ExpectContinueTimeout model.Duration `yaml:"expect_continue_timeout"` MaxIdleConns int `yaml:"max_idle_conns"` MaxIdleConnsPerHost int `yaml:"max_idle_conns_per_host"` MaxConnsPerHost int `yaml:"max_conns_per_host"` // Allow upstream callers to inject a round tripper Transport http.RoundTripper `yaml:"-"` }
HTTPConfig stores the http.Transport configuration for the s3 minio client.
type SSEConfig ¶
type SSEConfig struct { Type string `yaml:"type"` KMSKeyID string `yaml:"kms_key_id"` KMSEncryptionContext map[string]string `yaml:"kms_encryption_context"` EncryptionKey string `yaml:"encryption_key"` }
SSEConfig deals with the configuration of SSE for Minio. The following options are valid: kmsencryptioncontext == https://docs.aws.amazon.com/kms/latest/developerguide/services-s3.html#s3-encryption-context
type TraceConfig ¶
type TraceConfig struct {
Enable bool `yaml:"enable"`
}