Objects
An object is a file plus its metadata, stored under a key. Keys are UTF-8
strings up to 1,024 bytes; slashes in them make the "folders" that the console
and ls show, but they are just prefixes.
Upload
aws --endpoint-url "$S3_ENDPOINT" s3 cp ./report.pdf s3://acme-docs/2026/report.pdf \
--content-type application/pdf --metadata department=finance- Up to 5 GiB in one request. The AWS CLI and SDKs switch to multipart uploads for large files automatically.
- An upload replaces any object with the same key. To refuse that, send
If-None-Match: *; to replace only a known version,If-Match: <ETag>. - Standard headers (
Content-Type,Cache-Control,Content-Disposition,Content-Encoding…) andx-amz-meta-*metadata (up to 2 KB) are stored and returned on download.
Integrity
SwiftFS verifies what it receives before keeping it: Content-MD5, the
SHA-256 of signed payloads, and x-amz-checksum-* checksums (CRC32, CRC32C,
CRC64NVME, SHA-1, SHA-256), including the trailing checksums the AWS SDKs
send by default. A mismatch rejects the upload, and nothing is stored.
Stored data is re-read in the background and compared with its checksums, so damage on disk is found rather than served.
Download
aws --endpoint-url "$S3_ENDPOINT" s3 cp s3://acme-docs/2026/report.pdf .GetObject supports single byte ranges (Range: bytes=0-1023), conditional
requests (If-Match, If-None-Match, If-Modified-Since,
If-Unmodified-Since), partNumber, and response-* parameters that
override the headers of the response (for example Content-Disposition, to
make a presigned link download under another name).
List
aws --endpoint-url "$S3_ENDPOINT" s3 ls s3://acme-docs/2026/
aws --endpoint-url "$S3_ENDPOINT" s3api list-objects-v2 --bucket acme-docs --prefix 2026/ --delimiter /ListObjectsV2 and ListObjects return keys in byte order, 1,000 at most per
page, with prefix, delimiter (for folders), start-after and continuation
tokens.
Copy and delete
aws --endpoint-url "$S3_ENDPOINT" s3 cp s3://acme-docs/2026/report.pdf s3://acme-archive/report.pdf
aws --endpoint-url "$S3_ENDPOINT" s3 rm s3://acme-docs/2026/report.pdf
aws --endpoint-url "$S3_ENDPOINT" s3 rm s3://acme-docs/drafts/ --recursiveCopies stay on the server, within or across buckets of the same organization. Deleting a key that doesn't exist succeeds, as in S3. DeleteObjects removes up to 1,000 keys in one request. Deletes are free.
Not yet supported
Versions (an overwrite or a delete is final), the object tagging API, Object
Lock, server-side encryption headers (rejected, never silently ignored),
storage classes other than STANDARD, and several byte ranges in one GET.