Configuration reference¶
Every public setting of simplestreams-s3.
Sources and precedence¶
Each setting resolves from, highest first:
- command-line flag;
- environment variable;
- the YAML file named by
--configorSIMPLESTREAMS_S3_CONFIG; - built-in default.
No configuration file is read unless one is named explicitly, and the file is parsed as YAML regardless of extension. Unknown keys and invalid values fail startup.
Example file, usable by both commands:
s3:
bucket: private-images
region: us-west-2
prefix: mirrors/incus
proxy:
listen: :8080
max_streams: 128
logging:
level: info
metrics:
endpoint: collector.internal:4318
interval: 30s
S3 settings (both commands)¶
| YAML key | Flag | Environment variable | Default | Constraint |
|---|---|---|---|---|
s3.bucket |
--s3-bucket |
SIMPLESTREAMS_S3_BUCKET |
— | required; 3–63 characters |
s3.prefix |
--s3-prefix |
SIMPLESTREAMS_S3_PREFIX |
empty | relative path; no leading/trailing slash, empty or dot segments, or backslashes |
s3.region |
--s3-region |
SIMPLESTREAMS_S3_REGION |
SDK default | |
s3.profile |
--s3-profile |
SIMPLESTREAMS_S3_PROFILE |
SDK default | |
s3.expected_bucket_owner |
--s3-expected-bucket-owner |
SIMPLESTREAMS_S3_EXPECTED_BUCKET_OWNER |
empty | AWS account ID sent with every S3 request |
s3.max_attempts |
--s3-max-attempts |
SIMPLESTREAMS_S3_MAX_ATTEMPTS |
3 |
≥ 1 |
s3.max_backoff |
--s3-max-backoff |
SIMPLESTREAMS_S3_MAX_BACKOFF |
1s |
> 0 |
s3.dial_timeout |
--s3-dial-timeout |
SIMPLESTREAMS_S3_DIAL_TIMEOUT |
3s |
> 0 |
s3.tls_handshake_timeout |
--s3-tls-handshake-timeout |
SIMPLESTREAMS_S3_TLS_HANDSHAKE_TIMEOUT |
5s |
> 0 |
s3.response_header_timeout |
--s3-response-header-timeout |
SIMPLESTREAMS_S3_RESPONSE_HEADER_TIMEOUT |
5s |
> 0 |
Publish settings¶
| YAML key | Flag | Environment variable | Default | Constraint |
|---|---|---|---|---|
publish.aliases |
--alias (repeatable) |
SIMPLESTREAMS_S3_ALIASES |
none | no backslashes, commas, colons, or empty/dot path segments |
publish.release_title |
--release-title |
SIMPLESTREAMS_S3_RELEASE_TITLE |
the image's release value |
|
publish.timeout |
--publish-timeout |
SIMPLESTREAMS_S3_PUBLISH_TIMEOUT |
2h |
> 0 |
publish.catalog_timeout |
--catalog-timeout |
SIMPLESTREAMS_S3_CATALOG_TIMEOUT |
30s |
> 0 |
publish.catalog_attempts |
--catalog-attempts |
SIMPLESTREAMS_S3_CATALOG_ATTEMPTS |
4 |
≥ 1 |
Proxy settings¶
| YAML key | Flag | Environment variable | Default | Constraint |
|---|---|---|---|---|
proxy.listen |
--listen |
SIMPLESTREAMS_S3_LISTEN |
:8080 |
host:port |
proxy.max_streams |
--max-streams |
SIMPLESTREAMS_S3_MAX_STREAMS |
64 |
≥ 1 |
proxy.read_header_timeout |
--read-header-timeout |
SIMPLESTREAMS_S3_READ_HEADER_TIMEOUT |
5s |
> 0 |
proxy.idle_timeout |
--idle-timeout |
SIMPLESTREAMS_S3_IDLE_TIMEOUT |
1m |
> 0 |
proxy.upstream_idle_timeout |
--upstream-idle-timeout |
SIMPLESTREAMS_S3_UPSTREAM_IDLE_TIMEOUT |
30s |
> 0 |
proxy.write_idle_timeout |
--write-idle-timeout |
SIMPLESTREAMS_S3_WRITE_IDLE_TIMEOUT |
30s |
> 0 |
proxy.max_header_bytes |
--max-header-bytes |
SIMPLESTREAMS_S3_MAX_HEADER_BYTES |
32768 |
≥ 1 |
proxy.shutdown_delay |
--shutdown-delay |
SIMPLESTREAMS_S3_SHUTDOWN_DELAY |
5s |
> 0 |
proxy.shutdown_grace |
--shutdown-grace |
SIMPLESTREAMS_S3_SHUTDOWN_GRACE |
30s |
> 0 |
proxy.readiness_interval |
--readiness-interval |
SIMPLESTREAMS_S3_READINESS_INTERVAL |
10s |
> 0 |
proxy.readiness_timeout |
--readiness-timeout |
SIMPLESTREAMS_S3_READINESS_TIMEOUT |
2s |
> 0 |
proxy.readiness_staleness |
--readiness-staleness |
SIMPLESTREAMS_S3_READINESS_STALENESS |
30s |
≥ proxy.readiness_interval |
Logging and metrics settings (proxy only)¶
| YAML key | Flag | Environment variable | Default | Constraint |
|---|---|---|---|---|
logging.level |
--log-level |
SIMPLESTREAMS_S3_LOG_LEVEL |
info |
debug, info, warn, or error |
metrics.endpoint |
--metrics-endpoint |
SIMPLESTREAMS_S3_METRICS_ENDPOINT |
empty (disabled) | host:port, no scheme or path |
metrics.interval |
--metrics-interval |
SIMPLESTREAMS_S3_METRICS_INTERVAL |
30s |
> 0 |
metrics.timeout |
--metrics-timeout |
SIMPLESTREAMS_S3_METRICS_TIMEOUT |
10s |
> 0 |
metrics.insecure |
--metrics-insecure |
SIMPLESTREAMS_S3_METRICS_INSECURE |
false |
true requires a loopback metrics.endpoint |
Publish command¶
Exactly two positional arguments: the xz-compressed metadata tarball, then the QCOW2 disk. The inputs must satisfy:
- The tarball is valid xz-compressed tar with exactly one root-level
metadata.yaml(at most 1 MiB; at most 64 MiB total expanded archive) and no container or unified-image payloads. architectureandproperties.architectureagree and resolve toamd64/x86_64orarm64/aarch64.properties.os,properties.release,properties.variant, andproperties.descriptionare non-empty; the first three contain no:,/, or\and no surrounding whitespace;creation_dateis a positive Unix timestamp.- The disk is QCOW2 (version 1–3) with a non-zero virtual size and a cluster size between 512 bytes and 2 MiB.
On success it prints published <product> version <version> and exits 0.
All errors exit 1 with the reason on stderr.
Version command¶
simplestreams-s3 version (or --version) prints
simplestreams-s3 <version> (<commit>) built <date>. Release binaries carry
injected values; source builds print dev (none) built unknown.