---
id: "s3"
type: "component"
kind: "object-store"
provider: "aws"
category: "data"
docs: "https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html"
url: "https://localhost:3000/catalogue/components/s3"
---

# Amazon S3

Managed multi-zone object store with eleven nines of durability and strong read-after-write.

| | |
|---|---|
| Provider | [aws](https://localhost:3000/catalogue?provider=aws) |
| Kind | [Object store](https://localhost:3000/catalogue/kinds/object-store) |
| Category | Data |
| Official docs | [https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) |

## Properties

| property | type | values | required | kind default | this component |
|---|---|---|---|---|---|
| `checksumOnWrite` (advanced) | boolean | — | no | false | **true** |
| `crossRegionReplication` | boolean | — | no | false | inherited |
| `durabilityNines` (advanced) | integer | — | no | — | **11** |
| `encryptionAtRest` | boolean | — | no | false | **true** |
| `managed` | boolean | — | no | false | **true** |
| `objectLock` | boolean | — | no | false | inherited |
| `replication` | enum | `none`, `primary-secondary`, `quorum`, `erasure-coded` | no | "none" | **"erasure-coded"** |
| `storageClass` | enum | `standard`, `intelligent-tiering`, `standard-ia`, `one-zone-ia`, `glacier`, `deep-archive` | no | "standard" | inherited |
| `strongReadAfterWrite` (advanced) | boolean | — | no | false | **true** |
| `tier` | enum | `hot`, `warm`, `cold` | no | "hot" | inherited |
| `versioning` | boolean | — | no | false | **false** |
| `zones` | integer | — | no | — | **3** |

Bold values are the ones this component pins.

## Rules that apply · 1

### Object store in fewer than three zones with a durability target `object-store-single-zone-with-durability-target` (error)

- Page: https://localhost:3000/catalogue/rules/object-store-single-zone-with-durability-target.md
- Why: Eleven nines of durability assumes redundancy spread over at least three failure domains. An object store confined to fewer zones, or declaring none, cannot reach the target the design states.
- Applies to: every node of kind object-store
- Message: Object store '{{node.id}}' spans fewer than 3 zones (or declares none) while the design targets more than 10 nines of durability.

It fires when:

- all of these hold:
  - the design requirement `durability.annualNines` is a number greater than 10
  - any of these hold:
    - the node's `zones` has no value
    - the node's `zones` is a number less than 3

## Other products of the same kind · 32

- [Object Storage Service](https://localhost:3000/catalogue/components/alibaba-oss.md) `alibaba-oss` — alibabacloud
- [AWS HealthImaging](https://localhost:3000/catalogue/components/aws-healthimaging.md) `aws-healthimaging` — aws
- [AWS HealthOmics](https://localhost:3000/catalogue/components/aws-healthomics.md) `aws-healthomics` — aws
- [Amazon S3 Express One Zone](https://localhost:3000/catalogue/components/aws-s3-express-one-zone.md) `aws-s3-express-one-zone` — aws
- [Amazon S3 Glacier](https://localhost:3000/catalogue/components/aws-s3-glacier.md) `aws-s3-glacier` — aws
- [Amazon S3 Tables](https://localhost:3000/catalogue/components/aws-s3-tables.md) `aws-s3-tables` — aws
- [Amazon Security Lake](https://localhost:3000/catalogue/components/aws-security-lake.md) `aws-security-lake` — aws
- [Azure Blob Storage](https://localhost:3000/catalogue/components/azure-blob-storage.md) `azure-blob-storage` — azure
- [Azure Data Lake Storage](https://localhost:3000/catalogue/components/azure-data-lake-storage.md) `azure-data-lake-storage` — azure
- [Microsoft Planetary Computer Pro](https://localhost:3000/catalogue/components/azure-planetary-computer.md) `azure-planetary-computer` — azure
- [Cache Reserve](https://localhost:3000/catalogue/components/cloudflare-cache-reserve.md) `cloudflare-cache-reserve` — cloudflare
- [Cloudflare Images](https://localhost:3000/catalogue/components/cloudflare-images.md) `cloudflare-images` — cloudflare
- [Cloudflare R2](https://localhost:3000/catalogue/components/cloudflare-r2.md) `cloudflare-r2` — cloudflare
- [Backblaze B2 Cloud Storage](https://localhost:3000/catalogue/components/backblaze-b2.md) `backblaze-b2` — default
- [Blob store](https://localhost:3000/catalogue/components/blob-store.md) `blob-store` — default
- [Ceph RADOS Gateway](https://localhost:3000/catalogue/components/ceph-rgw.md) `ceph-rgw` — default
- [Cloudinary](https://localhost:3000/catalogue/components/cloudinary.md) `cloudinary` — default
- [Garage](https://localhost:3000/catalogue/components/garage.md) `garage` — default
- [lakeFS](https://localhost:3000/catalogue/components/lakefs.md) `lakefs` — default
- [MinIO](https://localhost:3000/catalogue/components/minio.md) `minio` — default
- [Generic object store](https://localhost:3000/catalogue/components/object-store.md) `object-store` — default
- [Apache Ozone](https://localhost:3000/catalogue/components/ozone.md) `ozone` — default
- [SeaweedFS](https://localhost:3000/catalogue/components/seaweedfs.md) `seaweedfs` — default
- [Storj](https://localhost:3000/catalogue/components/storj.md) `storj` — default
- [OpenStack Swift](https://localhost:3000/catalogue/components/swift.md) `swift` — default
- [Wasabi Hot Cloud Storage](https://localhost:3000/catalogue/components/wasabi.md) `wasabi` — default
- [Spaces Object Storage](https://localhost:3000/catalogue/components/digitalocean-spaces.md) `digitalocean-spaces` — digitalocean
- [Google Cloud Storage](https://localhost:3000/catalogue/components/gcs.md) `gcs` — gcp
- [IBM Cloud Object Storage](https://localhost:3000/catalogue/components/ibm-cloud-object-storage.md) `ibm-cloud-object-storage` — ibm
- [OCI Archive Storage](https://localhost:3000/catalogue/components/oci-archive-storage.md) `oci-archive-storage` — oci
- [OCI Object Storage](https://localhost:3000/catalogue/components/oci-object-storage.md) `oci-object-storage` — oci
- [OUTSCALE Object Storage (OOS)](https://localhost:3000/catalogue/components/outscale-oos.md) `outscale-oos` — outscale

## Use it in a design

```yaml
nodes:
  - { id: "s3", component: "s3" }
```

## Source (`component` YAML, verbatim)

```yaml
# yaml-language-server: $schema=../../schema/component.schema.json
# Amazon S3: managed object store spread over three zones with eleven nines of durability,
# strong read-after-write, default encryption and opt-in versioning.
schemaVersion: "1"
type: "component"
id: "s3"
kind: "object-store"
provider: "aws"
docs: "https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html"
defaults:
  zones: 3
  durabilityNines: 11
  replication: "erasure-coded"
  strongReadAfterWrite: true
  checksumOnWrite: true
  encryptionAtRest: true
  versioning: false
  managed: true
properties:
  storageClass:
    type: "enum"
    values: ["standard", "intelligent-tiering", "standard-ia", "one-zone-ia", "glacier", "deep-archive"]
    default: "standard"
  crossRegionReplication:
    type: "boolean"
    default: false
```

Human page: https://localhost:3000/catalogue/components/s3
