BYOC Setup
Deploy TraceLoom infrastructure in your own AWS account using a guided 3-step wizard. All test execution happens on your EC2 instances, and all Playwright traces stay in your S3 bucket — zero data egress. Setup takes approximately 5 minutes.
AWS costs apply: BYOC deploys EC2 Spot instances, S3 buckets, SQS queues, and DynamoDB tables into your AWS account. These resources incur standard AWS charges (typically $3–5/month for light usage). Resources are billed by AWS, not TraceLoom. See Cost Estimate below for details.
Overview
BYOC (Bring Your Own Cloud) deploys TraceLoom's data plane into your AWS account via CloudFormation. Your test traces never leave your infrastructure. The architecture:
- TraceLoom control plane — manages test scheduling, sharding, and result aggregation. Hosted by TraceLoom.
- Your AWS account — runs EC2 Spot instances, stores traces in S3, queues jobs in SQS. You own and control all of this.
- Cross-account IAM role — TraceLoom assumes this role with a unique ExternalId tied to your account. Revoke at any time by deleting the CloudFormation stack.
Your Playwright traces, test artifacts, and test data never leave your infrastructure. TraceLoom reads test results and metadata — it does not retain your actual trace files.
Prerequisites
- An AWS account with permission to create IAM roles, S3 buckets, SQS queues, DynamoDB tables, and EC2 Launch Templates
- Your AWS Account ID (12-digit number from the AWS console)
- Preferred AWS region (e.g. us-east-1)
- TraceLoom account — sign up free
Step 1: Configure
In the TraceLoom app, navigate to Settings → BYOC Setup. Enter your AWS Account ID and preferred region. TraceLoom generates a unique ExternalId tied to your account — this is embedded automatically in the CloudFormation template and used to prevent confused deputy attacks.
Step 2: Deploy
Click Launch CloudFormation Stack. This opens the AWS CloudFormation Quick Create page pre-populated with all required parameters. The template URL is:
https://traceloom-public-templates.s3.amazonaws.com/latest/data-plane.yaml Review the parameters (Account ID, Region, and ExternalId are pre-filled), acknowledge IAM capabilities, and click Create Stack. TraceLoom polls every 10 seconds and shows live stack status in the wizard.
Step 3: Validate
Once the stack reaches CREATE_COMPLETE, TraceLoom automatically runs a validation
check. It verifies connectivity to each resource and reports the result inline. If validation
fails, the page shows remediation hints per resource — for example:
- S3 bucket not accessible — check bucket policy
- IAM role ExternalId mismatch — verify stack parameters match your wizard settings
- SQS queue unreachable — confirm the queue was created in the correct region
Resources Created
The CloudFormation template creates the following resources in your AWS account. All are fully visible in your AWS Console:
| Resource | Purpose |
|---|---|
| IAM Role (TraceLoom Data Plane Role) | Cross-account access with ExternalId condition |
| S3 Bucket | Test trace storage (.trace.zip files) |
| SQS Queue + Dead Letter Queue | Test job dispatch and failure isolation |
| DynamoDB Tables (4) | Run state, test results, schedules, configuration |
| EC2 Launch Template (t3.medium) | Spot instance fleet for test execution |
Cost Estimate
Approximate monthly cost for a team running approximately 1,000 tests/month:
- EC2 Spot (t3.medium, ~20 hrs/month): ~$0.80
- S3 storage (trace files, ~10 GB): ~$0.23
- SQS: ~$0.40
- DynamoDB (on-demand): ~$1.50
- Total: ~$3–5/month
Costs scale with test volume. Zero cost when idle — EC2 Spot instances terminate automatically when no jobs are queued.
Troubleshooting
- Stack stuck in CREATE_IN_PROGRESS — check the CloudFormation Events tab for
the first
FAILEDevent. Common causes: IAM permission boundaries in your account, VPC limits, or S3 bucket name conflicts. - Validation fails for IAM role — ensure the ExternalId in the stack matches the one shown in the TraceLoom wizard. The values must match exactly.
- S3 access denied — the IAM role must have
s3:PutObjecton the bucket created by this stack. - EC2 quota exceeded — your account may need a Spot instance quota increase. Request one in the EC2 console under Service Quotas.
Security Model
TraceLoom uses cross-account IAM role assumption with ExternalId (confused deputy protection). TraceLoom's control plane ARN is scoped to assume only your specific role. Your AWS credentials are never stored by TraceLoom — all access uses temporary STS credentials.
| Data | Location |
|---|---|
| Playwright trace files (.trace.zip) | Customer S3 bucket |
| Test run metadata | TraceLoom DynamoDB |
| API keys, schedules | TraceLoom DynamoDB |
| CloudWatch logs | Customer CloudWatch |
Note on secrets: Environment variable secrets (Settings → Secrets) are stored in TraceLoom's infrastructure, not your AWS account. Values are encrypted using AWS KMS before storage and are never returned in plaintext via the API. If you require secrets to remain entirely within your AWS account, store them in AWS Secrets Manager and reference them from your test code directly.
Last updated: March 2026