Heads up: This post is over two years old. Things move fast — the code, tools, or opinions here may be outdated.

Amazon Web Services

← PreviousSymfony's autowiring
Next →Introducting BitMaelum - A new mail concept

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.

Discovering AWS

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!

Compute
EC2Virtual Private Servers
LightsailAmazon’s hosting provider (vps, dns, storage)
LambdaFunctions you can run, written in Python, NodeJS, Go etc. Can run many in parallel.
BatchRun software jobs in Docker containers on EC2 machines
Elastic BeanstalkRun software on managed virtual machines
Serverless Application RepositoryRepository of serverless applications that you can deploy (on lambda)
AWS OutpostsRun Amazon services in your own data center
EC2 Image BuilderCreate EC2 (ami?) images automatically
{:.aws_tables}
Storage
S3File / object storage. Not primarily used for mounting as filesystem, but you can directly download files through HTTP.
EFSNFS. Mount network disks to your machines.
FSxWindows / Lustre filesystems you can connect to your ec2 machines
S3 GlacierLow cost storage system for backups and archives and such
Storage GatewayiSCSI so you can connect s3 to your own (remote) machine.
AWS BackupAutomatically create backups of different AWS service (ec2, rds etc)
{:.aws_tables}
Database
RDSManaged mysql, postgres databases etc.
DynamoDBLarge & scalable non-relational database
ElastiCacheManaged memcache and redis machines
NeptuneGraph database
Amazon RedshiftWarehousing. Store lots of data that can be processed through streams.
Amazon QLDBDatabase for immutable and cryptographically verifiable data (money transactions etc)
Amazon DocumentDBMongoDB clone (but not really compatible anymore)
Amazon KeyspacesManaged Apache Cassandra clone
{:.aws_tables}
Migration & Transfer
AS Migration HubMigrate things from your DC to AWS
Application Discovery ServiceDiscover services in your datacenter
Database Migration ServiceMigrate databases to RDS while staying online (can convert structures as well)
Server Migration ServiceMigrate virtual machines to amazon.
AWS Transfer Family(s)FTP service with S3 backend. Upload to FTP, directly store on S3 bucket.
SnowballGet a machine from AWS, plug in your DC, transfer data fast to AWS, return machine
DataSyncSync data between your datacenter and AWS
{:.aws_tables}
Networking & Content Delivery
VPCCreate your own virtual private network within AWS.
CloudFrontContent Delivery Network.
Route 53Manage domain names and records.
API GatewayCreate HTTP APIs and let them connect to different backends.
Direct ConnectCreate a (physical) connection between you (or DC) to AWS.
AWS App MeshAutomatically run Envoy as a sidecar for your containers (ECS or EKS).
AWS Cloud MapService discovery for your containers.
Global AcceleratorRun your app on edge locations so they are closer to your customers (CDN for apps).
{:.aws_tables}
Developer Tools
CodeStarQuickly develop applications by using template code and codecommit, codebuild etc
CodeCommitAmazon source repositories (git repo’s etc)
CodeBuildCI service
CodeDeployDeployment service
CodePipelineCode delivery with workflows
Cloud9Online IDE
X-RayAllows tracing in your applications, supports Python, NodeJs, Go etc.
{:.aws_tables}
Robotics
AWS RoboMakerCloud solution for robotic developers to simulate, test and securely deploy robotic applications
{:.aws_tables}
Customer Enablement
AWS IQJob board: Hire AWS experts for whatever you need.
SupportAWS support center
Managed ServicesLet AWS handle your AWS services for you.
{:.aws_tables}
Blockchain
Amazon Managed BlockchainBlock chains
{:.aws_tables}
Satellite
Ground StationTimeshare radios and large antennas pointed at space
{:.aws_tables}
Quantum Technologies
Amazon BraketSome quantum thing. It’s in preview so I have no idea what it is.
{:.aws_tables}
Management & Governance
AWS OrganizationsConfigure (sub)organisations and accounts
CloudWatchLogging from various AWS components
AWS Auto ScalingScale resources based on your custom inputs and rules
CloudFormationTemplates to create and configure AWS components (think terraform/sls)
CloudTrailFigure out who did what in your AWS services
ConfigAudit the configurations of your AWS resources
OpsWorksUse Ansible to automate stuff
Service CatalogManage list of items/codes etc you have in the cloud
Systems ManagerView data from your resources grouped in ways you like (like application specific etc)
AWS AppConfigStore and publish application configuration data
Trusted AdvisorChecks your account for issues (costs, performance, security etc)
Control TowerManage multi-accounts
AWS License ManagerManage licenses
AWS Well-Architected ToolGenerate questionnaires about your architecture to see if you follow best practices
Personal Health DashboardStatusPage for AWS
AWS ChatbotConnect AWS to slack
Launch WizardDeploy MSSQL or SAP
AWS Compute OptimizerFinds your resources and advices on how to save costs
{:.aws_tables}
Media Services
Elastic TranscoderEncode files from S3 into different other formats and store back at S3
Kinesis Video StreamsCapture media streams
MediaConnect?
MediaConvertConvert media into different formats
MediaLiveShare live video with many others
MediaPackage?
MediaStore?
MediaTailorInsert advertisements into your broadcasts
Elemental Appliances & Softwarecreate videos on-premise. Basically a mix of all of the above services. Seems expensive. Probably is.
{:.aws_tables}
Machine Learning
Amazon SageMakerMachine learning tools
Amazon CodeGuruProfile java code with machine learning
Amazon ComprehendUnderstand and classify data like emails, tweets etc
Amazon ForecastCreate forecasts from data
Amazon Fraud Detectorin preview so no idea.
Amazon KendraSearch service where you can ask questions
Amazon LexCreate voice and chatbots
Amazon Machine LearningDeprecated. Use SageMaker instead.
Amazon PersonalizeCreate personalized recommendations based on data (mahout??)
Amazon PollyConvert text to speech in different languages
Amazon RekognitionRecognize objects and people in images
Amazon TextractConvert text found in images to text (OCR)
Amazon TranscribeConvert audio to text
Amazon TranslateTranslates text from one language to another
AWS DeepLensA video camera that does machine learning
AWS DeepRacerSome kind of game where you program a racecar to race against others.
Amazon Augmented AILet humans in the loop to make AI learn things better
AWS DeepComposerComputer generated music. It’s as horrible as it sounds.
{:.aws_tables}
Analytics
AthenaQuery data stored in s3 buckets.
EMRElastic Map/Reduce
CloudSearchAWS version of managed document search system (like elasticsearch)
Elasticsearch ServiceElasticsearch as a service
KinesisCollect massive amount of data so you can do analytics (like ELK?)
QuickSightBusiness Intelligence service
Data PipelineMove and transform data to dynamodb, rds, s3 etc.
AWS Data ExchangeFind APIs which data you can consume, which can be very expensive
AWS GlueETL service. Enrich, validate data.
AWS Lake FormationCreate data lakes
MSKKafka as a service
{:.aws_tables}
Security, Identity, & Compliance
IAMAWS’s permission system that can control users and AWS services.
Resource Access ManagerShare certain AWS resources like Route53, licenses, ec2 with other accounts.
CognitoUser and password management system. Useful for managing users for your applications.
Secrets ManagerSecrets key/value store. Can automatically rotate secrets.
GuardDutyAutomatically scan your cloudtrail/vpc logs for threats.
InspectorAutomatically find (security) issues in your network and machines.
Amazon MacieAnalyzes data in your S3 buckets and check for PII data.
AWS Single Sign-OnAllow single-sign on to your applications.
Certificate ManagerManage and even create (free) SSL certificates.
Key Management ServiceManage secret keys
CloudHSMHardware security modules. Allows you to generate and operate on cryptographic keys.
Directory ServiceActive directory as a service
WAF & ShieldWeb Application Firewall (for loadbalancers, cloudfront, api gateway). Can setup your own rules or use predefined ones
AWS Firewall ManagerFirewall manager for different accounts in your organisation
ArtifactDocuments for cloud compliance (things like 27001 certification etc)
Security HubOverall security checker that uses guardduty, inspector, macie etc
DetectiveLog security issues found (from security hub etc)
{:.aws_tables}
Mobile
AWS AmplifyLet AWS automatically generate frontend & backend apps and deploy them automatically.
Mobile HubPart of AWS Amplify now.
AWS AppSyncCreate API backends that you can connect to. Can be created through AWS Amplify as well.
Device FarmAWS BrowserStack. Automatically test apps on many different mobile devices and browsers.
{:.aws_tables}
AR & VR
Amazon Sumerian3D Editor and Engine for rapidly prototyping AR/VR and 3D experiences
{:.aws_tables}
Application Integration
Step FunctionsState machines written in amazon’s own language
Amazon AppFlowAutomatically connects apps together (zapier?). For instance: slack to s3 buckets.
Amazon EventBridgeSome kind of eventbus system
Amazon MQActiveMQ
Simple Notification ServiceNotification system that can notify through email, api endpoints, sms etc.
Simple Queue ServiceMessage queue system
SWFCreate workflows.
{:.aws_tables}
AWS Cost Management
AWS Cost ExplorerGives an overview and projection of your budgets
AWS BudgetsCreate budgets for your AWS components
AWS Marketplace SubscriptionsFind (and buy) AMI’s with software installed
{:.aws_tables}
Customer Engagement
Amazon ConnectAWS call center platform
PinpointCreate transactional emails, SMS or voice calls based on templates.
Simple Email ServiceSend out emails. Email provider.
{:.aws_tables}
Business Applications
Alexa for BusinessConnect Alexa to your business needs.
Amazon ChimeAWS version of Zoom.
WorkMailAWS version of Gmail / Calendar.
{:.aws_tables}
End User Computing
WorkSpacesVirtual desktops from Windows or Linux.
AppStream 2.0Stream applications running native onto your browser
WorkDocsStore your documents and manage them online.
WorkLinkConnect mobile users to your intranet.
{:.aws_tables}
Internet Of Things
IoT CoreManage fleets of IOT devices through MQTT broker
FreeRTOSRTOS operating system for microcontrollers to automatically connect to IOT-Core or greengrass.
IoT 1-ClickManage 1-click buttons that can be connected to other systems like Lambda
IoT AnalyticsClean up and save messages from topics into a data-store for analytics
IoT Device DefenderDetect unwanted issues on your devices and take actions
IoT Device ManagementOrganize IoT devices into groups, schedule jobs on the devices and configure remote access
IoT EventsMonitor telemetry from devices and then trigger other AWS services or jobs on the devices themselves
IoT GreengrassA 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.
IoT SiteWiseCollect, organize, analyze and visualize data from industrial equipment at scale
IoT Things GraphCloudformation-like designer for graphing how devices should communicate with other AWS services
{:.aws_tables}
Game Development
Amazon GameLiftDeploy game servers with low latency on AWS
{:.aws_tables}
Containers
Elastic Container RegistryStore docker images like on DockerHub
Elastic Container ServiceRun containers, either on your own EC2 machines, or on managed machines called Fargate.
Elastic Kubernetes ServiceKubernetes as a service
{:.aws_tables}

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.

Conclusion

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 enlighten me.

← PreviousSymfony's autowiring
Next →Introducting BitMaelum - A new mail concept