Postgres

Connect & Ingest data from / to a Postgres database

Setup

The following credentials keys are accepted:

  • host (required) -> The hostname / ip of the instance

  • user (required) -> The username to access the instance

  • database (required) -> The database name of the instance

  • schema (optional) -> The default schema to use

  • password (optional) -> The password to access the instance

  • port (optional) -> The port of the instance. Default is 5432.

  • role (optional) -> The role to access the instance

  • statement_timeout (optional in v1.4.21+) -> The timeout to use for a postgres query, input as millisecond (10000 for 10 seconds).

  • sslmode (optional) -> The sslmode of the instance (disable, allow, prefer, require, verify-ca or verify-full). Default is disable.

  • ssh_tunnel (optional) -> The URL of the SSH server you would like to use as a tunnel (example ssh://user:[email protected]:22)

  • ssh_private_key (optional) -> The private key to use to access a SSH server (raw string or path to file).

  • ssh_passphrase (optional) -> The passphrase to use to access a SSH server.

Google Cloud SQL IAM Authentication (v1.4.25+)

For Google Cloud SQL PostgreSQL instances with IAM authentication enabled, you can use the following properties:

  • gcp_instance (required) -> The Cloud SQL instance name

  • gcp_project (required) -> The GCP project ID

  • gcp_region (required) -> The GCP region (e.g., us-central1)

  • user (required) -> The IAM user or service account email (will be converted to lowercase and trimmed)

  • gcp_key_file (optional) -> Path to the GCP service account credentials JSON file

  • gcp_key_body (optional) -> The GCP service account credentials JSON content as a string

  • gcp_lazy_refresh (optional) -> Enable lazy refresh for serverless environments (true or false). Default is false.

  • gcp_use_private_ip (optional) -> Use private IP for the connection (true or false). Default is false.

Authentication Methods (in priority order):

  1. If gcp_key_body is provided, uses the JSON credentials directly

  2. If gcp_key_file is provided, uses the credentials file

  3. Otherwise, uses Application Default Credentials (ADC)

Important Notes:

  • When using IAM authentication, do NOT provide a password - authentication is handled via IAM tokens

  • The user field should match the user identifier in the Users panel of the Cloud SQL instance (e.g., my-sa@my-project).

  • The service account must have the Cloud SQL Instance User role

  • IAM authentication must be enabled on the Cloud SQL instance: gcloud sql instances patch INSTANCE --database-flags=cloudsql.iam_authentication=on

Using sling conns

Here are examples of setting a connection named POSTGRES. We must provide the type=postgres property:

Environment Variable

Sling Env File YAML

See here to learn more about the sling env.yaml file.

Database user creation

To allow Sling to access your database, we need to create a user with the proper privileges. Please follow the steps below:

  1. Create a user sling (or whatever you prefer) by running:

  2. If you are planning to load data into this connection, grant the following privileges to that user:

  3. If you are planning to extract data from this connection, you need to give permission to read the tables you'd like Sling to extract.

If you are facing issues connecting, please reach out to us at [email protected], on discord or open a Github Issue here.

Last updated

Was this helpful?