Skip to content

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

Terminal
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…) and x-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

Terminal
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

Terminal
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

Terminal
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/ --recursive

Copies 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.