View Source ProcessHub.Storage.RemoteManifest.S3 (ProcessHub v0.7.0)

S3 adapter for ProcessHub.Storage.RemoteManifest, behind the optional :ex_aws_s3 dependency (with :ex_aws and an HTTP client configured per its documentation). Works with any S3-compatible store.

Experimental

Part of the experimental declared-children feature; may change in future releases.

Stores one object per hub at <prefix>/<hub_id>.manifest. The stored version travels in object metadata; store/4 reads it first and refuses to overwrite a higher version, using a conditional If-Match on the read ETag so a stale writer cannot clobber a copy that changed in between.

Options

  • :bucket (required) — bucket name.
  • :prefix — key prefix, default "process_hub/manifest".
  • :request_fun — 1-arity function receiving a request map %{verb: :head | :get | :put, bucket: b, key: k, body: binary | nil, headers: [{name, value}], meta: [{name, value}]} and returning {:ok, %{status_code: n, headers: [...], body: binary}} | {:error, term} (HTTP failures as {:error, {:http_error, status, body}}). Defaults to dispatching through ExAws; injectable for tests and custom signing.