This blogpost has been posted over two years ago. That is a long time in development-world! The story here may
not be relevant, complete or secure. Code might not be complete or obsoleted, and even my current vision might
have (completely) changed on the subject. So please do read further, but use it with caution.
Posted on 20 May 2020
[ aws ]
[ amazon ]
More often than not, I’m using Amazon Web Services (AWS) as my “cloud”. Not only for my own projects, but almost all customers I’m working for use Amazon for hosting their applications. So over time you build up a lot of experience on AWS service: you know how to (correctly) setup VPC’s, know when to you ECS, EC2 or lambda to host code and even services like S3, SNS and SQS pose no challenges anymore.
But there are a lot of AWS services available. And I do mean: a LOT. Currently, there are 163 (!) different services that are available from the Amazon Dashboard, each with their own way of working, difficulties, catches and best practises.
You might realise that it’s probably near impossible to dive into each service and completely understand how they work and most likely, you don’t really need to know the exact ins and outs. But, having a basic understanding on each service can be a major benefit as a developer, architect or administrator. It makes it easier to see if there is an already existing solution for your
problem at hand.
So, I dove into each and every service to figure out what it exactly was for and how it works in the basics. I tried to experiment with as many components as possible (time and money permitting, I didn’t want to spend 15.000$ on AWS Data Exchange). I tried to capture what the service does in a single one-liner to give you a global overview.
I think most of them are correct enough but if you have any suggestions or corrections, please tell me!
|Virtual Private Servers
|Amazon’s hosting provider (vps, dns, storage)
|Functions you can run, written in Python, NodeJS, Go etc. Can run many in parallel.
|Run software jobs in Docker containers on EC2 machines
|Run software on managed virtual machines
|Serverless Application Repository
|Repository of serverless applications that you can deploy (on lambda)
|Run Amazon services in your own data center
|EC2 Image Builder
|Create EC2 (ami?) images automatically
|File / object storage. Not primarily used for mounting as filesystem, but you can directly download files through HTTP.
|NFS. Mount network disks to your machines.
|Windows / Lustre filesystems you can connect to your ec2 machines
|Low cost storage system for backups and archives and such
|iSCSI so you can connect s3 to your own (remote) machine.
|Automatically create backups of different AWS service (ec2, rds etc)
|Managed mysql, postgres databases etc.
|Large & scalable non-relational database
|Managed memcache and redis machines
|Warehousing. Store lots of data that can be processed through streams.
|Database for immutable and cryptographically verifiable data (money transactions etc)
|MongoDB clone (but not really compatible anymore)
|Managed Apache Cassandra clone
|Migration & Transfer
|AS Migration Hub
|Migrate things from your DC to AWS
|Application Discovery Service
|Discover services in your datacenter
|Database Migration Service
|Migrate databases to RDS while staying online (can convert structures as well)
|Server Migration Service
|Migrate virtual machines to amazon.
|AWS Transfer Family
|(s)FTP service with S3 backend. Upload to FTP, directly store on S3 bucket.
|Get a machine from AWS, plug in your DC, transfer data fast to AWS, return machine
|Sync data between your datacenter and AWS
|Networking & Content Delivery
|Create your own virtual private network within AWS.
|Content Delivery Network.
|Manage domain names and records.
|Create HTTP APIs and let them connect to different backends.
|Create a (physical) connection between you (or DC) to AWS.
|AWS App Mesh
|Automatically run Envoy as a sidecar for your containers (ECS or EKS).
|AWS Cloud Map
|Service discovery for your containers.
|Run your app on edge locations so they are closer to your customers (CDN for apps).
|Quickly develop applications by using template code and codecommit, codebuild etc
|Amazon source repositories (git repo’s etc)
|Code delivery with workflows
|Allows tracing in your applications, supports Python, NodeJs, Go etc.
|Cloud solution for robotic developers to simulate, test and securely deploy robotic applications
|Job board: Hire AWS experts for whatever you need.
|AWS support center
|Let AWS handle your AWS services for you.
|Amazon Managed Blockchain
|Timeshare radios and large antennas pointed at space
|Some quantum thing. It’s in preview so I have no idea what it is.
|Management & Governance
|Configure (sub)organisations and accounts
|Logging from various AWS components
|AWS Auto Scaling
|Scale resources based on your custom inputs and rules
|Templates to create and configure AWS components (think terraform/sls)
|Figure out who did what in your AWS services
|Audit the configurations of your AWS resources
|Use Ansible to automate stuff
|Manage list of items/codes etc you have in the cloud
|View data from your resources grouped in ways you like (like application specific etc)
|Store and publish application configuration data
|Checks your account for issues (costs, performance, security etc)
|AWS License Manager
|AWS Well-Architected Tool
|Generate questionnaires about your architecture to see if you follow best practices
|Personal Health Dashboard
|StatusPage for AWS
|Connect AWS to slack
|Deploy MSSQL or SAP
|AWS Compute Optimizer
|Finds your resources and advices on how to save costs
|Encode files from S3 into different other formats and store back at S3
|Kinesis Video Streams
|Capture media streams
|Convert media into different formats
|Share live video with many others
|Insert advertisements into your broadcasts
|Elemental Appliances & Software
|create videos on-premise. Basically a mix of all of the above services. Seems expensive. Probably is.
|Machine learning tools
|Profile java code with machine learning
|Understand and classify data like emails, tweets etc
|Create forecasts from data
|Amazon Fraud Detector
|in preview so no idea.
|Search service where you can ask questions
|Create voice and chatbots
|Amazon Machine Learning
|Deprecated. Use SageMaker instead.
|Create personalized recommendations based on data (mahout??)
|Convert text to speech in different languages
|Recognize objects and people in images
|Convert text found in images to text (OCR)
|Convert audio to text
|Translates text from one language to another
|A video camera that does machine learning
|Some kind of game where you program a racecar to race against others.
|Amazon Augmented AI
|Let humans in the loop to make AI learn things better
|Computer generated music. It’s as horrible as it sounds.
|Query data stored in s3 buckets.
|AWS version of managed document search system (like elasticsearch)
|Elasticsearch as a service
|Collect massive amount of data so you can do analytics (like ELK?)
|Business Intelligence service
|Move and transform data to dynamodb, rds, s3 etc.
|AWS Data Exchange
|Find APIs which data you can consume, which can be very expensive
|ETL service. Enrich, validate data.
|AWS Lake Formation
|Create data lakes
|Kafka as a service
|Security, Identity, & Compliance
|AWS’s permission system that can control users and AWS services.
|Resource Access Manager
|Share certain AWS resources like Route53, licenses, ec2 with other accounts.
|User and password management system. Useful for managing users for your applications.
|Secrets key/value store. Can automatically rotate secrets.
|Automatically scan your cloudtrail/vpc logs for threats.
|Automatically find (security) issues in your network and machines.
|Analyzes data in your S3 buckets and check for PII data.
|AWS Single Sign-On
|Allow single-sign on to your applications.
|Manage and even create (free) SSL certificates.
|Key Management Service
|Manage secret keys
|Hardware security modules. Allows you to generate and operate on cryptographic keys.
|Active directory as a service
|WAF & Shield
|Web Application Firewall (for loadbalancers, cloudfront, api gateway). Can setup your own rules or use predefined ones
|AWS Firewall Manager
|Firewall manager for different accounts in your organisation
|Documents for cloud compliance (things like 27001 certification etc)
|Overall security checker that uses guardduty, inspector, macie etc
|Log security issues found (from security hub etc)
|Let AWS automatically generate frontend & backend apps and deploy them automatically.
|Part of AWS Amplify now.
|Create API backends that you can connect to. Can be created through AWS Amplify as well.
|AWS BrowserStack. Automatically test apps on many different mobile devices and browsers.
|AR & VR
|3D Editor and Engine for rapidly prototyping AR/VR and 3D experiences
|State machines written in amazon’s own language
|Automatically connects apps together (zapier?). For instance: slack to s3 buckets.
|Some kind of eventbus system
|Simple Notification Service
|Notification system that can notify through email, api endpoints, sms etc.
|Simple Queue Service
|Message queue system
|AWS Cost Management
|AWS Cost Explorer
|Gives an overview and projection of your budgets
|Create budgets for your AWS components
|AWS Marketplace Subscriptions
|Find (and buy) AMI’s with software installed
|AWS call center platform
|Create transactional emails, SMS or voice calls based on templates.
|Simple Email Service
|Send out emails. Email provider.
|Alexa for Business
|Connect Alexa to your business needs.
|AWS version of Zoom.
|AWS version of Gmail / Calendar.
|End User Computing
|Virtual desktops from Windows or Linux.
|Stream applications running native onto your browser
|Store your documents and manage them online.
|Connect mobile users to your intranet.
|Internet Of Things
|Manage fleets of IOT devices through MQTT broker
|RTOS operating system for microcontrollers to automatically connect to IOT-Core or greengrass.
|Manage 1-click buttons that can be connected to other systems like Lambda
|Clean up and save messages from topics into a data-store for analytics
|IoT Device Defender
|Detect unwanted issues on your devices and take actions
|IoT Device Management
|Organize IoT devices into groups, schedule jobs on the devices and configure remote access
|Monitor telemetry from devices and then trigger other AWS services or jobs on the devices themselves
|A message broker can buffer messages for groups of up to 200 devices which can communicate and process data locally if connectivity to IoT Core is intermittent.
|Collect, organize, analyze and visualize data from industrial equipment at scale
|IoT Things Graph
|Cloudformation-like designer for graphing how devices should communicate with other AWS services
|Deploy game servers with low latency on AWS
|Elastic Container Registry
|Store docker images like on DockerHub
|Elastic Container Service
|Run containers, either on your own EC2 machines, or on managed machines called Fargate.
|Elastic Kubernetes Service
|Kubernetes as a service
Thanks to Brian Thomas Smith for filling in the blanks on IoT.
Thanks to all the others from #HN who suggested changes and updates on the different services.
With over 150 services running on Amazon AWS, it’s near impossible to be an expert on all of them. And that’s ok: when you deal with large EKS or ECS clusters, changes are you never will touch the IOT services for instances. I found that most services are pretty well explained and easy to start with.
One of the biggest issues are the IOT services: since I have no experience with smart devices, MQTT or IOT in general, i finally managed to get a simple GO application to connect to IOT-core, and connect different rules, pipelines, analytics etc to it. But even still it’s very unclear what the different services actually do. Hopefully there will be AWS IOT experts out there that can