Connectors / Warehouses
Amazon Redshift
sinkAmazon Redshift sink (COPY-from-S3 or multi-row INSERT)
Install
cargo install faucet-cli --features sink-redshift faucet init --sink redshift
# Cargo.toml — use it as a library cargo add faucet-sink-redshift
Starter config
sink:
type: redshift
config:
# host: "" # Cluster / endpoint host (e.g.
# port: 5439 # Port.
database: "" # REQUIRED — Database name.
# user: "" # Database user.
credentials:
type: password # one of: password, iam, redshift_data_api
config:
password: "" # REQUIRED — The password (use `${env:…}` / `${vault:…}` to inject it, never a literal).
# --- Alternative variants — replace the block above with one of these ---
# type: iam
# config:
# region: ""
# cluster_identifier: ""
# db_user: ""
# workgroup_name: ""
# auto_create: false
# db_groups: []
# duration_secs: 0
# aws_credentials: null
# endpoint_url: ""
#
# type: redshift_data_api
# config:
# region: ""
# cluster_identifier: ""
# workgroup_name: ""
# secret_arn: ""
# db_user: ""
# aws_credentials: null
# endpoint_url: ""
# tls: true # Whether to require TLS.
# tls_mode: null # Explicit TLS mode; overrides `tls`.
# ssl_root_cert: "" # PEM file of the CA that signed the server certificate (the Redshift CA bundle), for `tls_mode: verify_ca | verify_full`.
table_name: "" # REQUIRED — Target table name.
# create_table: true # Create the target table (and its schema, when `schema:` is set) if it does not exist, inferring the columns from the first written page (#580).
# commit_rows: 0 # Commit-group size for the cross-page accumulator (#617).
# commit_bytes: 0 # Estimated-bytes counterpart of `commit_rows` (#617).
# schema: "" # Optional schema (namespace) qualifying `table_name`.
# write_strategy: null # How the sink loads rows into Redshift.
# copy: null # `COPY`-path settings, grouped (#654 M20).
# copy_format: null # Format of the staged file that `COPY` reads.
# staging_bucket: "" # **Deprecated** — use `copy.staging_bucket`.
# staging_prefix: "" # **Deprecated** — use `copy.staging_prefix`.
# iam_role: "" # **Deprecated** — use `copy.iam_role`.
# region: "" # **Deprecated** — use `copy.region`.
# endpoint_url: "" # **Deprecated** — use `copy.endpoint_url`.
# batch_size: 1000 # Rows per load unit.
# max_connections: 5 # Maximum number of connections in the pool.
Capabilities
| Delivery | At-least-once |
|---|---|
| Write modes | append |
| Exactly-once writes | No |
| Schema evolution | No |
| Scoped cleanup | No |
| Staged bulk load | Yes |
| Run rollback | No |
| Compression | No |
Config fields
| Field | Type | Default | Description |
|---|---|---|---|
databaserequired | string | — | Database name. |
credentialsrequired | object | — | Authentication credentials. |
table_namerequired | string | — | Target table name. |
host | string | "" | Cluster / endpoint host (e.g. my-cluster.abc123.us-east-1.redshift.amazonaws.com). Required except with credentials: { type: redshift_data_api }. |
port | integer | 5439 | Port. Defaults to DEFAULT_PORT (5439). |
user | string | "" | Database user. Required for password; for a provisioned iam cluster it is the default db_user; unused by redshift_data_api. |
tls | boolean | true | Whether to require TLS. Defaults to true (Redshift clusters require SSL by default). true maps to sslmode=require (encrypted, but the server certificate is **not** verified); false maps to sslmode=prefer (opportunistic TLS with plaintext fallback). Ignored when tls_mode is set. |
tls_mode | object | — | Explicit TLS mode; overrides tls. verify_ca / verify_full check the server certificate against ssl_root_cert (or, without one, the Mozilla root store bundled into the binary — not the operating system's), the latter also its host name. |
ssl_root_cert | string | — | PEM file of the CA that signed the server certificate (the Redshift CA bundle), for tls_mode: verify_ca | verify_full. |
create_table | boolean | true | Create the target table (and its schema, when schema: is set) if it does not exist, inferring the columns from the first written page (#580). Enabled by default: a first-ever sync cannot assume the destination already exists. |
commit_rows | integer | — | Commit-group size for the cross-page accumulator (#617). |
commit_bytes | integer | — | Estimated-bytes counterpart of commit_rows (#617). Rows are a poor proxy for how much work a warehouse commit is; this bounds the buffered size. 0 means no byte limit; see commit_rows for the default when both are unset. |
schema | string | — | Optional schema (namespace) qualifying table_name. |
write_strategy | object | copy | How rows are loaded. Defaults to RedshiftWriteStrategy::Copy. |
copy | object | — | COPY-path settings, grouped (#654 M20). Applies only to write_strategy: copy; when present it supersedes the six deprecated flat keys below. This mirrors the BigQuery sink's bulk_load: block, which is the house shape for a staged-load configuration. |
copy_format | object | jsonl | **Deprecated** — use copy.format. |
staging_bucket | string | — | **Deprecated** — use copy.staging_bucket. |
staging_prefix | string | "" | **Deprecated** — use copy.staging_prefix. |
iam_role | string | — | **Deprecated** — use copy.iam_role. |
region | string | — | **Deprecated** — use copy.region. |
endpoint_url | string | — | **Deprecated** — use copy.endpoint_url. |
batch_size | integer | 1000 | Rows per load unit. For insert, the per-statement multi-row chunk size; for copy, the number of rows per staged S3 object (a commit group's objects load in one COPY through a manifest). Defaults to DEFAULT_BATCH_SIZE. 0 = one unit for the whole page. |
max_connections | integer | 5 | Maximum number of connections in the pool. Defaults to 5. |
Get started
Your first pipeline runs in five minutes.
Install the CLI, scaffold a config, and move real data — nothing external to stand up.
curl -LsSf https://github.com/faucet-hq/faucet-stream/releases/latest/download/faucet-cli-installer.sh | sh brew install faucet-hq/faucet-stream/faucet-cli