package aws-s3

  1. Overview
  2. Docs

S3 functions All function requires a region, scheme and credentials.

The default region is Us_east_1.

The default scheme is http. If you are connecting from outside AWS, it is strongly recommended that you use https. To use https, make sure to have the relevant opam packages installed: async_ssl for async and lwt_ssl/tls for lwt. Please note that connections are not reused due to a limitation on the AWS endpoint.

If no credentials is provided, the requests will not be signed, The bucket / objects need to be configured accordingly.

IPv6 connection can be set globally using the function: Aws_s3.S3.Make.set_connection_type.

Parameters

module Io : Types.Io

Signature

type error =
  1. | Redirect of Region.t
  2. | Throttled
  3. | Unknown of int * string
  4. | Failed of exn
  5. | Not_found
type etag = string
type storage_class =
  1. | Standard
  2. | Standard_ia
  3. | Onezone_ia
  4. | Reduced_redundancy
  5. | Glacier
type content = {
  1. storage_class : storage_class;
  2. size : int;
  3. last_modified : float;
    (*

    Seconds since epoch

    *)
  4. key : string;
  5. etag : etag;
    (*

    Etag as a string. this us usually the MD5, unless the object was constructed by multi-upload

    *)
}
type nonrec 'a result = ('a, error) result Io.Deferred.t
type 'a command = ?scheme:[ `Http | `Https ] -> ?credentials:Credentials.t -> ?region:Region.t -> 'a
module Ls : sig ... end
module Delete_multi : sig ... end
type range = {
  1. first : int option;
  2. last : int option;
}
val set_connection_type : Unix.socket_domain -> unit

Globally switch between IPv4 or IPv6 connections. This will affect all following operations on buckets/objects. Defaut is to use IPv4, but may change in the future. Unix domain sockets are not supported.

val put : (?content_type:string -> ?content_encoding:string -> ?acl:string -> ?cache_control:string -> ?expect:bool -> bucket:string -> key:string -> data:string -> unit -> etag result) command

Upload data to bucket/key. Returns the etag of the object. The etag is the md5 checksum (RFC 1864)

  • parameter expect

    If true, the body will not be sent until a status has been received from the server. This incurs a delay in transfer, but avoid sending a large body, if the request can be know to fail before the body is sent.

val get : (?range:range -> bucket:string -> key:string -> unit -> string result) command

Download key from s3 in bucket If range is specified, only a part of the file is retrieved:

  • If first is None, then start from the beginning of the object.
  • If last is None, then get to the end of the object.
val head : (bucket:string -> key:string -> unit -> content result) command

Call head on the object to retrieve info on a single object

val delete : (bucket:string -> key:string -> unit -> unit result) command

Delete key from bucket.

val delete_multi : (bucket:string -> objects:Delete_multi.objekt list -> unit -> Delete_multi.result result) command

Delete multiple objects from bucket.

The result will indicate which items failed and which are deleted. If an item is not found it will be reported as successfully deleted (the operation is idempotent).

val ls : (?continuation_token:string -> ?prefix:string -> ?max_keys:int -> bucket:string -> unit -> Ls.t) command

List contents in bucket Aws will return at most 1000 keys per request. If not all keys are returned, the function will return a continuation.

module Stream : sig ... end

Streaming functions. Streaming function seeks to limit the amount of used memory used when operating of large objects by operating on streams.

module Multipart_upload : sig ... end
val retry : ?region:Region.t -> retries:int -> f:(?region:Region.t -> unit -> 'a result) -> unit -> 'a result

Helper function to handle error codes. The function handle redirects and throttling.

OCaml

Innovation. Community. Security.