AWS Deployment

Deploy jambonz on AWS using EC2 instances and autoscaling

Prerequisites

jambonz is deployed on Amazon Web Services (AWS) using CloudFormation templates. You will need:

  • An AWS account with appropriate permissions
  • AWS CLI installed and configured with your credentials
  • An AWS SSH key pair for your desired region

Generate and run the CloudFormation templates

The CloudFormation templates for deploying jambonz on AWS are available here.

  • Clone the repository to your local machine.
  • Decide on the AWS region you want to deploy in and the jambonz configuration (mini, medium, large)
  • Run the generate-cf.sh script to copy the EC2 amis to your account and generate the CloudFormation template
  • Follow the instructions generated to deploy the Cloudformation stack.
  • Once the Cloudformation stack is created, follow the post-install steps outlined in the Post-Install Steps article to complete the setup.
  • Generate a software license key as described in the Software Licensing article.

Example

Here is an example of generating a Cloudformation template for a jambonz-mini in us-west-1.

./generate-cf.sh
================================================
jambonz CloudFormation Generator
================================================
Checking AWS credentials...
✓ Authenticated successfully
Account ID: 376029039764
User/Role: arn:aws:iam::376029039764:user/dhorton
Select deployment size:
1) mini - Single EC2 instance with all components
2) medium - Multi-tier deployment (SBC, Feature Server, Web/Monitoring, Recording)
3) large - Fully separated architecture (SBC SIP, SBC RTP, FS, Web, Monitoring, Recording)
Enter choice [1-3]: 2
Selected: medium
Select AWS region:
Available regions:
1 us-east-1
2 us-east-2
3 us-west-1
4 us-west-2
5 ca-central-1
6 ca-west-1
7 sa-east-1
8 mx-central-1
9 eu-central-1
10 eu-central-2
11 eu-west-1
12 eu-west-2
13 eu-west-3
14 eu-north-1
15 eu-south-1
16 eu-south-2
17 ap-south-1
18 ap-south-2
19 ap-east-1
20 ap-east-2
21 ap-southeast-1
22 ap-southeast-2
23 ap-southeast-3
24 ap-southeast-4
25 ap-southeast-5
26 ap-southeast-6
27 ap-southeast-7
28 ap-northeast-1
29 ap-northeast-2
30 ap-northeast-3
31 me-central-1
32 me-south-1
33 il-central-1
34 af-south-1
Enter region name (e.g., us-east-1): eu-west-3
Selected region: eu-west-3
================================================
Reading public AMI IDs from mappings...
================================================
Querying version tags from public AMIs...
This will take a moment - querying 4 AMI(s)...
Querying version tag for SbcAmi (ami-0eb29538f92008874)...
✓ SbcAmi: ami-0eb29538f92008874 (version: v10.0.2)
Querying version tag for FsAmi (ami-0e2ee4081c6393519)...
✓ FsAmi: ami-0e2ee4081c6393519 (version: v10.0.2)
Querying version tag for WebMonitoringAmi (ami-0d11651e060e40b7c)...
✓ WebMonitoringAmi: ami-0d11651e060e40b7c (version: v10.0.2)
Querying version tag for RecordingServerAmi (ami-0b0e1c42c96499cf2)...
✓ RecordingServerAmi: ami-0b0e1c42c96499cf2 (version: v10.0.2)
✓ All AMIs verified with proper JambonzVersion tags
Detected jambonz version: v10.0.2
================================================
Validating source AMI availability...
================================================
Checking that all source AMIs are ready to be copied...
Checking SbcAmi (ami-0eb29538f92008874)...
✓ AMI is available
Checking FsAmi (ami-0e2ee4081c6393519)...
✓ AMI is available
Checking WebMonitoringAmi (ami-0d11651e060e40b7c)...
✓ AMI is available
Checking RecordingServerAmi (ami-0b0e1c42c96499cf2)...
✓ AMI is available
✓ All source AMIs are available and ready to copy
================================================
Copying AMIs to your account...
================================================
This will take 5-15 minutes for same-region copying. Please be patient.
Note: Keep this script running to automatically generate the CloudFormation template.
Status updates every 30 seconds.
Initiating 4 AMI copy operation(s) in parallel...
Starting copy: SbcAmi (ami-0eb29538f92008874) version v10.0.2...
✓ Copy initiated: ami-0751fc0bf773500d4
Tagging AMI...
✓ AMI tagged successfully
Starting copy: FsAmi (ami-0e2ee4081c6393519) version v10.0.2...
✓ Copy initiated: ami-0e09b398f9595b24b
Tagging AMI...
✓ AMI tagged successfully
Starting copy: WebMonitoringAmi (ami-0d11651e060e40b7c) version v10.0.2...
✓ Copy initiated: ami-01d01d4eb80b18f29
Tagging AMI...
✓ AMI tagged successfully
Starting copy: RecordingServerAmi (ami-0b0e1c42c96499cf2) version v10.0.2...
✓ Copy initiated: ami-0b81b0618f98c334b
Tagging AMI...
✓ AMI tagged successfully
✓ All 4 AMI copy operation(s) started in parallel
================================================
Waiting for AMI copies to complete...
================================================
Status updates every 30 seconds. This typically takes 5-15 minutes.
Do not close this terminal or interrupt the script while AMI copies are in progress!
Tip: You can also check progress in another terminal:
aws ec2 describe-images --region eu-west-3 --image-ids ami-0751fc0bf773500d4 ami-0e09b398f9595b24b ami-01d01d4eb80b18f29 ami-0b81b0618f98c334b --query 'Images[*].[ImageId,Name,State]' --output table
[Check #1] Elapsed: 0m 13s
SbcAmi (ami-0751fc0bf773500d4): pending
FsAmi (ami-0e09b398f9595b24b): pending
WebMonitoringAmi (ami-01d01d4eb80b18f29): pending
RecordingServerAmi (ami-0b81b0618f98c334b): pending
Progress: 0/4 AMIs ready
[Check #2] Elapsed: 0m 47s
SbcAmi (ami-0751fc0bf773500d4): pending
FsAmi (ami-0e09b398f9595b24b): pending
WebMonitoringAmi (ami-01d01d4eb80b18f29): pending
RecordingServerAmi (ami-0b81b0618f98c334b): pending
Progress: 0/4 AMIs ready
[Check #3] Elapsed: 1m 20s
✓ SbcAmi (ami-0751fc0bf773500d4): available
✓ FsAmi (ami-0e09b398f9595b24b): available
✓ WebMonitoringAmi (ami-01d01d4eb80b18f29): available
✓ RecordingServerAmi (ami-0b81b0618f98c334b): available
Progress: 4/4 AMIs ready
================================================
✓ All 4 AMI(s) are now available!
================================================
Total time: 83s (1m 23s)
================================================
Generating CloudFormation template...
================================================
✓ CloudFormation template generated: /Users/dhorton/beachdog-enterprises/beachdog-networks/git/jambones.org/jambonz-selfhosting/cloudformation/jambonz-medium-eu-west-3.yaml
Validating generated template...
✓ Template is valid YAML
================================================
SUCCESS!
================================================
Copied AMI IDs (for your records):
SbcAmi: ami-0751fc0bf773500d4
FsAmi: ami-0e09b398f9595b24b
WebMonitoringAmi: ami-01d01d4eb80b18f29
RecordingServerAmi: ami-0b81b0618f98c334b
Generated CloudFormation template:
/Users/dhorton/beachdog-enterprises/beachdog-networks/git/jambones.org/jambonz-selfhosting/cloudformation/jambonz-medium-eu-west-3.yaml
Next steps:
Note: This template is 77680 bytes (CloudFormation has a 51,200 byte limit for direct usage).
1. Upload template to S3 bucket:
aws s3 cp /Users/dhorton/beachdog-enterprises/beachdog-networks/git/jambones.org/jambonz-selfhosting/cloudformation/jambonz-medium-eu-west-3.yaml s3://<your-bucket>/jambonz-medium-eu-west-3.yaml
2. Deploy using S3 URL:
aws cloudformation create-stack \
--region eu-west-3 \
--stack-name jambonz-medium \
--template-url https://<your-bucket>.s3.amazonaws.com/jambonz-medium-eu-west-3.yaml \
--capabilities CAPABILITY_IAM \
--parameters \
ParameterKey=KeyName,ParameterValue=<your-key-name> \
ParameterKey=URLPortal,ParameterValue=<your-domain>
3. Or deploy via AWS Console (recommended for large templates):
- Navigate to CloudFormation service in eu-west-3
- Click 'Create stack'
- Choose 'Upload a template file' and select: /Users/dhorton/beachdog-enterprises/beachdog-networks/git/jambones.org/jambonz-selfhosting/cloudformation/jambonz-medium-eu-west-3.yaml
- Follow the wizard to configure parameters

Resources