Expand description
ExportSink that uploads artifact bytes to S3 via a presigned PUT URL.
Upload URL behavior:
- If
presigned_urlcontains{cell_id}or{artifact_name}, those placeholders are replaced. - Else the URL is treated as exact. This is the normal presigned-S3 path.
Receipts and destination hints remain logical s3://bucket/key paths even though the transport
is an HTTP PUT.
Optional retry knobs:
max_attempts— total PUT attempts, including the first tryretry_backoff_ms— fixed delay between transient retries
§Timeout contract (EXPORT-S3-TIMEOUT)
The reqwest client is built with bounded request and connect timeouts so a hung S3 endpoint cannot stall a cell’s export phase indefinitely:
- Request timeout:
DEFAULT_REQUEST_TIMEOUT_MS(override viaCELLOS_EXPORT_S3_TIMEOUT_MS). - Connect timeout:
DEFAULT_CONNECT_TIMEOUT_MS(override viaCELLOS_EXPORT_S3_CONNECT_TIMEOUT_MS).
Both env vars accept a positive u64 count of milliseconds; unparseable or
zero values fall back to the default. Operators can raise the request
timeout for slow large-artifact endpoints, but the client is never
constructed without explicit timeouts.
Structs§
- Presigned
S3Export Sink - S3 export sink using presigned PUT URLs.
Constants§
- DEFAULT_
CONNECT_ TIMEOUT_ MS - Default TCP connect timeout (ms) for the underlying reqwest client.
- DEFAULT_
REQUEST_ TIMEOUT_ MS - Default total request timeout (ms) applied to every artifact PUT.
- ENV_
CONNECT_ TIMEOUT_ MS - Env var to override
DEFAULT_CONNECT_TIMEOUT_MS. - ENV_
REQUEST_ TIMEOUT_ MS - Env var to override
DEFAULT_REQUEST_TIMEOUT_MS.
Functions§
- resolve_
timeout_ ms - Resolve a timeout in milliseconds from the named env var.