Skip to main content

AWS Marketplace

Deploy Arc on AWS with a single click using our pre-configured AMI from AWS Marketplace.

Overview

Arc is available on AWS Marketplace as a ready-to-run AMI. No license keys, no sales calls—just subscribe and launch.

What you get:

  • Pre-installed Arc with systemd service
  • Ubuntu-based AMI
  • All features enabled
  • Free to use (AGPL-3.0)
  • Optional enterprise support ($500/month)

Prerequisites

  • AWS Account
  • EC2 key pair for SSH access
  • VPC with appropriate subnets
  • (Production) ACM certificate for HTTPS

Quick Start (Dev/Testing Only)

:::warning Not for Production This pattern exposes your database directly to the internet. Use only for testing and evaluation. :::

  1. Subscribe to Arc on AWS Marketplace

    Open Arc on AWS Marketplace

  2. Launch an EC2 instance with a public IP

  3. Configure security group to allow port 8000 (restrict to your IP)

  4. Get your admin token:

# SSH into your instance (Ubuntu-based AMI)
ssh -i your-key.pem ubuntu@your-instance-ip

# View Arc logs to find the admin token
sudo journalctl -u arc | grep "Admin token"

# You'll see something like:
# Admin token: ark_abc123...xyz
  1. Test the connection:
export ARC_URL="http://your-instance-ip:8000"
export ARC_TOKEN="your-token-here"

curl $ARC_URL/health

For production workloads, deploy Arc behind an Application Load Balancer in a private subnet.

Architecture

┌──────────────────────────────────────────────────────────┐
│ VPC (10.0.0.0/16) │
│ │
│ ┌────────────────────────────────────────────────────┐ │
│ │ Public Subnet (10.0.0.0/24) │ │
│ │ │ │
│ │ ┌──────────────────────────────────┐ │ │
│ │ │ Application Load Balancer (ALB) │ │ │
│ │ │ - HTTPS (443) with SSL cert │ │ │
│ │ │ - Terminates TLS │ │ │
│ │ │ - Health checks │ │ │
│ │ └────────────┬─────────────────────┘ │ │
│ │ │ │ │
│ └───────────────┼────────────────────────────────────┘ │
│ │ HTTP (8000) │
│ ┌───────────────┼────────────────────────────────────┐ │
│ │ Private Subnet (10.0.1.0/24) │ │ │
│ │ ▼ │ │
│ │ ┌──────────────────────────────────────┐ │ │
│ │ │ Arc Instance │ │ │
│ │ │ - No public IP │ │ │
│ │ │ - Port 8000 from ALB only │ │ │
│ │ │ - EBS storage for Parquet files │ │ │
│ │ └──────────────────────────────────────┘ │ │
│ │ │ │
│ └────────────────────────────────────────────────────┘ │
│ │
│ Optional: │
│ • Telegraf in same VPC │
│ • Grafana in same VPC │
│ • NAT Gateway for outbound │
└──────────────────────────────────────────────────────────┘

Benefits:

  • SSL termination at ALB (free certificate from ACM)
  • Arc in private subnet (no internet exposure)
  • Security groups restrict traffic
  • Health checks and monitoring

Step 1: Subscribe to Arc

  1. Go to Arc on AWS Marketplace
  2. Click View purchase options
  3. Click Subscribe
  4. Wait for subscription to activate, then click Continue to Configuration

Step 2: Launch Configuration

  1. Select your Region
  2. Choose an Instance type:
    • Testing: t3.large (2 vCPU, 8 GB RAM)
    • Production: m8a.xlarge or larger
  3. Click Continue to Launch

Step 3: Configure Network Settings

  1. VPC: Select your existing VPC or create a new one
  2. Subnet: Choose a private subnet (no internet gateway route)
  3. Security Group: Create a new one that allows:
    • Inbound: Port 8000 from your ALB security group only
    • Outbound: As needed for your environment
  4. Click Launch

Step 4: Create a Target Group

Before creating the load balancer, create a target group.

  1. Go to EC2 ConsoleTarget GroupsCreate target group
  2. Configure:
    • Target type: Instances
    • Target group name: arc-target-group
    • Protocol: HTTP
    • Port: 8000
    • VPC: Same VPC as Arc instance
  3. Health checks:
    • Path: /health
    • Healthy threshold: 2
    • Unhealthy threshold: 2
    • Timeout: 5 seconds
    • Interval: 30 seconds
  4. Click Next, select your Arc instance, click Include as pending below
  5. Click Create target group

Step 5: Create the Application Load Balancer

  1. Go to EC2 ConsoleLoad BalancersCreate load balancer
  2. Select Application Load Balancer
  3. Configure:
    • Name: arc-alb
    • Scheme: Internet-facing
    • IP address type: IPv4
  4. Network mapping:
    • Select your VPC
    • Select at least two public subnets (one per AZ)
  5. Security groups:
    • Allow inbound HTTPS (443) from your allowed IP ranges
  6. Listeners:
    • Protocol: HTTPS, Port: 443
    • Default action: Forward to arc-target-group
  7. Secure listener settings:
    • Security policy: ELBSecurityPolicy-TLS13-1-2-2021-06
    • Certificate: Select from ACM (free) or import your own
  8. Click Create load balancer

Step 6: Point Your Domain to the Load Balancer

  1. Go to Load Balancers and copy the DNS name

Using Route 53:

  1. Go to Route 53Hosted zones → your domain
  2. Click Create record
  3. Configure:
    • Record name: arc (for arc.yourdomain.com)
    • Record type: A
    • Alias: Yes
    • Route traffic to: Application Load Balancer
    • Region: Your ALB's region
    • Load balancer: Select your ALB
  4. Click Create records

Using External DNS:

Create a CNAME record pointing to the ALB DNS name:

  • Name: arc
  • Type: CNAME
  • Value: arc-alb-xxxxx.us-east-1.elb.amazonaws.com
note

CNAME records don't work for apex domains. Use a subdomain like arc.yourdomain.com.

Step 7: Verify Security Groups

Ensure you have two properly configured security groups:

ALB Security Group:

  • Inbound: HTTPS (443) from 0.0.0.0/0 (or your allowed IP ranges)
  • Outbound: HTTP (8000) to Arc Security Group

Arc Security Group:

  • Inbound: HTTP (8000) from ALB Security Group only
  • Outbound: All traffic (or restrict as needed)

Step 8: Verify Target Health

  1. Go to Target Groupsarc-target-group
  2. Click Targets tab
  3. Wait for status to change from "initial" to "healthy"

If unhealthy, check:

  • Security group allows port 8000 from ALB
  • Arc is running: sudo systemctl status arc
  • Health check path is correct: /health

Step 9: Get Your Admin Token

SSH into your Arc instance through a bastion host or Session Manager:

# Using a bastion host (Ubuntu-based AMI)
ssh -i your-key.pem -J ubuntu@bastion-ip ubuntu@arc-private-ip

# Or use AWS Systems Manager Session Manager
aws ssm start-session --target i-your-instance-id

# Get the admin token
sudo journalctl -u arc | grep "Admin token"

# You'll see:
# Admin token: ark_abc123...xyz

Step 10: Verify Deployment

Test the health endpoint through your ALB:

curl https://arc.yourdomain.com/health

# Expected: {"status":"healthy"}

Test ingestion using MessagePack columnar format:

export ARC_URL="https://arc.yourdomain.com"
export ARC_TOKEN="your-token-here"

# Write test data
echo '{"m":"cpu","columns":{"time":[1734372000000],"host":["server01"],"usage":[95.0]}}' | \
python3 -c "import sys,msgpack,json; sys.stdout.buffer.write(msgpack.packb(json.load(sys.stdin)))" | \
curl -X POST "$ARC_URL/api/v1/write/msgpack" \
-H "Authorization: Bearer $ARC_TOKEN" \
-H "Content-Type: application/msgpack" \
-H "x-arc-database: default" \
--data-binary @-

# Query it back
curl -X POST "$ARC_URL/api/v1/query" \
-H "Authorization: Bearer $ARC_TOKEN" \
-H "Content-Type: application/json" \
-d '{"sql":"SELECT * FROM default.cpu","format":"json"}'

Instance Types

Use CaseInstance TypevCPUMemoryNotes
Testingt3.large28 GBBurstable, cost-effective
Small Productionm8a.xlarge416 GBGeneral purpose
Medium Productionm8a.2xlarge832 GBRecommended
High Throughputc7i.4xlarge1632 GBCompute optimized

Storage

Arc stores data in Parquet files on the EBS volume attached to the instance.

Recommendations:

  • Use gp3 volumes for best price/performance
  • Size based on your data retention needs
  • Enable EBS encryption for data at rest
# Check disk usage
df -h /app/data

Pricing

ComponentCostNotes
Arc SoftwareFreeAGPL-3.0 license
EC2 InstanceVariableSee EC2 Pricing
EBS Storage~$0.08/GB/monthgp3 pricing
ALB~$20/monthPlus data transfer
SSL CertificateFreeAWS Certificate Manager
Enterprise Support$500/monthOptional

Service Management

Arc runs as a systemd service on the AMI.

# Check status
sudo systemctl status arc

# View logs
sudo journalctl -u arc -f

# Restart service
sudo systemctl restart arc

# Stop service
sudo systemctl stop arc

Troubleshooting

Target Shows Unhealthy

  1. Check Arc is running:
sudo systemctl status arc
  1. Check Arc is listening on port 8000:
sudo ss -tlnp | grep 8000
  1. Test health endpoint locally:
curl http://localhost:8000/health
  1. Check security group allows traffic from ALB

504 Gateway Timeout

The ALB can't reach the Arc instance. Check:

  • Security group allows port 8000 from ALB
  • Arc instance is in the correct subnet
  • Target group has the correct port (8000)

Can't Find Admin Token

# Check all Arc logs
sudo journalctl -u arc | head -200

# Or search specifically
sudo journalctl -u arc | grep -i "admin\|token"

Next Steps