> ## Documentation Index
> Fetch the complete documentation index at: https://docs.less.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# Amazon Redshift

<Note>
  Allow inbound access from [Less IP addresses](/guides/less-ip) to your Redshift cluster (for example via the cluster security group and any network path in front of it).

  The database user you configure must have permission to **create and write** objects Less needs when pushing data from models into Redshift.
</Note>

The Amazon Redshift destination writes data from Less into your Redshift cluster. You supply the cluster endpoint, database credentials, and optionally **S3 bulk loading** for better throughput on large loads.

Redshift listens on port **5439** by default (not 5432).

<Steps>
  <Step title="Account">
    Enter the **host** (for example `my-cluster.xxxxxx.region.redshift.amazonaws.com`), **port** (typically **5439**), and the **database** name Less should connect to.
  </Step>

  <Step title="Credentials">
    Provide the Redshift **username** and **password** for that database.
  </Step>

  <Step title="Bulk load (S3)">
    Leave **Use S3 bulk loading** off for simple setups; Less will still connect over SQL.

    When bulk loading is **enabled**, Less stages files in S3 and loads them with Redshift **COPY**. You must then supply:

    * **AWS Access Key ID** and **AWS Secret Access Key** for an identity that can write to the staging bucket
    * **S3 Staging URI** (for example `s3://my-bucket/redshift-staging/`) — the bucket should be in the **same AWS Region** as your Redshift cluster

    If bulk load is off, the AWS and S3 fields are not required.
  </Step>

  <Step title="SSH">
    Try without SSH first unless your network requires a bastion. To use a tunnel, enable it and enter **SSH host**, **port**, **username**, and **password**, or enable **SSH key** and upload your private key.
  </Step>

  <Step title="Test Connection">
    Run **Test Connection** to confirm Less can reach Redshift. Error messages are passed through from the database.
  </Step>
</Steps>
