Skip to main content

Give your OuterProduct account permission to access your S3 bucket

We authenticate with AWS by assuming an IAM role in your account. You will paste two generated JSON blocks in AWS: first the custom trust policy, then the S3 permissions policy.
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 URI

Enter the S3 URI you want OuterProduct to read, for example s3://my-bucket/data/, then click Next.
3

Create an IAM role with the generated custom trust policy

In AWS IAM, go to Roles, click Create role, and choose Custom trust policy. Paste the generated custom trust policy from the connector wizard into the trust policy box.
Do not paste the S3 permissions policy into the custom trust policy box.
4

Attach the generated S3 permissions policy to the same role

Finish creating the role, open it, and go to Permissions. Click Add permissions, choose Create inline policy, switch to JSON, and paste the generated permissions policy from the connector wizard.
5

Enter the role ARN

Copy the ARN for that IAM role from AWS and paste it into the connector wizard.
6

Save the connector

Click Add connector. OuterProduct validates sts:AssumeRole before saving the connector.
The generated custom trust policy only sets up login. The generated permissions policy controls which S3 objects OuterProduct can read.
For more background on why you had to attach these policies, read AWS’s guide to third party tool authentication, in particular its solution against the confused deputy problem.

Use it from Python

Once your connector is saved in the Console, register the S3 file as a source table with ws.register_s3. Pass a table name, the full s3:// URI of the folder or file corresponding to a parquet table, and the connector name from the Console. The call returns a DataFrame you can train on, or query later with ws.table(name) or ws.sql(...).