Amazon S3
Write files to an Amazon S3 bucket in CSV or JSONL format. Use Zeotap to export model results, audience lists, or enriched data as files in S3 for downstream consumption.
Prerequisites
- An Amazon S3 bucket
- An IAM user or role with
s3:PutObjectands3:GetBucketLocationpermissions on the target bucket - AWS access key ID and secret access key for authentication
Authentication
S3 uses AWS Access Keys authentication.
- In the AWS IAM Console, create an access key for a user with S3 write permissions
- Enter the Access Key ID and Secret Access Key in Zeotap
Required IAM Permissions
The IAM user needs the following permissions on the target bucket:
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::your-bucket-name",
"arn:aws:s3:::your-bucket-name/*"
]
}Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| Bucket Name | Text | Yes | The S3 bucket to write files to (e.g., my-data-bucket) |
| AWS Region | Select | Yes | The AWS region where the bucket is located. Default: us-east-1. Options include US East (N. Virginia, Ohio), US West (N. California, Oregon), EU (Ireland, London, Frankfurt), Asia Pacific (Tokyo, Singapore, Sydney), Canada (Central), and South America (Sao Paulo) |
| Path Prefix | Text | No | Optional prefix for all object keys within the bucket. Default: zeotap/ |
Target Settings
| Field | Type | Required | Description |
|---|---|---|---|
| File Format | Select | Yes | Output file format: CSV or JSONL (Newline Delimited JSON). Default: CSV |
| Enable Gzip Compression | Toggle | No | Compress files with gzip before uploading. Default: On |
Supported Operations
Sync Modes: Insert, Mirror, Snapshot
Audience Sync Modes: Add, Mirror, Snapshot
Features
- Field Mapping: No — S3 writes all mapped fields as file columns
- Schema Introspection: No — S3 is a file-based destination without schema discovery
How It Works
Zeotap writes data as files to the configured S3 bucket:
- Data is serialized into the selected format (CSV or JSONL)
- If gzip compression is enabled, the file is compressed before upload
- Files are uploaded to
s3://{bucket}/{path_prefix}/{YYYY-MM-DD}/{batch_id}.{ext}[.gz] - Each sync run produces a new set of date-partitioned files
Sync mode semantics
- Insert writes the full current dataset as new files on every run.
- Mirror writes the full dataset on the first run, then only the rows that changed on later runs. Every row in a mirror-mode file carries an
_operationcolumn —added,changed, orremoved— so downstream consumers can apply updates and deletions. On the first run all rows are markedadded. In CSV files_operationis always the last column; treat the name as reserved in mirror mode. - Add (audience syncs) writes only new and updated audience members. Members who left the audience since the previous run are excluded from the files.
- Snapshot writes the complete current dataset as new files on every run and never diffs. There is no
_operationcolumn (the files are the whole dataset) and unchanged rows are included every time. Records that left are simply absent from the next drop rather than delivered taggedremoved, so treat each run’s output as authoritative and replace your prior copy rather than merging into it. Unlike Insert, snapshot is guaranteed to read the full model output on every warehouse: it never adopts native change tracking (Snowflake streams, Databricks CDF), which can only surface deltas.
Troubleshooting
Access denied
Verify the IAM user has s3:PutObject permission on the bucket and path prefix. Check the bucket policy does not explicitly deny access.
Bucket not found
Ensure the bucket name is correct and the selected AWS region matches the bucket’s actual region. S3 bucket names are globally unique.
Region mismatch
The AWS region must match the bucket’s region. A mismatch causes a redirect error. Check the bucket’s region in the S3 console under Properties.
Large file uploads failing
For very large syncs, Zeotap uses multipart uploads. Ensure the IAM user has s3:PutObject and s3:AbortMultipartUpload permissions.