Skip to main content
Available on the Enterprise plan. Contact sales to learn more.
Deploy your Enterprise AWS Runner using the enhanced CloudFormation template with custom ingress capabilities.

Prerequisites

Before starting the deployment, ensure you have:
  • Admin access to your Ona organization
  • AWS Account with appropriate permissions to create CloudFormation stacks
  • VPC and Subnets configured in your AWS account
  • SSL/TLS Certificate provisioned in AWS Certificate Manager (ACM) with both root domain and wildcard subdomain SANs
  • Domain Name that you control and can modify DNS records for
  • Permissions to deploy CloudFormation stacks with IAM resources

Create Enterprise Runner in Ona

Go to Settings -> Runners, and press Setup a new runner: Ona settings page showing Runners section with Setup a new runner button After choosing AWS from the list of available providers, continue with the Enterprise Runner template. Runner provider selection showing AWS, GCP, and other cloud options CloudFormation template selection showing available Runner template options Choose the Enterprise Runner template, provide a name and select the AWS region to deploy the Runner into, then press Create. This creates the Runner reference in Ona.
Runners are regional, and can only launch Environments in the AWS region they are deployed in. For multi-region support we recommend setting up multiple Runners in different regions. The region cannot be changed once deployed.
AWS Runner creation form with name field and region selector Runner details page showing CloudFormation deployment options and connection status

CloudFormation Template Deployment

Next, ensure you are signed into the right AWS account in the AWS console, and then press Open AWS CloudFormation to start deploying the Runner into your AWS account. This will link you to the AWS console to create the CloudFormation stack: AWS CloudFormation Quick create stack page with pre-filled Enterprise Runner template parameters Most parameters are auto-filled already. The template is organized into several parameter groups and has to be filled out carefully.

Ona configuration

Core authentication and API connection settings for your Runner. ⚠️ Important: These values are automatically generated when you create a Runner configuration. Do not modify these values manually.

Network configuration (required)

VPC and subnet settings for deploying the Runner infrastructure. Recommendations:
  • Select 2-3 Availability Zones for high availability
  • EC2 subnets: Use private subnets, must be sufficiently large for your expected workload
  • Load balancer subnets: Must have CIDR ranges routable from your internal network for user access
  • Ensure connectivity from user locations via VPN, Direct Connect, or Transit Gateway

DNS configuration

Domain name, SSL certificate, and load balancer visibility settings. Load Balancer Visibility Options:
  • internal: Load balancer is only accessible from within your VPC (recommended for private deployments)
  • internet-facing: Load balancer is accessible from the internet (only if using public subnets)

Network configuration (optional)

Configure additional network settings for enterprise security requirements. Security Group Behavior:
  • If not provided: An automatic security group will be created that allows all traffic (0.0.0.0/0) to ports 80 and 443
  • If provided: You can specify a custom security group to narrow down the allowed traffic sources for enhanced security
Proxy Configuration: When configuring HTTP/HTTPS proxy, NO_PROXY must include: .internal, 169.254.0.0/16, app.gitpod.io, and .amazonaws.com. Proxy Update Behavior:
  • Runner infrastructure: Changes take effect immediately after CloudFormation update
  • Component-specific timing:
    • Content initialization: Effective after environment restart
    • Devcontainer: Effective after rebuild
    • Docker in Docker: Effective after container recreation

Custom CA Certificate

The CustomCATrustBundle parameter accepts three formats: Store your CA bundle in S3 and reference it by URL. This avoids the EC2 user data size limit and is the recommended approach for bundles with multiple certificates.
  1. Create an S3 bucket with a name starting with gitpod- (e.g. gitpod-myorg)
  2. Create a shared folder and upload your .pem file:
  3. Ensure the bucket is accessible by the runner’s IAM role (buckets prefixed with gitpod- are allowed by default)
  4. Set the CustomCATrustBundle parameter to the S3 URL

HTTPS URL

If your CA bundle is hosted on an internal web server accessible from the runner’s VPC:

SSM Parameter Store

Use CloudFormation dynamic references to retrieve certificates from AWS SSM Parameter Store. For syntax details, see SSM Parameter Store documentation.
SSM dynamic references embed the full certificate content into EC2 user data, which has a 16 KB limit. If your CA bundle contains multiple certificates, this can exceed the limit and cause environment creation to fail with "User data is limited to 16384 bytes". Use an S3 URL instead.
Custom CA certificates work in runner, content init (SCM), and docker pull operations. However, they are not supported in devcontainer and devcontainer image build phases - you must add CA certificates to your images for these use cases.
For troubleshooting, see Custom CA certificate issues.

Review and Deploy

  1. Review Configuration
    • Verify all parameters are correctly set
    • Review the resource summary
  2. Acknowledge Capabilities
    • Check the box acknowledging that CloudFormation will create IAM resources
    • This is required for the stack to create necessary service roles
  3. Create Stack
    • Click “Create stack” to begin deployment
    • Monitor the deployment progress in the Events tab
The CloudFormation stack deployment typically takes 20-25 minutes.

Monitoring Deployment

  1. Stack Status
    • Monitor the stack status on the CloudFormation dashboard
    • Any errors will be displayed in the Events tab
  2. Event Monitoring
    • Click on the “Events” tab to see real-time deployment progress

Post-Deployment DNS Configuration

Retrieve Load Balancer DNS Name

After successful deployment:
  1. Navigate to Outputs Tab
    • Click on your stack name
    • Go to the “Outputs” tab
  2. Locate DNS Names
    • Find the output value: LoadBalancerDNS: internal-LoadBa-XXXXX-123456789.us-east-1.elb.amazonaws.com

Configure DNS Records

Create DNS records in your domain registry or DNS provider for the exact domain name you specified in the CloudFormation parameters.

AWS Route 53

If you’re using AWS Route 53 to manage your domain, use alias records for the most AWS-native configuration:
  1. Navigate to Route 53 Console
  2. Create Alias Records
    • Click “Create record”
    • Toggle the Alias switch to enable alias functionality
    • Configure the following records:
AWS Route 53 record creation showing alias configuration pointing to Network Load Balancer Advantages of Route 53 Alias Records:
  • No additional charges for alias queries
  • Automatic health checking
  • Better performance with shorter resolution times
  • AWS-native integration with load balancers

Standard DNS Providers (CNAME Records)

For other DNS providers or if you prefer CNAME records: Example DNS Configuration: If you entered yourdomain.com as your domain name parameter, configure:
⚠️ Important: Replace yourdomain.com with the exact domain name you entered in the CloudFormation parameters.
  • DNS changes typically propagate within 5-60 minutes
  • You can verify DNS resolution using tools like nslookup or dig
  • Test both the root domain and a wildcard subdomain

Verification and Testing

  1. Internal Network Test
    • Verify that the load balancer is accessible from within your VPC
    • Test from an EC2 instance in the same VPC: curl -k https://yourdomain.com/_health
  2. DNS Resolution Test

Important Stack Outputs

After deployment, the following outputs provide important information for integration:

Private VPC Endpoints (Optional)

For enhanced security, you can connect to AWS services using AWS PrivateLink VPC endpoints instead of traversing the public internet. This provides private connectivity between your runner and AWS services. For a complete list of required VPC endpoints, configuration instructions, and troubleshooting guidance, see the Networking documentation.

Next steps

Once your Enterprise Runner is deployed, configure your repository access and Environment classes.

Configure Repository Access

Set up access to your repositories

Troubleshoot

Resolve common issues including networking problems and Runner configuration