Documentation
¶
Overview ¶
Package objaws provides an implementation of 'objstore.Client' for use with AWS S3.
Index ¶
- Constants
- Variables
- func AddSchemeIfMissing(endpoint string, provider objval.Provider) string
- type AWSLogger
- type AWSOptions
- type AWSRetryer
- func (a *AWSRetryer) GetInitialToken() (releaseToken func(error) error)
- func (a *AWSRetryer) GetRetryToken(ctx context.Context, opErr error) (releaseToken func(error) error, err error)
- func (a *AWSRetryer) IsErrorRetryable(err error) bool
- func (a *AWSRetryer) MaxAttempts() int
- func (a *AWSRetryer) RetryDelay(attempt int, opErr error) (time.Duration, error)
- type Client
- func (c *Client) AbortMultipartUpload(ctx context.Context, opts objcli.AbortMultipartUploadOptions) error
- func (c *Client) AppendToObject(ctx context.Context, opts objcli.AppendToObjectOptions) (*objval.ObjectAttrs, error)
- func (c *Client) Close() error
- func (c *Client) CompleteMultipartUpload(ctx context.Context, opts objcli.CompleteMultipartUploadOptions) (*objval.ObjectAttrs, error)
- func (c *Client) CopyObject(ctx context.Context, opts objcli.CopyObjectOptions) (*objval.ObjectAttrs, error)
- func (c *Client) CreateMultipartUpload(ctx context.Context, opts objcli.CreateMultipartUploadOptions) (string, error)
- func (c *Client) DeleteDirectory(ctx context.Context, opts objcli.DeleteDirectoryOptions) error
- func (c *Client) DeleteObjectVersions(ctx context.Context, opts objcli.DeleteObjectVersionsOptions) error
- func (c *Client) DeleteObjects(ctx context.Context, opts objcli.DeleteObjectsOptions) error
- func (c *Client) GetBucketLockingStatus(ctx context.Context, opts objcli.GetBucketLockingStatusOptions) (*objval.BucketLockingStatus, error)
- func (c *Client) GetBucketVersioningStatus(ctx context.Context, opts objcli.GetBucketLockingStatusOptions) (*objval.BucketVersioningStatus, error)
- func (c *Client) GetObject(ctx context.Context, opts objcli.GetObjectOptions) (*objval.Object, error)
- func (c *Client) GetObjectAttrs(ctx context.Context, opts objcli.GetObjectAttrsOptions) (*objval.ObjectAttrs, error)
- func (c *Client) GetObjectLock(ctx context.Context, opts objcli.GetObjectLockOptions) (*objval.ObjectAttrs, error)
- func (c *Client) IterateObjects(ctx context.Context, opts objcli.IterateObjectsOptions) error
- func (c *Client) ListParts(ctx context.Context, opts objcli.ListPartsOptions) ([]objval.Part, error)
- func (c *Client) Provider() objval.Provider
- func (c *Client) PutObject(ctx context.Context, opts objcli.PutObjectOptions) (*objval.ObjectAttrs, error)
- func (c *Client) SetObjectLock(ctx context.Context, opts objcli.SetObjectLockOptions) error
- func (c *Client) UploadPart(ctx context.Context, opts objcli.UploadPartOptions) (objval.Part, error)
- func (c *Client) UploadPartCopy(ctx context.Context, opts objcli.UploadPartCopyOptions) (objval.Part, error)
- type ClientOptions
Constants ¶
const ( // PageSize is the default page size used by AWS. PageSize = 1_000 // MaxUploadParts is the maximum number of parts for a multipart upload in AWS. MaxUploadParts = 10_000 // MinUploadSize is the minimum size for a multipart upload in AWS. MinUploadSize = 5 * 1024 * 1024 )
Variables ¶
var ( // ErrStaticCredentialsRequired - Returned if the user has disabled shared config loading but they haven't provided // static credentials. ErrStaticCredentialsRequired = errors.New("when shared config and instance metadata " + "are both disabled, static credentials must be provided") // ErrRegionRequiredWhenStaticConfigDisabled - Returned if the user has disabled shared config loading but they // haven't provided the '--obj-region' flag. ErrRegionRequiredWhenStaticConfigDisabled = errors.New("when shared config is disabled, a region must be provided") )
Functions ¶
func AddSchemeIfMissing ¶ added in v8.4.0
AddSchemeIfMissing - Returns the endpoint with "https://" prepended if it doesn't already have a scheme. If the endpoint is empty, a scheme is present, or the provider is not AWS, the endpoint is returned as is.
Types ¶
type AWSLogger ¶ added in v8.4.0
type AWSLogger struct {
// contains filtered or unexported fields
}
AWSLogger - Implementation of the logger interface for AWS which redirects logging using 'log'.
func AWSNewConfig ¶ added in v8.4.0
func NewAWSLogger ¶ added in v8.4.0
func NewAWSLogger() *AWSLogger
NewAWSLogger - Create a new AWS logger which by default is disabled meaning all logging is ignored.
func (*AWSLogger) GetEnabled ¶ added in v8.4.0
GetEnabled - Get whether logging is enabled/disabled.
func (*AWSLogger) Logf ¶ added in v8.4.0
func (a *AWSLogger) Logf(_ logging.Classification, format string, v ...any)
Log - Implement the logger interface for the AWS SDK; this function simply redirects logging using 'log'.
func (*AWSLogger) SetEnabled ¶ added in v8.4.0
SetEnabled - Set logging to enabled/disabled.
type AWSOptions ¶ added in v8.4.0
type AWSOptions struct {
TLSConfig *tls.Config
Region string
AccessKeyID string
SecretAccessKey string
RefreshToken string
AuthByInstanceMetaData bool
LogLevel string
}
AWSOptions contains the options used by AWSNewConfig. It mirrors the fields of CloudContainerOptions that are used when building an AWS config.
type AWSRetryer ¶ added in v8.4.0
type AWSRetryer struct {
// contains filtered or unexported fields
}
AWSRetryer - Extends the 'DefaultRetryer' provided by the AWS SDK to retry some additional errors which users are expected to hit in 'cbbackupmgr'.
func NewAWSRetryer ¶ added in v8.4.0
func NewAWSRetryer() *AWSRetryer
NewAWSRetryer - Returns a new AWS retryer with a user configurable number of retries.
func (*AWSRetryer) GetInitialToken ¶ added in v8.4.0
func (a *AWSRetryer) GetInitialToken() (releaseToken func(error) error)
GetInitialToken returns the initial attempt token that can increment the retry token pool if the attempt is successful.
func (*AWSRetryer) GetRetryToken ¶ added in v8.4.0
func (a *AWSRetryer) GetRetryToken(ctx context.Context, opErr error) (releaseToken func(error) error, err error)
GetRetryToken attempts to deduct the retry cost from the retry token pool. Returning the token release function, or error.
func (*AWSRetryer) IsErrorRetryable ¶ added in v8.4.0
func (a *AWSRetryer) IsErrorRetryable(err error) bool
func (*AWSRetryer) MaxAttempts ¶ added in v8.4.0
func (a *AWSRetryer) MaxAttempts() int
MaxAttempts returns the maximum number of attempts that can be made for an attempt before failing. A value of 0 implies that the attempt should be retried until it succeeds if the errors are retryable.
func (*AWSRetryer) RetryDelay ¶ added in v8.4.0
RetryDelay returns the delay that should be used before retrying the attempt. Will return error if the delay could not be determined.
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client implements the 'objcli.Client' interface allowing the creation/management of objects stored in AWS S3.
func NewClient ¶
func NewClient(options ClientOptions) *Client
NewClient returns a new client which uses the given 'serviceAPI', in general this should be the one created using the 's3.New' function exposed by the SDK.
func (*Client) AbortMultipartUpload ¶
func (*Client) AppendToObject ¶
func (c *Client) AppendToObject(ctx context.Context, opts objcli.AppendToObjectOptions) (*objval.ObjectAttrs, error)
func (*Client) CompleteMultipartUpload ¶
func (c *Client) CompleteMultipartUpload( ctx context.Context, opts objcli.CompleteMultipartUploadOptions, ) (*objval.ObjectAttrs, error)
func (*Client) CopyObject ¶
func (c *Client) CopyObject(ctx context.Context, opts objcli.CopyObjectOptions) (*objval.ObjectAttrs, error)
func (*Client) CreateMultipartUpload ¶
func (*Client) DeleteDirectory ¶
DeleteDirectory deletes all objects in a specific directory of a bucket. This does not delete old versions of objects if any.
func (*Client) DeleteObjectVersions ¶
func (*Client) DeleteObjects ¶
func (*Client) GetBucketLockingStatus ¶
func (c *Client) GetBucketLockingStatus( ctx context.Context, opts objcli.GetBucketLockingStatusOptions, ) (*objval.BucketLockingStatus, error)
func (*Client) GetBucketVersioningStatus ¶ added in v8.1.0
func (c *Client) GetBucketVersioningStatus( ctx context.Context, opts objcli.GetBucketLockingStatusOptions, ) (*objval.BucketVersioningStatus, error)
func (*Client) GetObjectAttrs ¶
func (c *Client) GetObjectAttrs(ctx context.Context, opts objcli.GetObjectAttrsOptions) (*objval.ObjectAttrs, error)
func (*Client) GetObjectLock ¶ added in v8.3.0
func (c *Client) GetObjectLock(ctx context.Context, opts objcli.GetObjectLockOptions) (*objval.ObjectAttrs, error)
func (*Client) IterateObjects ¶
func (*Client) PutObject ¶
func (c *Client) PutObject(ctx context.Context, opts objcli.PutObjectOptions) (*objval.ObjectAttrs, error)
func (*Client) SetObjectLock ¶
func (*Client) UploadPart ¶
func (*Client) UploadPartCopy ¶
type ClientOptions ¶
type ClientOptions struct {
// ServiceAPI is the is the minimal subset of functions that we use from the AWS SDK, this allows for a greatly
// reduce surface area for mock generation.
//
// NOTE: Required
ServiceAPI serviceAPI
// Logger is the passed logger which implements a custom Log method
Logger *slog.Logger
// contains filtered or unexported fields
}
ClientOptions encapsulates the options for creating a new AWS Client.