ORB AWS EC2 Quickstart (NAT)

Note

This quickstart runs the scheduler and worker manager on your local machine and requires NAT or port-forwarding so that AWS workers can connect back to it. If your machine does not have a public IP or you prefer a simpler setup, see ORB AWS EC2 Quickstart (EC2) instead.

Install AWS CLI

Warning

Do not use pip install awscli for this setup. That installs AWS CLI v1. Use the official AWS CLI v2 installer instead.

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

aws --version

Then create a new virtual environment and install Scaler with ORB extras:

python -m venv .venv
source .venv/bin/activate
pip install opengris-scaler[orb]

Then authenticate with AWS CLI:

aws login

Click the page link and proceed in your default browser to sign in, then follow the AWS CLI instructions in the terminal.

Start Services

Before starting services, make sure NAT setup is complete. If this machine already has a public IP, you can ignore NAT setup. Then copy the config.toml below and replace PUBLIC_IP with your real public IP address.

[object_storage_server]
bind_address = "tcp://127.0.0.1:8517"

[scheduler]
# use 0.0.0.0 so NAT and forward traffic from your public IP to this machine
bind_address = "tcp://0.0.0.0:8516"
object_storage_address = "tcp://127.0.0.1:8517"

[[worker_manager]]
type = "orb_aws_ec2"
scheduler_address = "tcp://127.0.0.1:8516"
worker_manager_id = "wm-orb"
# worker provisioned in AWS need reach to your PUBLIC_IP, and your router
# then forward packets to the machine you started services
object_storage_address = "tcp://<PUBLIC_IP>:8517"
worker_scheduler_address = "tcp://<PUBLIC_IP>:8516"
# You can start either with pre-built AMI or with specified python version
# and requirements_txt
# image_id = "ami-..."
python_version = "3.14"
requirements_txt = """
opengris-scaler>=1.27.0
numpy
pandas
"""
instance_type = "t3.medium"
aws_region = "us-east-1"
logging_level = "INFO"
task_timeout_seconds = 60

Run command:

scaler config.toml

After services are up, you should be good to go and can use the client to submit tasks to workers provisioned on AWS.