Simple Queue Service (SQS)

  • Max message size is 256 KB of text in any format
  • Default message retention period is 4 days, min is 1 minute and max is 14 days
  • Delivery delay: default is 9 and can be set to a max of 15 minutes
  • Queue types: standard and FIFO
  • Use FIFO if message ordering is important
  • Polling types: long and short polling
  • Max long polling wait time is 20 seconds
  • Long polling helps reduce cost of using SQS by elimination the number of empty responses and false empty responses
  • SQS can duplicate messages but this only happens once in a while; if happening consistently check for misconfigured visibility timeout, or missing consumer logic to delete the message after successful processing
  • Messages are encrypted in transit by default and encryption at rest can be optionally added
  • Dead letter queue (DLQ) is a standard SQS queue to send messages that failed being processed to for review
  • Max receives setting in DLQ defines how many times the message may be retried in the main queue before being sent to DLQ
  • CloudWatch can be used to monitor queue depth of DLQ

Simple Notification Service (SNS)

  • Used for proactive push notifications
  • Can be used to set up alarms in CloudWatch
  • Available subscribers: Kinesis data firehose, SQS, Lambda, email, HTTP(S), SMS, platform application endpoint
  • Retry is only available with HTTP(S) subscribers
  • Max message size is 256 KB of text (same as SQS)
  • Has DLQ support
  • FIFO and Standard SNS topics available
  • Messages are encrypted in transit by default and encryption at rest can be optionally added

API Gateway

  • Notable features
    • Web Application Firewall (WAF)
    • Rate limiting and DDoS protection


  • Can store up to 16 PB of data
  • A relational database
  • A redshift cluster lives in a single AZ and thus not highly available

Elastic Map Reduce (EMR)

  • EMR cluster nodes are EC2 instances and thus live inside a VPC
  • EC2 spot and reserved instances can be used to reduce EMR cluster costs


  • Real-time data streaming service
  • 2 types of Kinesis services
    • Data streams: real-time streaming for ingesting data; does not scale automatically
    • Data firehouse: (near real-time) data transfer tool to get information to S3, Redshift, Elasticsearch, or Splunk; scaling is managed by AWS
  • Kinesis can store data for uo to a year as opposed to SQS which has a max 14 day retention period
  • Kinesis Data Analytics allows data transformation using SQL as it flows through Kinesis

Athena and Glue

  • Athena is a serverless interactive query service that can analyse data in S3 using SQL
  • Glue is serverless data integration service for ETL workloads
  • Glue can be used to build a schema of data and Athena can use used to query this data stored in S3