S3Store

blobstore.s3.S3Store
See theS3Store companion object
class S3Store[F[_]](s3: S3AsyncClient, crtClient: Option[S3AsyncClient], objectAcl: Option[ObjectCannedACL], sseAlgorithm: Option[ServerSideEncryption], defaultFullMetadata: Boolean, defaultTrailingSlashFiles: Boolean, bufferSize: Int, queueSize: Int)(using evidence$1: ConcurrentEffect[F], evidence$2: Timer[F]) extends Store[F, S3Blob]

Value parameters

bufferSize

– size of the buffer for multipart uploading (used for large streams without size known in advance).

crtClient

optional instance S3CrtAsyncClient, which is used by S3 Transfer Manager (Requires additional runtime dependency, but may lead to faster uploads/downloads).

defaultFullMetadata

– return full object metadata on list, requires additional request per object. Metadata returned by default: size, lastModified, eTag, storageClass. This controls behaviour of list method from Store trait. Use listUnderlying to control on per-invocation basis.

defaultTrailingSlashFiles
  • test if folders returned by list are files with trailing slashes in their names. This controls behaviour of list method from Store trait. Use listUnderlying to control on per-invocation basis.
objectAcl

optional default ACL to apply to all put, move and copy operations.

s3

S3 Async Client.

sseAlgorithm

optional default SSE Algorithm to apply to all put, move and copy operations.

Attributes

See also
Companion
object
Graph
Supertypes
trait Store[F, S3Blob]
class Object
trait Matchable
class Any

Members list

Value members

Concrete methods

def bestClient: S3AsyncClient
override def copy[A, B](src: Url[A], dst: Url[B]): F[Unit]

Copies bytes from srcPath to dstPath. Stores should optimize to use native copy functions to avoid data transfer.

Copies bytes from srcPath to dstPath. Stores should optimize to use native copy functions to avoid data transfer.

Value parameters

dst

path

src

path

Attributes

Returns

F[Unit]

Definition Classes
Store
def copy[A, B](src: Url[A], dst: Url[B], dstMeta: Option[S3MetaInfo]): F[Unit]
override def get[A](url: Url[A], chunkSize: Int): Stream[F, Byte]

Value parameters

chunkSize

bytes to read in each chunk.

url

to get

Attributes

Returns

stream of bytes

Definition Classes
Store
def get[A](url: Url[A], meta: S3MetaInfo): Stream[F, Byte]
override def list[A](url: Url[A], recursive: Boolean): Stream[F, Url[S3Blob]]

Value parameters

recursive

when true returned list would contain files at given path and all sub-folders but no folders, otherwise – return files and folder at given path.

url

to list

Attributes

Returns

stream of Paths. Implementing stores must guarantee that returned Paths have correct values for size, isDir and lastModified.

Example

Given Path pointing at folder: folder/a folder/b folder/c folder/sub-folder/d folder/sub-folder/sub-sub-folder/e list(folder, recursive = true) -> [a, b, c, d, e] list(folder, recursive = false) -> [a, b, c, sub-folder]

Definition Classes
Store
def listUnderlying[A](url: Url[A], fullMetadata: Boolean, expectTrailingSlashFiles: Boolean, recursive: Boolean): Stream[F, Url[S3Blob]]
override def move[A, B](src: Url[A], dst: Url[B]): F[Unit]

Moves bytes from srcPath to dstPath. Stores should optimize to use native move functions to avoid data transfer.

Moves bytes from srcPath to dstPath. Stores should optimize to use native move functions to avoid data transfer.

Value parameters

dst

path

src

path

Attributes

Returns

F[Unit]

Definition Classes
Store
def put[A](url: Url[A], overwrite: Boolean, size: Option[Long]): (F, Byte) => Unit

Value parameters

overwrite

when true putting to path with pre-existing file would overwrite the content, otherwise – fail with error.

url

to put

Attributes

Returns

sink of bytes

def put[A](url: Url[A], overwrite: Boolean, size: Option[Long], meta: Option[S3MetaInfo]): (F, Byte) => Unit
override def putRotate[A](computeUrl: F[Url[A]], limit: Long): (F, Byte) => Unit

Writes all data to a sequence of blobs/files, each limited in size to limit.

Writes all data to a sequence of blobs/files, each limited in size to limit.

The computeUrl operation is used to compute the path of the first file and every subsequent file. Typically, the next file should be determined by analyzing the current state of the filesystem -- e.g., by looking at all files in a directory and generating a unique name.

Value parameters

computeUrl

operation to compute the url of the first file and all subsequent files.

limit

maximum size in bytes for each file.

Attributes

Returns

sink of bytes

Note

Put of all files uses overwrite semantic, i.e. if path returned by computeUrl already exists content will be overwritten. If that doesn't suit your use case use computeUrl to guard against overwriting existing files.

Definition Classes
Store
override def remove[A](url: Url[A], recursive: Boolean): F[Unit]

Remove bytes for given path. Call should succeed even if there is nothing stored at that path.

Remove bytes for given path. Call should succeed even if there is nothing stored at that path.

Value parameters

url

to remove

Attributes

Returns

F[Unit]

Definition Classes
Store
override def stat[A](url: Url[A]): Stream[F, Url[S3Blob]]

Attributes

Definition Classes
Store