This guide covers setting up Hybrid VPC with AWS S3 as your storage backend. Reducto assumes an IAM role in your AWS account to read and write documents.Documentation Index
Fetch the complete documentation index at: https://docs.reducto.ai/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
- AWS account(s): Can use separate accounts for development, staging, and production
- Terraform 1.2+: For infrastructure provisioning
- Values from Reducto (provided during onboarding):
- Principal ARNs for Reducto’s compute services
- ExternalId for secure role assumption
- Endpoint Service name and region (if using PrivateLink)
Principal ARNs
Use the appropriate ARNs for your deployment region:| Environment | EKS Role ARN | Modal User ARN |
|---|---|---|
| Prod (US) | arn:aws:iam::731106932034:role/reducto-prod | arn:aws:iam::731106932034:user/modal-prod |
| Prod-EU | arn:aws:iam::731106932034:role/reducto-prod-eu | arn:aws:iam::731106932034:user/modal-prod-eu |
| Prod-AU | arn:aws:iam::731106932034:role/reducto-prod-au | arn:aws:iam::731106932034:user/modal-prod-au |
VPC Endpoint Service Configuration
If using PrivateLink, use the endpoint service closest to your region:| Environment | VPC Endpoint Service Name | Region | DNS Name |
|---|---|---|---|
| Prod (US) | com.amazonaws.vpce.us-west-2.vpce-svc-0929182c8ed77b7a8 | us-west-2 | hybrid.platform.reducto.ai |
| Prod-EU | com.amazonaws.vpce.eu-central-1.vpce-svc-0a231d441f3a482a0 | eu-central-1 | hybrid.eu.platform.reducto.ai |
| Prod-AU | com.amazonaws.vpce.ap-southeast-2.vpce-svc-0da3ceba709035c36 | ap-southeast-2 | hybrid.au.platform.reducto.ai |
VPC endpoints support cross-region connections. You can create a VPC endpoint in your region that connects to any Reducto endpoint service above, regardless of your VPC’s region.
Setup
Components provisioned
| Component | Purpose | Required |
|---|---|---|
| S3 Bucket | Document and artifact storage with configurable lifecycle | Yes |
| IAM Role | Cross-account access for Reducto with ExternalId protection | Yes |
| VPC Endpoint | PrivateLink endpoint for private API access | Optional |
Access Modes
- Assume Role (recommended)
- Bucket Policy
The default and recommended access mode. Reducto assumes an IAM role in your account with ExternalId protection.Benefits:
- ExternalId prevents confused deputy attacks
- Fine-grained permission control
- Easy credential rotation
PrivateLink Setup (Optional)
For private-only API access without traversing the public internet:Request PrivateLink enablement
Provide the following to your Reducto team:
- AWS Account ID(s): Where you’ll create the VPC endpoint
- Region(s): Where you need PrivateLink connectivity
Validation Checklist
Afterterraform apply, verify your setup:
- Terraform apply succeeded without errors
- S3 bucket has lifecycle rule:
- S3 bucket blocks public access: All public access settings should be blocked
- IAM role trust policy is correct: Verify Reducto principals and ExternalId condition
- If PrivateLink enabled: Endpoint status shows “available”
- Smoke test: Run a small Reducto job and verify objects appear in the bucket
Multi-Region Setup
Deploy separate infrastructure in each region with region-specific Principal ARNs:Multi-Environment Setup
For organizations with separate AWS accounts for dev/staging/prod:Security
ExternalId protection
The ExternalId in the IAM role trust policy prevents confused deputy attacks. Only requests with the correct ExternalId can assume the role.Principle of least privilege
The IAM role grants only the permissions necessary for Reducto operations:s3:GetObject— Read documentss3:PutObject— Write results and artifactss3:DeleteObject— Clean up temporary filess3:ListBucket— List objects for batch operationss3:AbortMultipartUpload,s3:ListMultipartUploadParts— Handle large file uploads