AWS has a managed store for most data shapes. This page starts with how to choose, then covers Amazon RDS for relational data, DynamoDB for NoSQL access by partition key, ElastiCache for in-memory caching, and S3 for objects.

Choosing a data store

The three core AWS data services fill different roles.

RDSDynamoDBElastiCache
ModelRelational enginesKey-value and documentIn-memory Valkey, Redis OSS, Memcached
ScalingRead replicas; writes on the primaryPartition keys; on-demand or provisionedShards in cluster mode, or serverless
AvailabilityMulti-AZ synchronous standby1Global tables, 99.999%Multi-AZ automatic failover
Source of truthYesYesNo: treat as disposable2

DynamoDB has its own in-memory cache, DAX, so it doesn’t usually need ElastiCache in front of it.3

Amazon RDS

Amazon Relational Database Service (RDS) runs Db2, MariaDB, SQL Server, MySQL, Oracle, and PostgreSQL with AWS handling backups, patching, and failure recovery. It has two independent scaling axes: Multi-AZ adds a synchronous standby for failover, read replicas add asynchronous copies for reads, and writes always go to the primary.1

Concepts

  • Instance classes: general purpose db.m*, memory optimized db.r*/db.x*/db.z*, compute db.c*, burstable db.t*.
  • Storage: General Purpose and Provisioned IOPS SSD; magnetic is deprecated, with no restore to magnetic after July 1, 2026.
  • Automated backups with point-in-time recovery, plus manual snapshots.
  • VPC and security groups, IAM authentication, KMS encryption at rest, TLS in transit.1

Troubleshooting

SymptomCheck
Connection refusedSG source rules, routing, public accessibility
Storage fullAdd storage; find growth
Failover occurredRDS events, replica lag, primary load
Slow queriesPerformance Insights, indexes, parameter groups
Replica lagReplica class, write load, long transactions

As tabled in the note. Default quota: 40 DB instances per Region.1 See AWS database choices.

Amazon DynamoDB

DynamoDB is a serverless NoSQL database with single-digit millisecond performance at any scale and nothing to patch. Items are distributed by partition key (plus an optional sort key), so tables are designed around access patterns.3

Concepts

  • On-demand capacity (per request, scales to zero) or provisioned RCU/WCU with auto scaling.
  • Global and local secondary indexes; Streams for change data capture; ACID transactions.
  • Global tables: multi-active replication across Regions with 99.999% availability.
  • DAX in-memory cache for up to 10x read performance.
  • Point-in-time recovery up to 35 days; IAM-only access with encryption at rest by default.3

Practices

  • query rather than scan; spread partition keys to avoid hot partitions; TTL to expire data.3

Troubleshooting and limits

SymptomCheck
ProvisionedThroughputExceededExceptionOn-demand or more capacity, backoff, hot keys
Slow scanA GSI and query
Item too largeLimit is 400 KB; store the payload in S3

As tabled in the note. Per-partition throughput is 3,000 RCU and 1,000 WCU.3 See AWS database choices.

Amazon ElastiCache

ElastiCache is a managed in-memory data store and cache, used for query caching, sessions, leaderboards, rate limiting, and pub/sub. It runs Valkey, Redis OSS, or Memcached.

OptionDetail
ServerlessHighly available cache in under a minute, scaling automatically (Valkey 7.2+, Memcached 1.6.22+, Redis OSS 7.1)
Node-basedYou choose node type, count, AZs, cluster mode, patch windows

As tabled in the note.2

Practices

  • Treat the cache as disposable and rebuildable from the database, never the source of truth.
  • Pick an eviction policy such as allkeys-lru; Multi-AZ with automatic failover; TLS and encryption at rest in private subnets.
  • Alarm on evictions and swap usage.2

Troubleshooting

SymptomCheck
High evictionsMemory, maxmemory policy, nodes or shards
Miss spikeExpiry, key design, cold start
Failover not workingMulti-AZ and auto failover enabled, replicas healthy
SlowHot keys, large values, latency

As tabled in the note.2 See AWS database choices.

Amazon S3

Amazon S3 stores any amount of data as objects in buckets, with strong read-after-write consistency for PUT and DELETE in all Regions. Lifecycle rules move objects from frequent-access storage toward archive tiers, or expire them.4

Buckets and storage classes

Bucket typeNote
General purposeRecommended default; globally unique names; private by default
DirectoryLow latency and data residency; public access cannot be enabled
TableApache Iceberg tabular data
VectorVector data
Access patternClasses
FrequentStandard, Express One Zone
InfrequentStandard-IA, One Zone-IA
ArchiveGlacier Instant Retrieval, Flexible Retrieval, Deep Archive
UnknownIntelligent-Tiering across four tiers

As listed in the note.4

Access and protection

  • Private by default with Block Public Access on; prefer IAM policies, bucket policies, and access points over ACLs, which are disabled by default.
  • Versioning, Object Lock (WORM), replication, and SSE-S3 or SSE-KMS encryption.
  • Storage Lens (60+ metrics), Inventory, CloudTrail, and server access logs.4

Troubleshooting and quotas

SymptomCheck
AccessDeniedIdentity, bucket, and access point policies, Block Public Access, SCP/RCP
404 NoSuchKeyKey path, bucket Region, version ID
Cost growthStorage Lens, lifecycle rules, incomplete multipart uploads
Name takenGeneral purpose names are global

As tabled in the note. Defaults: 100 general purpose buckets per account (adjustable), 100 directory buckets, 10 table buckets per Region with up to 10,000 tables each, and objects up to 5 TB in a single PUT.4

Footnotes

  1. Amazon RDS - Runbook & Reference, original ↩ ↩2 ↩3 ↩4

  2. Amazon ElastiCache - Runbook & Reference, original ↩ ↩2 ↩3 ↩4

  3. Amazon DynamoDB - Runbook & Reference, original ↩ ↩2 ↩3 ↩4 ↩5

  4. Amazon S3 - Runbook & Reference, original ↩ ↩2 ↩3 ↩4