App Runner in 2025: The Simplest Path to Production Containers
App Runner is AWS’s answer to Heroku—deploy containers without managing infrastructure. In 2025, it’s gained VPC support, custom domains, and WAF integration, making it viable for production workloads.
App Runner vs Alternatives
| Service | Best For | Complexity |
|---|---|---|
| App Runner | Web apps, APIs, microservices | Lowest |
| Lambda | Event-driven, short tasks | Low |
| ECS Fargate | Complex container workloads | Medium |
| EKS | Kubernetes ecosystem | High |
Deploy from Source Code
# apprunner.yaml in your repo
version: 1.0
runtime: python312
build:
commands:
build:
- pip install -r requirements.txt
run:
command: gunicorn app:app
network:
port: 8000
env:
- name: DATABASE_URL
value: ${DATABASE_URL} # From App Runner env vars
# Deploy with AWS CLI
aws apprunner create-service \
--service-name my-api \
--source-configuration '{
"CodeRepository": {
"RepositoryUrl": "https://github.com/myorg/myapi",
"SourceCodeVersion": {"Type": "BRANCH", "Value": "main"},
"CodeConfiguration": {
"ConfigurationSource": "REPOSITORY"
}
},
"AutoDeploymentsEnabled": true
}'
VPC Integration (2025)
# Connect App Runner to private resources
Resources:
VpcConnector:
Type: AWS::AppRunner::VpcConnector
Properties:
VpcConnectorName: private-connector
Subnets:
- !Ref PrivateSubnet1
- !Ref PrivateSubnet2
SecurityGroups:
- !Ref AppRunnerSG
MyService:
Type: AWS::AppRunner::Service
Properties:
ServiceName: my-api
NetworkConfiguration:
EgressConfiguration:
EgressType: VPC
VpcConnectorArn: !GetAtt VpcConnector.VpcConnectorArn
SourceConfiguration:
ImageRepository:
ImageIdentifier: !Sub ${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com/myapi:latest
ImageRepositoryType: ECR
2025 Features
What’s New
- WAF integration: Protect APIs with AWS WAF rules
- Private services: Internal-only endpoints via VPC
- Improved scaling: Scale to zero, faster cold starts
- GPU support (preview): ML inference workloads
- IPv6: Dual-stack networking support
Pricing
# App Runner pricing (us-east-1, December 2025)
Provisioned:
vCPU: $0.064/vCPU-hour
Memory: $0.007/GB-hour
Active (handling requests):
vCPU: $0.007/vCPU-hour (additional)
Memory: $0.0008/GB-hour (additional)
# Example: 1 vCPU, 2GB RAM, 50% utilization
# Monthly: ~$60 (much cheaper than ALB + ECS)
App Runner is the fastest path from code to URL. If your workload fits (web apps, APIs), it’s the right choice.