Skip to main content
The Amazon S3 source reads files from an S3 bucket and feeds them into your pipeline. It supports CSV, TSV, JSON, Excel, Parquet, Raw, and compressed formats. Once your connection is set up, see File Storage Options for the full set of read options (file formats, schema, and more) shared across every file storage provider.

Connection Setup

Create an IAM User

1
Log into the AWS Management Console and open IAM (Identity and Access Management).
2
In the left navigation, click Users, then click Add User.
IAM Users page with Add User button
3
Enter a user name (for example, integrate-io-etl) and select Programmatic access. Click Next: Permissions.
IAM Add User form with programmatic access selected
4
Click Create User. On the confirmation page, click Download .csv and save the credentials file. You will need the Access Key ID and Secret Access Key when creating the connection in Integrate.io.
Download CSV button to save security credentials
If any credential key contains a slash, or you cannot locate the downloaded credentials file, return to the IAM user, click Make inactive under Security credentials, then click Create access key to generate new credentials.
Never use an underscore in an S3 bucket name, and never end a bucket name with a dash. Both will prevent Integrate.io from accessing the bucket correctly.

Attach an S3 Policy to the IAM User

1
In the IAM user list, click the user you created. Scroll down to Add permissions.
2
For read-only access, attach the AmazonS3ReadOnlyAccess managed policy.
Attaching AmazonS3ReadOnlyAccess policy to the IAM user
3
For read-write access (required for destination pipelines), click Create policy, choose JSON, and paste the following policy, replacing bucket-name with your bucket name:
All three object actions are required for destination pipelines. Integrate.io writes each output file to a temporary object and then finalizes it, which on S3 is a copy-and-delete operation. Granting only s3:PutObject causes writes to fail during finalization.
Click Review policy, then Create policy.

Create the Connection in Integrate.io ETL

1
Click the Connections icon (lightning bolt) in the top-left menu.
2
Click New connection.
New connection button in the Connections menu
3
Select Amazon S3.
Selecting Amazon S3 from the connection type list
4
Name the connection and enter the Access Key ID and Secret Access Key from the credentials file.
Amazon S3 connection form with access key and secret fields
5
If your S3 buckets are in a region that requires AWS Signature Version 4, enter the region. See the AWS region list for applicable regions.
6
Click Test connection to verify the credentials, then click Create amazon s3 connection.
Amazon S3 connection created and listed in connections

Source Configuration

Connection

Select your Amazon S3 connection from the dropdown, or create a new one using the steps above.

Bucket

Enter the name of the S3 bucket that contains your source files.

Source Path

The path to the input file, folder, or pattern within the bucket. You can use wildcard characters for pattern globbing. File and directory names beginning with an underscore (_) or a dot (.) are ignored.

Source File Format

Record delimiter: what breaks the data into records:
  • New line (\n, \n\r, \r): each line in the file is one record.
  • End of file: each file is treated as a single record.
Record type: the format of each record:
Avro file format is not supported.
Source data can be compressed (zip, gzip, or bzip2) or uncompressed. Zip files can be password-protected; enter the password in the Zip Password field. Source data must be UTF-8 encoded. For other encodings, see processing a different encoding. Case-insensitive path (zip files only): when the source path contains .zip, a Case-insensitive path checkbox appears. Enable it to match the zip file path without regard to letter case.
To read ASC X12 EDI files such as 834 benefit enrollment files, use the dedicated EDI (X12) source instead.

Delimited Values Parameters

Applies when record delimiter is New line and record type is Delimited values.
1
Field delimiter: select from the dropdown (comma, tab) or type a single character or escape sequence:
2
String qualifier: if fields are enclosed in quotes, select ' or ". To allow line breaks inside quoted fields, select " (newline inside) or ' (newline inside). Use the newline-inside option with caution, as unbalanced quotes can affect job performance.
3
Escape character: available when a string qualifier is set. Specifies the character used to escape qualifier characters within field data.
4
First row contains column names: check to skip the header row in each file.
5
Detect header by name: locates the header row dynamically by matching your schema column names. Use this when the header is not always on row 1 (for example, files with a leading title or blank rows before the header). The full schema header must still appear in column order in each file.

Excel Parameters

Applies when record type is Excel.

Password-Protected Workbooks

If a workbook is encrypted with a password (set via Protect Workbook in Excel), check This file is password protected and enter the password in the File Password field. Integrate.io decrypts the workbook during schema preview and job runs. Passwords containing special characters such as $ are supported. The checkbox appears when the source path ends in .xlsx or .xlsm. Legacy .xls files are not supported for password decryption. Unchecking the box clears any saved password.
Password-protected workbooks do not use streaming mode. When a password is set, enabling Ingest large Excel file reads the workbook in standard mode.When streaming a single sheet, date cells come through as Excel serial numbers (e.g. 45306). Declare those columns as int or decimal in your schema, or transform them downstream.

JSON Parameters

Applies when record type is JSON object. Base record JSONPath Expression: defines the base record and extracts nested objects or arrays. Read more about processing JSON data.

Source Action

All four source actions are available for Amazon S3. When using Move processed files, the Append string to filename option is supported.
Determines what happens to source files during and after processing.

Incremental Load (Process Only New Files)

Move Processed Files


PGP Decryption

To decrypt source files encrypted with OpenPGP, select an active entry from the PGP Key dropdown. The entry must hold a private key. Integrate.io decrypts each matching file before parsing it.
Paths that contain a space, semicolon, or parenthesis are not supported when a PGP key is set.
See PGP Keys for how to add and manage keys.

Source Schema

After defining the source location and format, select the fields to include. For each field, define:
  • Alias: how to refer to the field in downstream components. Illegal characters are flagged before you close the dialog.
  • Data type: the type to cast the field to.
  • Key (JSON only): the key name in the source JSON.
You can also add a file_path field from the Meta Data section to capture the source file path as a field in your data.

FAQ

What IAM permissions does Integrate.io need for a source-only connection? Attach AmazonS3ReadOnlyAccess to the IAM user, or create a custom policy granting s3:ListBucket on the bucket and s3:GetObject on its objects. What permissions are needed for a destination pipeline? The IAM user needs s3:ListBucket, s3:PutObject, s3:GetObject, and s3:DeleteObject. All three object actions are required because Integrate.io finalizes output files with a copy-and-delete operation. Why does Integrate.io require all three object actions for writes? Integrate.io writes each output file to a temporary object first, then finalizes it. On S3, finalization is a copy (GetObject) followed by deletion of the temporary object (DeleteObject). Without all three, the finalization step fails. Can I connect to a bucket in a region that requires Signature Version 4? Yes. Enter the bucket’s AWS region in the connection form. See the AWS region list for regions that require Sig v4.

Amazon S3 Destination

File Storage Options

Pattern Matching in Source Paths

Reading File Storage Data Incrementally

PGP Keys

Selecting File Input Format

Last modified on September 7, 2026