Skip to main content
S3Connector lets OuterProduct read data directly from your Amazon S3 bucket at training and inference time. You store your AWS credential once in the OuterProduct Console and reference it by name in the SDK. No AWS access keys or secrets are ever passed through the SDK. Instead, the OuterProduct backend assumes a cross-account IAM role you create in your AWS account.

Add an S3 credential in the Console

Before using S3Connector from Python, create a credential in the OuterProduct Console and set up the corresponding IAM role in AWS.
1

Open the New Connector wizard

Log in to console.outerproduct.com and navigate to Connectors. Click New Connector, give your connector a name, and select S3.
2

Enter your S3 bucket information

Paste your S3 bucket details into the first page of the wizard, then click Next.
3

Create an IAM role with a Custom Trust Policy

The Console displays a JSON trust policy. In your AWS account, navigate to IAM → Roles → Create Role. Choose Custom Trust Policy and paste the JSON provided by the Console.
This trust policy allows the OuterProduct backend to assume the new role — it does not grant any resource access on its own.
4

Attach an inline permissions policy

After creating the role, open it in AWS and select Edit role → Add permissions → Create inline policy. Toggle to JSON format and paste the permissions policy displayed in the OuterProduct Console. Save the policy.
5

Save the connector

Return to the OuterProduct Console and complete the wizard. Your connector is now ready to use from the SDK.

Use it from Python

Once your credential is saved in the Console, instantiate S3Connector with your credential name and AWS region, then call .table() with the full S3 URI of your file.
import outerproduct as op

connector = op.S3Connector(connector_credential_name="prod-aws", region="us-east-1")
dataset = connector.table("s3://my-bucket/data/customers.parquet")

model = op.reasoning.fit(dataset, task=op.Binclass(label_column="churn")).wait()
The connector_credential_name argument must match exactly the name you gave your connector in the OuterProduct Console.
OuterProduct assumes the IAM role at training time. Make sure the role’s trust policy and inline permissions policy are both saved in AWS before you call .table().

Other connectors