Version v0.4.0 of the documentation is no longer actively maintained. The site that you are currently viewing is an archived snapshot. For up-to-date documentation, see the latest version.

Connections

The connector matrix: install a provider, then wire a Connection. 54 recipes grouped by category, each with its conn_id and conn_type.

A Connection is a piece of credentialised configuration the control plane encrypts at rest (ADR 0019) and delivers to a running task as AIRFLOW_CONN_<CONN_ID> (ADR 0021). User code (Python psycopg2, requests, your operator of choice) reads the env var and connects.

This page is the index. Each linked entry below is a focused recipe with the URI shape, an example DAG, and how to test it.

Installing a connector’s provider

A Connection only carries credentials. To use a connector — whether through its Airflow hook (PostgresHook) or a raw driver (psycopg2) — the matching Python package has to be in the image / venv. Leoflow gives you two ways to declare that in leoflow.yaml, and you pick whichever fits:

dag_id: my_pipeline
connectors:
  - postgres
  - http

Short names you don’t have to memorise. At compile, each expands to its apache-airflow-providers-* package (ADR 0038), which pulls the hook and its driver transitively — so connectors: [postgres] is enough to use either PostgresHook or raw psycopg2. One line per connector, no version to recall.

dag_id: my_pipeline
dependencies:
  - apache-airflow-providers-postgres==6.0.0   # pin the provider, or…
  - psycopg2-binary==2.9.10                    # …just the driver, your call

Full control: pin an exact version, install only the driver, or add a package the catalog doesn’t know about. Advanced users who already think in pip specifiers stay here.

Both lists are additive — the effective install is expand(connectors) + dependencies. A name in connectors: that isn’t in the catalog fails the compile with the offender, the known list, and a pointer to dependencies:, so a typo never slips through to a runtime ModuleNotFoundError in the task pod.

Connector → provider package

The catalog is generated from a real Airflow install (scripts/gen_connectors.pyinternal/connectors/catalog.json, ADR 0039), so ~86 connector types ship with a dropdown entry, the correct standard-field behavior, and the provider-specific custom fields served to the form (e.g. Snowflake’s account/warehouse, the GCP keyfile) in the exact param-spec shape the Airflow 3.2 FlexibleForm consumes. It is the single source of truth shared by the admin form, the sugar expansion, and compile validation.

The common head:

connectors: namepip package
postgresapache-airflow-providers-postgres
mysqlapache-airflow-providers-mysql
sqliteapache-airflow-providers-sqlite
mssqlapache-airflow-providers-microsoft-mssql
oracleapache-airflow-providers-oracle
redisapache-airflow-providers-redis
mongoapache-airflow-providers-mongo
httpapache-airflow-providers-http
awsapache-airflow-providers-amazon
google_cloud_platform (alias gcp, google)apache-airflow-providers-google
snowflakeapache-airflow-providers-snowflake
sshapache-airflow-providers-ssh
ftpapache-airflow-providers-ftp
sftpapache-airflow-providers-sftp
kafkaapache-airflow-providers-apache-kafka

The package boundary is not a mechanical join of the dotted hook path (amazon.awsamazon; microsoft.mssqlmicrosoft-mssql), which is exactly why the mapping is curated rather than derived.

When you press Test on a connection of a known type, the result line also reminds you to declare the provider (connectors: [<type>]) — a Connection in the UI carries credentials, but the DAG still has to install the hook to use them.

Connectors by category

Every documented connector grouped by domain — its conn_type, the provider package the connectors: sugar expands to, and its category. Click a name for the full recipe (URI shape, example DAG, how to test).

Databases

Connectorconn_typeProvider packageCategory
cassandracassandraapache-airflow-providers-apache-cassandraDatabases
druiddruidapache-airflow-providers-apache-druidDatabases
elasticsearchelasticsearchapache-airflow-providers-elasticsearchDatabases
hive_clihive_cliapache-airflow-providers-apache-hiveDatabases
hiveserver2hiveserver2apache-airflow-providers-apache-hiveDatabases
influxdbinfluxdbapache-airflow-providers-influxdbDatabases
jdbcjdbcapache-airflow-providers-jdbcDatabases
mongomongoapache-airflow-providers-mongoDatabases
mssqlmssqlapache-airflow-providers-microsoft-mssqlDatabases
mysqlmysql / mariadbapache-airflow-providers-mysqlDatabases
neo4jneo4japache-airflow-providers-neo4jDatabases
oracleoracleapache-airflow-providers-oracleDatabases
pinotpinotapache-airflow-providers-apache-pinotDatabases
postgrespostgresapache-airflow-providers-postgresDatabases
prestoprestoapache-airflow-providers-prestoDatabases
redisredisapache-airflow-providers-redisDatabases
sqlitesqliteapache-airflow-providers-sqliteDatabases
trinotrinoapache-airflow-providers-trinoDatabases
verticaverticaapache-airflow-providers-verticaDatabases

Cloud

Connectorconn_typeProvider packageCategory
athenaathenaapache-airflow-providers-amazonCloud
awsawsapache-airflow-providers-amazonCloud
azurewasb / adls / azure_*apache-airflow-providers-microsoft-azureCloud
databricksdatabricksapache-airflow-providers-databricksCloud
dockerdockerapache-airflow-providers-dockerCloud
emremrapache-airflow-providers-amazonCloud
gcpbigquerygcpbigqueryapache-airflow-providers-googleCloud
gcpcloudsqlgcpcloudsqlapache-airflow-providers-googleCloud
gcpsshgcpsshapache-airflow-providers-googleCloud
google_cloud_platformgoogle_cloud_platformapache-airflow-providers-googleCloud
httphttp / httpsapache-airflow-providers-httpCloud
livylivyapache-airflow-providers-apache-livyCloud
redshiftredshiftapache-airflow-providers-amazonCloud
snowflakesnowflakeapache-airflow-providers-snowflakeCloud
sparkspark / spark_sql / spark_connect / spark_jdbcapache-airflow-providers-apache-sparkCloud

Messaging

Connectorconn_typeProvider packageCategory
discorddiscordapache-airflow-providers-discordMessaging
imapimapapache-airflow-providers-imapMessaging
kafkakafkaapache-airflow-providers-apache-kafkaMessaging
opsgenieopsgenieapache-airflow-providers-opsgenieMessaging
pagerdutypagerdutyapache-airflow-providers-pagerdutyMessaging
slackslack / slackwebhookapache-airflow-providers-slackMessaging
smtpsmtpapache-airflow-providers-smtpMessaging
telegramtelegramapache-airflow-providers-telegramMessaging

BI & SaaS

Connectorconn_typeProvider packageCategory
datadogdatadogapache-airflow-providers-datadogBI & SaaS
dbt_clouddbt_cloudapache-airflow-providers-dbt-cloudBI & SaaS
gcp_lookergcp_lookerapache-airflow-providers-googleBI & SaaS
githubgithubapache-airflow-providers-githubBI & SaaS
google_adsgoogle_adsapache-airflow-providers-googleBI & SaaS
msgraphmsgraphapache-airflow-providers-microsoft-azureBI & SaaS
powerbipowerbiapache-airflow-providers-microsoft-azureBI & SaaS
salesforcesalesforceapache-airflow-providers-salesforceBI & SaaS
tableautableauapache-airflow-providers-tableauBI & SaaS
zendeskzendeskapache-airflow-providers-zendeskBI & SaaS

Files

Connectorconn_typeProvider packageCategory
file-transferssh / sftp / ftpapache-airflow-providers-ssh / -sftp / -ftpFiles
sambasambaapache-airflow-providers-sambaFiles

Connector matrix

Every documented connector, its conn_type, the provider package the connectors: sugar expands to (ADR 0038), the auth shape (where the credential lives), the local-testable tier, and a runnable example. Each ships a chain-of-custody delivery test; the tier-1 rows also ship an automated example test (see the contract below). Cloud families share a provider package (e.g. redshift/athena/emrapache-airflow-providers-amazon; gcpbigquery/gcpcloudsql/gcp_looker…-google); the boundary is curated, not a mechanical join of the hook path.

Connectorconn_typeProvider packageAuth shapeLocal tierExample
postgrespostgresapache-airflow-providers-postgreshost + login/passwordlocal (Docker)postgres_load
mysqlmysql / mariadbapache-airflow-providers-mysqlhost + login/passwordlocal (Docker)mysql_load
mssqlmssqlapache-airflow-providers-microsoft-mssqlhost + login/passwordlocal (Docker)mssql_load
sqlitesqliteapache-airflow-providers-sqlitefile pathlocal (tier 1)sqlite_load
redisredisapache-airflow-providers-redishost + passwordlocal (tier 1)redis_load
httphttp / httpsapache-airflow-providers-httpbase URL + Extralocal (tier 1)http_load
oracleoracleapache-airflow-providers-oraclehost + login/password (service in Schema)doc-onlyrecipe
mongomongoapache-airflow-providers-mongohost + login/password (db in Schema)doc-onlyrecipe
file-transferssh / sftp / ftpapache-airflow-providers-ssh / -sftp / -ftphost + login/password (key in Extra)doc-onlyrecipe
google_cloud_platformgoogle_cloud_platformapache-airflow-providers-googlekeyless (Workload Identity / ADC) or key in Extradoc-onlygcp_gcs_load
snowflakesnowflakeapache-airflow-providers-snowflakelogin/password + account in Extra (or key-pair)doc-onlyrecipe
awsawsapache-airflow-providers-amazonkeyless (IAM role) or access keydoc-onlyrecipe
slackslack / slackwebhookapache-airflow-providers-slacktoken in passworddoc-onlyrecipe
databricksdatabricksapache-airflow-providers-databrickshost + PAT (or OAuth M2M)doc-onlyrecipe
azurewasb / adls / azure_*apache-airflow-providers-microsoft-azurekeyless (managed identity) or keydoc-onlyrecipe
sparkspark / spark_sql / spark_connect / spark_jdbcapache-airflow-providers-apache-sparkhost:port + tuning Extradoc-onlyrecipe
kafkakafkaapache-airflow-providers-apache-kafkaall-Extra client config (SASL)doc-onlyrecipe
redshiftredshiftapache-airflow-providers-amazonhost + login/password (or keyless IAM)doc-onlyrecipe
athenaathenaapache-airflow-providers-amazonkeyless IAM (region in Extra)doc-onlyrecipe
emremrapache-airflow-providers-amazonkeyless IAM (region in Extra)doc-onlyrecipe
gcpbigquerygcpbigqueryapache-airflow-providers-googlekeyless (WI / ADC), project in Extradoc-onlyrecipe
gcpcloudsqlgcpcloudsqlapache-airflow-providers-googlekeyless (WI / ADC), instance in Extradoc-onlyrecipe
google_adsgoogle_adsapache-airflow-providers-googleOAuth material in Extradoc-onlyrecipe
gcp_lookergcp_lookerapache-airflow-providers-googleAPI3 client_id/secret in Extradoc-onlyrecipe
gcpsshgcpsshapache-airflow-providers-googlehost + login/passworddoc-onlyrecipe
cassandracassandraapache-airflow-providers-apache-cassandrahost + login/password (keyspace in Schema)doc-onlyrecipe
neo4jneo4japache-airflow-providers-neo4jhost + login/password (db in Schema)doc-onlyrecipe
verticaverticaapache-airflow-providers-verticahost + login/passworddoc-onlyrecipe
influxdbinfluxdbapache-airflow-providers-influxdborg + token in Extradoc-onlyrecipe
druiddruidapache-airflow-providers-apache-druidhost + login/passworddoc-onlyrecipe
pinotpinotapache-airflow-providers-apache-pinothost + login/password (optional)doc-onlyrecipe
trinotrinoapache-airflow-providers-trinohost + login/password (optional)doc-onlyrecipe
prestoprestoapache-airflow-providers-prestohost + login/password (optional)doc-onlyrecipe
jdbcjdbcapache-airflow-providers-jdbchost + login/password + driver in Extradoc-onlyrecipe
dockerdockerapache-airflow-providers-dockerhost + login/passworddoc-onlyrecipe
salesforcesalesforceapache-airflow-providers-salesforcelogin/password + token in Extradoc-onlyrecipe
telegramtelegramapache-airflow-providers-telegramtoken in passworddoc-onlyrecipe
discorddiscordapache-airflow-providers-discordtoken in password + endpoint in Extradoc-onlyrecipe
pagerdutypagerdutyapache-airflow-providers-pagerdutytoken in password + routing key in Extradoc-onlyrecipe
datadogdatadogapache-airflow-providers-datadogAPI + app keys in Extradoc-onlyrecipe
tableautableauapache-airflow-providers-tableauhost + login/password (or PAT)doc-onlyrecipe
githubgithubapache-airflow-providers-githubPAT in passworddoc-onlyrecipe
elasticsearchelasticsearchapache-airflow-providers-elasticsearchhost + login/passworddoc-onlyrecipe
smtpsmtpapache-airflow-providers-smtphost + login/passworddoc-onlyrecipe
imapimapapache-airflow-providers-imaphost + login/passworddoc-onlyrecipe
opsgenieopsgenieapache-airflow-providers-opsgenieAPI key in passworddoc-onlyrecipe
zendeskzendeskapache-airflow-providers-zendeskagent email + API tokendoc-onlyrecipe
sambasambaapache-airflow-providers-sambahost + login/passworddoc-onlyrecipe
dbt_clouddbt_cloudapache-airflow-providers-dbt-cloudaccount id (login) + API tokendoc-onlyrecipe
hiveserver2hiveserver2apache-airflow-providers-apache-hivehost + login/password (db in Schema)doc-onlyrecipe
hive_clihive_cliapache-airflow-providers-apache-hivehost + login/password + beeline/kerberos in Extradoc-onlyrecipe
powerbipowerbiapache-airflow-providers-microsoft-azureclient id/secret + tenant in Extradoc-onlyrecipe
msgraphmsgraphapache-airflow-providers-microsoft-azureclient id/secret + tenant in Extradoc-onlyrecipe
livylivyapache-airflow-providers-apache-livyhost + login/passworddoc-onlyrecipe

Local tierlocal (Docker): spin the service up with Docker/Lima and run the example end-to-end; local (tier 1): no external service needed (or already in CI); doc-only: a real run needs the external account/service, so the page is a recipe with a delivery test rather than a runnable example. Examplerecipe links back to the connector’s own page (the copy-paste DAG lives there).

The long tail

Every curated connector above is first-class (impl + delivery test + cookbook). Beyond them, all ~86 connector types in the generated catalog (ADR 0039) are usable today via connectors: (dropdown + sugar) — they just don’t each have a dedicated cookbook recipe yet. Any other Airflow provider works via dependencies:. Recipes are added connector-by-connector as they are promoted.

Contract every entry honours

Every entry in this cookbook ships with all three of:

  1. A doc page (this dir) covering: URI shape, default port, Lite-vs-Pro caveats, security notes (TLS, auth modes).
  2. An example DAG under examples/<type>_*/ with its own README.md showing how to spin up the dependency (Docker / Lima), how to create the Connection in the UI, and the expected end-state of the target system.
  3. An automated test that proves the delivery chain — the integration test under internal/storage/ (companion to the example) gated by the integration build tag, runs in CI against a real Postgres.

If a layer is mocked or the e2e test is manual-only, the doc says so and a follow-up issue covers the gap.

  • ADR 0019 — secret encryption at rest.
  • ADR 0021 — agent secret delivery.
  • #67 — connectors umbrella.
  • #142 — the cookbook umbrella (this page).

Amazon Athena connection

Amazon Athena connection

Amazon Web Services connection

Amazon Web Services connection

Azure connection

Azure connection

Cassandra connection

Cassandra connection

Databricks connection

Databricks connection

Datadog connection

Datadog connection

dbt Cloud connection

dbt Cloud connection

Discord connection

Discord connection

Docker registry connection

Docker registry connection

Druid connection

Druid connection

Elasticsearch connection

Elasticsearch connection

Amazon EMR connection

Amazon EMR connection

File transfer connections (SSH / SFTP / FTP)

File transfer connections (SSH / SFTP / FTP)

Google Looker connection

Google Looker connection

Google BigQuery connection

Google BigQuery connection

Google Cloud SQL connection

Google Cloud SQL connection

GCP SSH connection

GCP SSH connection

GitHub connection

GitHub connection

Google Ads connection

Google Ads connection

`google_cloud_platform` — Google Cloud connection

google_cloud_platform — Google Cloud connection

Hive CLI connection

Hive CLI connection

HiveServer2 connection

HiveServer2 connection

HTTP connection

HTTP connection

IMAP connection

IMAP connection

InfluxDB connection

InfluxDB connection

JDBC connection

JDBC connection

Apache Kafka connection

Apache Kafka connection

Apache Livy connection

Apache Livy connection

MongoDB connection

MongoDB connection

Microsoft Graph connection

Microsoft Graph connection

Microsoft SQL Server connection

Microsoft SQL Server connection

MySQL / MariaDB connection

MySQL / MariaDB connection

Neo4j connection

Neo4j connection

Opsgenie connection

Opsgenie connection

Oracle connection

Oracle connection

PagerDuty connection

PagerDuty connection

Pinot connection

Pinot connection

Postgres connection

Postgres connection

Power BI connection

Power BI connection

Presto connection

Presto connection

Redis connection

Redis connection

Amazon Redshift connection

Amazon Redshift connection

Salesforce connection

Salesforce connection

Samba connection

Samba connection

Slack connection

Slack connection

SMTP connection

SMTP connection

Snowflake connection

Snowflake connection

Spark connection

Spark connection

SQLite connection

SQLite connection

Tableau connection

Tableau connection

Telegram connection

Telegram connection

Trino connection

Trino connection

Vertica connection

Vertica connection

Zendesk connection

Zendesk connection