package awskit-s3
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
-
Object Operations
- PutObject and Buffered Upload Helpers
- GetObject, Optional Reads, and Streaming Readers
- HeadObject, Exists, and Metadata Lookup
- DeleteObject and DeleteObjects
- CopyObject
- ListObjectsV2 and Pagination
- Object Versions and Version Listing
- Object Tags and Metadata
- Ranges, Preconditions, Checksums, Storage Class, and Encryption Metadata
- Bucket Operations
- Multipart Uploads
- Transfer Helpers
- Presigned Request Artifacts
- Runtime, Simulator, and Provider Scope
- Explicitly Unsupported S3 Families
S3 client core — objects, buckets, multipart, and policies
Install
dune-project
Dependency
Authors
Maintainers
Sources
awskit-v0.2.0.tbz
sha256=b69c81378d08f443a276b947d9a2b45913495cb61b2ff3aa0ad74d6b071f32f8
sha512=50714b8eda6ea6e589eb34a305afdfa4870a5e8e4240c091ff5cecd309c21fdfda6163fb6449caad5cdaf800857369df5da0534d822cf152ac76fc16fb9216e5
doc/support_matrix.html
S3 Support Matrix
This page records the supported S3 feature scope for awskit-s3. It is a release-reader matrix, not a promise that every AWS S3 feature or every S3-compatible storage provider is supported.
Rows are intentionally conservative:
- supported means the feature is exposed through public
awskit-s3APIs and is covered by the local evidence listed in the row. - supported, scoped means only the modeled fields or operation family named in the row are supported. Adjacent AWS behavior is out of scope until it has a public API and evidence.
- adapter only means the runtime-neutral core has shared option/result types, but the helper itself exists only in named runtime adapters.
- unsupported means Awskit makes no support claim for the feature.
The simulator is deterministic application-level evidence. It is not live AWS coverage and is not a wire-protocol authority. MinIO test coverage is the opt-in local S3-compatible test-double profile run by @s3-local-service; it does not imply support for arbitrary S3-compatible providers.
Object Operations
PutObject and Buffered Upload Helpers
- Status: supported.
- Package/runtime coverage:
Awskit_s3.Object.PutplusObject.put,put_string, andput_bytesfromawskit-s3,awskit-s3-eio,awskit-s3-lwt,awskit-s3-lwt-unix,awskit-s3-sim, and custom runtimes built withAwskit_s3.Make. - Simulator coverage: yes, including known-length request bodies, buffered helpers, validation, checksums, metadata, tags, and version ids.
- MinIO test coverage: yes for object create/read/update/delete flow through the shared contract and targeted MinIO object tests. Response checksum echo is not part of the MinIO capability profile.
- Notes and boundaries: request bodies must have a known content length. Modeled write options include content type, user metadata, storage class, object tags, cache/content headers, write preconditions, explicit checksum values, typed destination encryption request headers, and expected bucket owner. Object Lock headers, ACLs, and arbitrary outbound encryption variants are out of scope.
GetObject, Optional Reads, and Streaming Readers
- Status: supported.
- Package/runtime coverage:
Object.get,get_string,get_bytes,find,find_string,find_bytes, adapterReadermodules, simulatorReader, and custom runtimes. - Simulator coverage: yes, including scoped readers, buffered download limits, optional not-found helpers, range reads, metadata, checksums, and version ids.
- MinIO test coverage: yes for object reads, bounded buffering, range reads, metadata, and copy-related reads. Time-based preconditions and response checksum echo are not part of the MinIO capability profile.
- Notes and boundaries:
get_string,get_bytes,find_string, andfind_bytesrequiremax_bytes.Object.getreaders are scoped to the consumer callback. Modeled options include one byte range, read preconditions, version id, checksum mode, and expected bucket owner. S3 multiple-rangeGETrequests are not supported.
HeadObject, Exists, and Metadata Lookup
- Status: supported.
- Package/runtime coverage:
Object.head,find_metadata, andexistsacross all runtime-backed clients, simulator, and custom runtimes. - Simulator coverage: yes.
- MinIO test coverage: yes through shared object contracts and targeted metadata/copy tests.
- Notes and boundaries:
HeadObjectreturns the same modeled metadata shape asGetObjectwithout a body.find_metadatatreats object not-found responses, including status-onlyHEAD404 responses, asOk None. Missing buckets, authorization failures, transport errors, and decode errors remain errors.
DeleteObject and DeleteObjects
- Status: supported, scoped.
- Package/runtime coverage:
Object.deleteandObject.delete_objectsacross all runtime-backed clients, simulator, and custom runtimes. - Simulator coverage: yes, including current-object deletes, version deletes, delete markers, and per-object
DeleteObjectsresults. - MinIO test coverage: yes for object deletion, bulk deletion, and versioned deletes through the shared contract and targeted MinIO versioning tests. Delete preconditions and one missing-version-delete behavior differ from the strict profile and are recorded in the MinIO capability profile.
- Notes and boundaries:
DeleteObjectmodels version id, expected bucket owner, and ETag delete preconditions.DeleteObjectsaccepts up to 1,000 typed objects with optional version ids and ETag conditions. MFA delete, Object Lock governance bypass, Requester Pays, and directory-bucket-only delete conditions are out of scope.
CopyObject
- Status: supported, scoped.
- Package/runtime coverage:
Object.copyacross all runtime-backed clients, simulator, and custom runtimes. - Simulator coverage: yes, including metadata copy/replace, source version selection, checksums, storage class validation, and embedded copy errors.
- MinIO test coverage: yes for copy, metadata copy/replace, and copying explicit source versions. MinIO does not return every strict-profile source-version echo for current-version copies.
- Notes and boundaries: modeled options include source version id, copy-source preconditions, metadata copy or replacement, storage class, checksum algorithm, typed destination encryption request headers, SSE-C source encryption headers, and source/destination expected-owner guards. Multipart copy, access-point copy sources, Object Lock headers, ACLs, tagging directives, Local Zone restrictions, and Outposts-specific behavior are out of scope.
ListObjectsV2 and Pagination
- Status: supported.
- Package/runtime coverage:
Object.listplusObject.Listpage, fold, object, and key helpers across all runtime-backed clients, simulator, and custom runtimes. - Simulator coverage: yes, including continuation tokens, delimiters, common prefixes, and bounded collection helpers.
- MinIO test coverage: yes through shared list/copy/delete object contracts. Bucket-list exclusivity differs in the MinIO profile, but object-listing contracts are covered for the named test bucket.
- Notes and boundaries: options model prefix, delimiter, max keys, start-after, continuation token, and expected bucket owner. Collection helpers require explicit
max_pagesbounds.ListObjectsv1 is not a supported public API.
Object Versions and Version Listing
- Status: supported, scoped.
- Package/runtime coverage:
Bucket.Versioning.get/put, version-aware object reads, heads, deletes, copies, multipart completion results,Object.list_versions, andObject.Versionspagination helpers. - Simulator coverage: yes, including version ids, delete markers, suspended versioning behavior, and version-list pagination.
- MinIO test coverage: yes for enabling versioning, reading prior versions, copying prior versions, delete markers, and restoring a current object. Version-listing pagination is simulator/protocol evidence in this release rather than part of the MinIO capability profile. Suspended versioning null-version behavior is not part of the MinIO capability profile.
- Notes and boundaries: this is S3 object versioning, not Object Lock, retention, legal hold, MFA delete, lifecycle expiration, replication, or compliance governance.
Object Tags and Metadata
- Status: supported.
- Package/runtime coverage: object metadata on put/get/head/copy, object tag sets on put, and
Object.Tagging.get/put/delete. - Simulator coverage: yes.
- MinIO test coverage: yes through shared object-tagging, metadata, copy, and object create/read/update/delete flow contracts.
- Notes and boundaries: tags and metadata use validated Awskit domain values. Broad ACL, IAM, public-access policy semantics, and provider-specific metadata normalization are out of scope.
Ranges, Preconditions, Checksums, Storage Class, and Encryption Metadata
- Status: supported, scoped.
- Package/runtime coverage: modeled option/result fields in
Awskit_s3.Object,Awskit_s3.Multipart, andAwskit_s3.Transfer. - Simulator coverage: yes for modeled range, ETag/time precondition, checksum, storage class, and encryption metadata behavior that the simulator implements.
- MinIO test coverage: partial. Range reads, ETag preconditions, storage metadata, and selected version/copy behavior are covered. Response checksums, multipart checksums, time preconditions, and delete preconditions are recorded as MinIO capability differences.
- Notes and boundaries: unknown read-side checksum and encryption values are preserved where the public types model them. Unknown outbound checksum algorithms are rejected, while unmodeled storage classes can be sent through
Storage_class.Other. Outbound object encryption is limited to the typedAwskit_s3.Encryptiondestination and source models. Unmodeled checksum variants, arbitrary outbound encryption strings, KMS policy behavior, Object Lock retention, and ACL edge cases are out of scope.
Bucket Operations
Bucket Basics
- Status: supported.
- Package/runtime coverage:
Bucket.create,delete,head,exists,list, andget_locationacross all runtime-backed clients, simulator, and custom runtimes. - Simulator coverage: yes.
- MinIO test coverage: yes through shared bucket create/delete/list flow contracts. Bucket-list exclusivity differs in the MinIO profile because a local MinIO server may expose buckets outside the current test fixture.
- Notes and boundaries: bucket basics target general-purpose buckets. Directory buckets, access points, Object Lambda, S3 on Outposts, bucket ACL setup, object-lock-enabled bucket creation, and AWS redirect policy beyond returned region hints are out of scope.
Selected Bucket Configuration Subresources
- Status: supported, scoped.
- Package/runtime coverage:
Bucket.Policy,Bucket.Versioning,Bucket.Tagging,Bucket.Encryption,Bucket.Cors,Bucket.Public_access_block, andBucket.Ownership_controls. - Simulator coverage: yes for the strict shared contract profile and modeled simulator state.
- MinIO test coverage: partial. MinIO integration tests cover policy, versioning, and tagging roundtrips, with known profile differences for exact policy JSON and deleted bucket tags. Bucket encryption, CORS, public-access-block, and ownership-controls are not enabled in the MinIO capability profile.
- Notes and boundaries: policy operations validate and send JSON payloads, but application IAM policy design and AWS authorization semantics are outside Awskit's support scope. The modeled configuration helpers do not imply support for lifecycle, replication, analytics, inventory, metrics, notifications, website hosting, logging, requester-pays, accelerate configuration, ACLs, or every public-access edge case.
Multipart Uploads
Direct Multipart Operations
- Status: supported.
- Package/runtime coverage:
Multipart.create_upload,upload_part,complete_upload,abort_upload,list_parts, andMultipart.List_partspagination helpers across all runtime-backed clients, simulator, and custom runtimes. - Simulator coverage: yes, including known-length part validation, stream error handling, list-parts pagination, abort behavior, complete-size checks, and checksum validation.
- MinIO test coverage: yes for multipart create/upload/complete/abort flow, list-parts pagination, stale ETag handling, missing-upload behavior, and multipart local-file transfer. Multipart checksum echo is not part of the MinIO capability profile.
- Notes and boundaries: part numbers are limited to S3's 1 to 10,000 range. Part bodies require known content lengths. Modeled options include metadata, tags, storage class, content type, checksum algorithm/type or values, typed destination encryption request headers, SSE-C customer-key headers for upload-part and completion requests, multipart object size, and expected bucket owner. Multipart copy and Object Lock multipart headers are out of scope.
Transfer Helpers
Local File Uploads and Downloads
- Status: adapter only.
- Package/runtime coverage: shared
Awskit_s3.Transferoption, planning, progress, and result types inawskit-s3; executableObject.Transferhelpers inawskit-s3-eioandawskit-s3-lwt-unix.awskit-s3-lwtexposes streaming primitives but does not own Unix paths or managed transfer helpers. - Simulator coverage: no direct filesystem helper. The simulator covers the underlying S3 operations and transfer planning is runtime-neutral.
- MinIO test coverage: yes through Lwt Unix MinIO tests for path upload/download streaming and resumed multipart path transfer.
- Notes and boundaries: small uploads/downloads use one S3 request; larger uploads use multipart upload, and larger downloads use ranged
GetObjectrequests. Download helpers publish through private temporary files. Awskit-created multipart uploads are aborted on helper failure; caller-owned resumed uploads remain caller-owned.
Presigned Request Artifacts
Object and Upload-Part Presigning
- Status: supported, scoped.
- Package/runtime coverage: standalone
Awskit_s3.Presignedhelpers and adapter-boundPresignedmodules forGET Object,PUT Object,HEAD Object,DELETE Object, andUploadPart. - Simulator coverage: yes for adapter-bound generation using simulator credentials, region, clock, and endpoint configuration.
- MinIO test coverage: fixture and unit evidence covers artifact construction; MinIO integration tests primarily exercise runtime operations, not a separate presigned HTTP execution flow.
- Notes and boundaries: artifacts use SigV4 query authentication and
UNSIGNED-PAYLOAD. Raw bearer URLs are hidden behind explicit reveal APIs. Supported options include expiry, selected response overrides, version id, expected bucket owner, checksum headers forPUTandUploadPart, SSE-C source encryption headers forGETandHEAD, typed destination encryption request headers forPUT, SSE-C customer-key headers forUploadPart, and extra signed headers. Presigning is not provided for arbitrary S3 APIs.
Runtime, Simulator, and Provider Scope
Runtime Coverage
- Status: supported.
- Package/runtime coverage: runtime-neutral
awskit-s3, custom runtimes throughAwskit_s3.Make, Eio viaawskit-s3-eio, generic Lwt viaawskit-s3-lwt, ready Lwt Unix viaawskit-s3-lwt-unix, and the deterministic simulator viaawskit-s3-sim. - Simulator coverage: the simulator implements the synchronous client shape, in-memory store, operation history, deterministic clock, and fault injection.
- MinIO test coverage: the named MinIO integration target is tested through
awskit-s3-lwt-unix. - Notes and boundaries: there is no ready Eio Unix aggregate package. Eio callers own HTTPS/TLS, CA roots, RNG initialization, and platform policy. Generic Lwt callers own their Cohttp client and required retry or timeout capabilities.
S3-Compatible Providers and Live AWS
- Status: unsupported unless named by this support policy.
- Package/runtime coverage: endpoint configuration can target local plaintext and custom endpoints, but endpoint configurability is not a provider compatibility promise.
- Simulator coverage: no, simulator evidence is local model evidence.
- MinIO test coverage: MinIO is the named local S3-compatible test double where
@s3-local-servicestates coverage. - Notes and boundaries: arbitrary S3-compatible providers, provider extensions, and provider-specific behavior are unsupported. Live AWS account compatibility is optional/manual and is not a release gate for this support matrix unless the support policy changes.
Explicitly Unsupported S3 Families
Awskit does not claim support for these S3 feature families in this release:
- access points, Object Lambda access points, S3 on Outposts, and directory buckets
- Object Lock, retention, legal hold, governance bypass, and MFA delete
- lifecycle, replication, inventory, analytics, metrics, notifications, logging, website hosting, and requester-pays configuration
- broad ACL management, IAM policy semantics, public-access edge semantics, and unmodeled bucket policy behavior
- arbitrary outbound server-side encryption strings and KMS policy behavior beyond modeled request and response fields
- multipart copy and arbitrary presigning for APIs not listed above
- arbitrary S3-compatible providers and live AWS account release-gate coverage
See SUPPORT.md for the repository-wide support policy.
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
-
Object Operations
- PutObject and Buffered Upload Helpers
- GetObject, Optional Reads, and Streaming Readers
- HeadObject, Exists, and Metadata Lookup
- DeleteObject and DeleteObjects
- CopyObject
- ListObjectsV2 and Pagination
- Object Versions and Version Listing
- Object Tags and Metadata
- Ranges, Preconditions, Checksums, Storage Class, and Encryption Metadata
- Bucket Operations
- Multipart Uploads
- Transfer Helpers
- Presigned Request Artifacts
- Runtime, Simulator, and Provider Scope
- Explicitly Unsupported S3 Families