Skip to content

ETL services on AWS

There is no single ETL service on AWS. A dozen services do part of the job, and the choice is usually settled by two questions: is the hard part the transformation or the orchestration, and does the work have to run somewhere AWS does not manage.

For most new data integration work the answer is AWS Glue, with Step Functions or Amazon MWAA above it when the pipeline has many steps that have to be coordinated.

ServiceTypeWhat it contributesBest for
AWS GlueServerless data integrationSpark and Python ETL jobs, crawlers, a central data catalogue, visual authoringLarge-scale data integration and cataloguing; the default starting point
Amazon MWAAManaged Apache AirflowPython DAGs, backfills, retries, a large operator library, portable definitionsComplex multi-step workflows, and teams already using Airflow
AWS Step FunctionsServerless orchestrationCoordinates other services, handles errors, retries and throttlingWorkflows spanning several AWS services, including Glue and EMR jobs
Amazon EMRManaged big data platformSpark, Hive and the wider Hadoop ecosystem on clusters you sizeVery large processing jobs, and workloads tied to a specific Hadoop application
AWS BatchManaged batch computingQueues and runs containerised jobs on managed computeCompute-intensive batch transformation
AWS LambdaServerless functionsShort, event-driven transformationsSmall per-object or per-record work, triggered by an event
Amazon RedshiftData warehouseCOPY for bulk loading, stored procedures for in-warehouse transformationTransformation that belongs next to the warehouse data (ELT)
AWS Database Migration Service (AWS DMS)Database migration and replicationOne-off and continuous replication, including between different enginesGetting data out of operational databases and keeping it current
AWS Lake FormationData lake governanceAutomates data lake setup, permissions and access controlBuilding and securing a lake that several teams share
Amazon AppFlowSaaS integrationManaged connectors to SaaS applications, no code requiredPulling data from SaaS products into AWS on a schedule or a trigger
AWS Transfer FamilyManaged file transferSFTP, FTPS, FTP and AS2 endpoints writing into S3 and EFSPartner file feeds that must keep speaking a legacy protocol
Amazon EventBridge PipesPoint-to-point integrationConnects a source to a target with optional filtering and enrichmentEvent-driven movement between services without glue code
AWS Data PipelineLegacy workflow serviceClosed to new customers and in maintenance modeNothing new — see below

AWS Data Pipeline is closed to new customers and receives no new features or Region expansions. Existing pipelines still run, but it cannot be chosen for new work, and AWS names three replacements depending on what the pipeline actually did:

  • Glue for data integration — moving and transforming data between stores, with a catalogue.
  • Step Functions for orchestration — coordinating services, with error handling and retries.
  • MWAA for teams that want Airflow’s DAGs, operators and portability.

Glue’s advantages over the older service are that it is serverless, so there are no task runners or EC2 resources to define, and that the Data Catalog gives a single place where table definitions live, shared with Athena, EMR and Redshift Spectrum.

The one thing Data Pipeline did that none of the three does directly is run activities on machines outside AWS through an installed task runner. The equivalent today is to register those machines with Systems Manager and invoke the work with Run Command from a state machine or a DAG.

  1. If data has to be extracted from an operational database, start with DMS.
  2. If the work is transforming and cataloguing data at rest, start with Glue.
  3. If the work is mostly sequencing other services, start with Step Functions, or MWAA when the sequencing is complex enough to want Airflow.
  4. If the transformation is small and event-driven, a Lambda function is often the whole pipeline.