68 lines
2 KiB
Markdown
68 lines
2 KiB
Markdown
|
|
# MinIO ASL Store Adapter
|
||
|
|
|
||
|
|
This adapter provides an S3-compatible `ASL/1-STORE` backend for MinIO. It is
|
||
|
|
opt-in for conformance runs and does not require MinIO or any external services
|
||
|
|
at build time.
|
||
|
|
|
||
|
|
## Required environment
|
||
|
|
|
||
|
|
These are required when running conformance against the MinIO backend:
|
||
|
|
|
||
|
|
- `AMDUAT_MINIO_ENDPOINT` (e.g. `http://localhost:9000`)
|
||
|
|
- `AMDUAT_MINIO_BUCKET` (e.g. `amduat`)
|
||
|
|
- `AMDUAT_MINIO_ACCESS_KEY`
|
||
|
|
- `AMDUAT_MINIO_SECRET_KEY`
|
||
|
|
|
||
|
|
Optional configuration:
|
||
|
|
|
||
|
|
- `AMDUAT_MINIO_REGION` (default: `us-east-1`)
|
||
|
|
- `AMDUAT_MINIO_PREFIX` (default: `asl`)
|
||
|
|
- `AMDUAT_MINIO_FORCE_PATH_STYLE` (default: `1`)
|
||
|
|
- `AMDUAT_MINIO_TLS_VERIFY` (default: `1`)
|
||
|
|
- `AMDUAT_MINIO_TIMEOUT_MS` (default: `30000`)
|
||
|
|
- `AMDUAT_MINIO_RETRY_MAX` (default: `3`)
|
||
|
|
|
||
|
|
## Conformance runs
|
||
|
|
|
||
|
|
MinIO is skipped unless explicitly enabled.
|
||
|
|
|
||
|
|
Example (opt-in conformance run):
|
||
|
|
|
||
|
|
```sh
|
||
|
|
AMDUAT_CONFORMANCE_ENABLE_MINIO=1 \
|
||
|
|
AMDUAT_MINIO_ENDPOINT=http://localhost:9000 \
|
||
|
|
AMDUAT_MINIO_BUCKET=amduat \
|
||
|
|
AMDUAT_MINIO_ACCESS_KEY=minioadmin \
|
||
|
|
AMDUAT_MINIO_SECRET_KEY=minioadmin \
|
||
|
|
./build/amduat_conformance_run --suite asl --backend minio --workdir /tmp/amduat_conformance
|
||
|
|
```
|
||
|
|
|
||
|
|
If required environment variables are missing, the backend is reported as
|
||
|
|
`SKIPPED` with the missing variable names.
|
||
|
|
|
||
|
|
## Key layout
|
||
|
|
|
||
|
|
Objects are stored under a sharded key derived from the canonical reference
|
||
|
|
hex:
|
||
|
|
|
||
|
|
```
|
||
|
|
<prefix>/<r0r1>/<r2r3>/<full_reference_hex>
|
||
|
|
```
|
||
|
|
|
||
|
|
## Error mapping
|
||
|
|
|
||
|
|
| HTTP/S3 response | Canonical taxonomy | Store error |
|
||
|
|
| --- | --- | --- |
|
||
|
|
| 404 | NotFound | `AMDUAT_ASL_STORE_ERR_NOT_FOUND` |
|
||
|
|
| 401, 403 | PermissionDenied | `AMDUAT_ASL_STORE_ERR_IO` |
|
||
|
|
| 408, 429 | TransientIO | `AMDUAT_ASL_STORE_ERR_IO` |
|
||
|
|
| 5xx | TransientIO | `AMDUAT_ASL_STORE_ERR_IO` |
|
||
|
|
| 4xx (other) | InvalidArtifact | `AMDUAT_ASL_STORE_ERR_INTEGRITY` |
|
||
|
|
| Network/TLS/parse errors | InternalError/TransientIO | `AMDUAT_ASL_STORE_ERR_IO` |
|
||
|
|
|
||
|
|
## Limitations
|
||
|
|
|
||
|
|
- HTTPS is not supported yet (HTTP-only). Use `http://` endpoints for now.
|
||
|
|
- Multipart uploads, streaming artifacts, and very large objects are not
|
||
|
|
implemented in Phase 0.
|