DestinationsCloud StorageAmazon S3

Amazon S3

Write files to an Amazon S3 bucket in CSV or JSONL format. Use SignalSmith 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:PutObject and s3:GetBucketLocation permissions on the target bucket
  • AWS access key ID and secret access key for authentication

Authentication

S3 uses AWS Access Keys authentication.

  1. In the AWS IAM Console, create an access key for a user with S3 write permissions
  2. Enter the Access Key ID and Secret Access Key in SignalSmith

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

FieldTypeRequiredDescription
Bucket NameTextYesThe S3 bucket to write files to (e.g., my-data-bucket)
AWS RegionSelectYesThe 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 PrefixTextNoOptional prefix for all object keys within the bucket. Default: signalsmith/

Target Settings

FieldTypeRequiredDescription
File FormatSelectYesOutput file format: CSV or JSONL (Newline Delimited JSON). Default: CSV
Enable Gzip CompressionToggleNoCompress files with gzip before uploading. Default: On

Supported Operations

Sync Modes: Insert, Mirror

Audience Sync Modes: Add, Upsert, Mirror

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

SignalSmith writes data as files to the configured S3 bucket:

  1. Data is serialized into the selected format (CSV or JSONL)
  2. If gzip compression is enabled, the file is compressed before upload
  3. Files are uploaded to s3://{bucket}/{path_prefix}/{sync_id}/{filename}
  4. Each sync run produces a new set of files

For Mirror mode, SignalSmith replaces the previous set of files with the latest complete dataset.

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, SignalSmith uses multipart uploads. Ensure the IAM user has s3:PutObject and s3:AbortMultipartUpload permissions.