> Source: https://meetrix.io/blogs/milvus-developer-guide/
> Markdown copy of that page. Cite the URL above, not this file.

Development

# Milvus - Developer Guide

[By Binuka Ranatunga](https://meetrix.io/blogs/authors/binuka-ranatunga/) • August 3, 2026 • 8 min read

Learn how to launch and configure Milvus on AWS with our step-by-step deployment guide. This resource walks you through subscribing to the Milvus AMI, launching a preconfigured instance, and connecting to it with the pymilvus SDK, so you can start storing, indexing, and searching billions of embedding vectors without managing the underlying infrastructure yourself.

Milvus is the open-source vector database behind many production RAG pipelines, semantic search engines, and recommendation systems. The Meetrix AMI removes the manual installation and dependency management involved in running Milvus yourself, giving you a ready-to-use, self-hosted deployment on your own AWS account in minutes.

Prerequisites

Before you get started with the Milvus AMI, ensure you have the following prerequisites:

-   Basic knowledge of AWS services, including EC2 instances and security groups.
-   An active AWS account with appropriate permissions.
-   An existing EC2 key pair in your target region, or the ability to create one during launch.
-   If you encounter a vCPU quota error when launching the instance, follow [https://meetrix.io/blogs/increase-aws-vcpu-quota/](https://meetrix.io/blogs/increase-aws-vcpu-quota/) to increase your vCPU limit.

## Subscribe to Milvus on AWS Marketplace

### Step 1: Find the Milvus AMI

1.  Log in to your AWS Management Console.
2.  Navigate to '[Milvus Vector Database AMI for Scalable AI & RAG Applications](https://aws.amazon.com/marketplace/pp/prodview-74f7pvxzezeno)' in AWS Marketplace.

![Milvus Vector Database AMI listing page on AWS Marketplace](https://meetrix.io/blog-images/paas-dev-guides/milvus/milvus-1.png)

### Step 2: Subscribe

1.  Click **"View purchase options"** and then **"Subscribe"**.
2.  Accept the terms and conditions, then wait a few minutes while AWS creates your usage-based agreement.

![AWS Marketplace subscription page creating a usage-based agreement for Milvus](https://meetrix.io/blog-images/paas-dev-guides/milvus/milvus-2.png)

Once your subscription is active, you'll see a purchase confirmation with your agreement details.

![AWS Marketplace purchase confirmation for the Milvus Vector Database AMI](https://meetrix.io/blog-images/paas-dev-guides/milvus/milvus-3.png)

## Launching the Milvus Instance

The launch wizard offers two methods: **"Launch from EC2 Console"** for full control over configuration, or **"One-click launch from AWS Marketplace"** for a faster, minimal-configuration deployment. This guide uses the vendor-recommended one-click launch.

![Milvus AMI launch method selection showing Launch from EC2 Console and One-click launch options](https://meetrix.io/blog-images/paas-dev-guides/milvus/milvus-4.png)

### Step 1: Configure instance and network settings

1.  Select **"One-click launch from AWS Marketplace"** as the launch method.
2.  Keep the vendor-recommended instance type **t3a.large**, or choose a larger type for heavier workloads.
3.  Select your **VPC** and **subnet**, or create new ones.

![One-click launch configuration showing instance type, VPC, and subnet selection for Milvus](https://meetrix.io/blog-images/paas-dev-guides/milvus/milvus-9.png)

### Step 2: Create the security group

Create a vendor-recommended security group. It opens the ports Milvus needs to operate:

-   **22 (SSH)** - server administration.
-   **80 (HTTP)** and **443 (HTTPS)** - web-facing traffic and SSL certificate provisioning.
-   **19530 (TCP)** - the Milvus client/gRPC port used by pymilvus and other SDKs.

![Create vendor-recommended security group dialog showing inbound rules for ports 22, 80, 443, and 19530](https://meetrix.io/blog-images/paas-dev-guides/milvus/milvus-10.png)

### Step 3: Select a key pair and launch

1.  Choose an existing key pair, or create a new one.
2.  Review the AMI details, then click **"Launch"** under One-click launch.

![Security group created confirmation with key pair selection and the one-click Launch button](https://meetrix.io/blog-images/paas-dev-guides/milvus/milvus-11.png)

Alternatively, if you chose **"Launch from EC2 Console"**, you'll configure the same instance type, key pair, network settings, and security group rules directly in the EC2 launch wizard before clicking **"Launch instance"**.

![EC2 Launch an instance page showing the Milvus AMI, instance type, and launch summary](https://meetrix.io/blog-images/paas-dev-guides/milvus/milvus-5.png) ![EC2 launch wizard key pair, network settings, and security group configuration for Milvus](https://meetrix.io/blog-images/paas-dev-guides/milvus/milvus-6.png)

Note

Wait a few minutes after launch for the instance to finish booting and for Milvus to start before attempting to connect.

## Connect to Milvus

Once the instance is running, copy its public IPv4 address from the EC2 console. Visit **http://<Public IPv4 address>** in your browser to confirm Milvus has started and see the connection details.

![Milvus is running status page shown in the browser at the instance's public IP](https://meetrix.io/blog-images/paas-dev-guides/milvus/milvus-17.png)

Milvus listens on port **19530** and ships with a default admin user, so you can connect immediately using the pymilvus SDK. No web UI is bundled with this deployment - if you want one, run [Attu](https://github.com/zilliztech/attu) yourself in a separate container pointed at this host's port 19530.

```plaintext
pip install pymilvus
```

```plaintext
from pymilvus import connections, utility

connections.connect(
    host="<Public IPv4 address>",
    port="19530",
    user="root",
    password="Milvus"
)

print("Connected!")
print(utility.list_collections())
```

![Python script connecting to a Milvus instance with pymilvus and listing collections](https://meetrix.io/blog-images/paas-dev-guides/milvus/milvus-7.png)

Running the script confirms the connection and lists any existing collections (empty on a fresh instance):

![PowerShell terminal output showing a successful pymilvus connection to Milvus](https://meetrix.io/blog-images/paas-dev-guides/milvus/milvus-8.png)

Note

If you see a "502 Bad Gateway" error while the instance is still starting up, wait a few minutes and try again. The application may still be initializing.

![502 Bad Gateway nginx error shown while Milvus is still starting up](https://meetrix.io/blog-images/paas-dev-guides/milvus/milvus-15.png)

Security

Change the default root password before storing production data, and restrict the security group's source IP ranges instead of leaving them open to 0.0.0.0/0.

## Generate SSL Manually

The AMI's IAM role is preconfigured to request a Let's Encrypt certificate automatically when a Route 53-hosted domain is pointed at the instance. If automatic SSL provisioning fails, generate it manually instead.

### Step 1: Point your domain at the instance

Create an A record in Route 53 (or your DNS provider) pointing your domain to the instance's public IP address.

### Step 2: Log in to the server

```plaintext
ssh -i <your key name> ubuntu@<Public IP address>
```

### Step 3: Generate SSL

Navigate to the nginx site configuration and update it with your domain:

```plaintext
cd /etc/nginx/sites-available
sudo nano domain.conf
```

Replace the placeholder server name with your actual domain, save the file, then test and reload the nginx configuration:

```plaintext
sudo nginx -t
sudo systemctl reload nginx
```

Generate the certificate with Certbot:

```plaintext
sudo certbot --nginx
```

## Check Server Logs

### Step 1: Log in to the server

```plaintext
ssh -i <your key name> ubuntu@<Public IP address>
```

### Step 2: Check the logs

```plaintext
sudo docker ps

sudo docker logs <container-id-prefix>
```

## Shutting Down Milvus

1.  Open the EC2 console and locate your Milvus instance.
2.  Stop the instance from the **Instance state** dropdown. You can restart it later as needed.

![EC2 Instance state dropdown showing Stop instance, Reboot instance, and Terminate instance options](https://meetrix.io/blog-images/paas-dev-guides/milvus/milvus-12.png)

## Removing Milvus

Terminate the EC2 instance from the AWS Management Console under "Instances" by selecting it and choosing "Terminate instance". Back up any collections or data you need before terminating.

## Upgrades

When a new AMI version is available in AWS Marketplace, back up your Milvus data, remove the previous deployment, and relaunch with the new version.

## Troubleshoot

1.  If you face vCPU quota limits when launching, request an increase: [How to increase AWS quota](https://meetrix.io/blogs/increase-aws-vcpu-quota/).

![AWS CloudFormation error showing VcpuLimitExceeded when the current vCPU limit is 0](https://meetrix.io/blog-images/paas-dev-guides/milvus/milvus-13.png)

2.  If you face _insufficient capacity_ errors while launching, try another region or availability zone.

![AWS error showing InsufficientInstanceCapacity for the requested instance type](https://meetrix.io/blog-images/paas-dev-guides/milvus/milvus-14.png)

3.  If pymilvus cannot connect, confirm the security group allows inbound TCP traffic on port 19530 from your IP address.

Check whether the instance storage is full.

-   Log into the server and run:

```plaintext
df -h
```

![Terminal output of df -h showing root filesystem disk usage](https://meetrix.io/blog-images/paas-dev-guides/milvus/milvus-16.png)

-   If the root volume is between 90-100%, resize the EBS volume (per AWS docs), then reboot and restart the service.

## Conclusion

The Meetrix Milvus Deployment Guide helps you get a self-hosted vector database running on your own AWS account in minutes. Whether you're building a RAG pipeline, a semantic search feature, or a recommendation engine, this guide gives you a secure, scalable starting point.

## Technical Support

Reach out to Meetrix Support ([aws@meetrix.io](mailto:aws@meetrix.io)) for assistance with Milvus issues.

## Frequently Asked Questions

What is Milvus?

Milvus is a high-performance, open-source vector database purpose-built for storing, indexing, and searching massive-scale embedding vectors. It powers AI applications such as retrieval-augmented generation (RAG), semantic search, recommendation systems, and image or video similarity search.

What are the prerequisites for installing Milvus on AWS?

You need basic knowledge of AWS services (EC2, security groups), an active AWS account with appropriate permissions, and a sufficient vCPU limit to launch the required instance type.

Which instance type is recommended?

t3a.large is the vendor-recommended baseline for running the Milvus AMI on AWS.

How do I connect to Milvus after launching it?

Use the pymilvus SDK to connect to the instance's public IP on port 19530 with the default root credentials, or point your own client at that endpoint.

What is the default username and password?

The Milvus AMI ships with the default admin user root and password Milvus. Change this password immediately after your first login for production use.

How do I handle upgrades?

When a new AMI version is available in the AWS Marketplace, back up your Milvus data, remove the previous deployment, and relaunch with the new version.

How do I get technical support?

Reach out to Meetrix Support at [aws@meetrix.io](mailto:aws@meetrix.io) for assistance with Milvus issues.

## Ready to Deploy Your Own Milvus Instance?

Get started in minutes with our pre-configured AMI and take full control of your vector search and RAG infrastructure.

[Deploy Milvus from AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-74f7pvxzezeno)

Meetrix Store

Milvus

Vector search for RAG, no per-query fees

[Deploy it](https://meetrix.io/store/milvus/)

Meetrix Store New

Deploy what this guide covers, pre-configured.

-    [Milvus Vector search for RAG, no per-query fees](https://meetrix.io/store/milvus/)
-    [Flowise Build chatbots and RAG pipelines visually](https://meetrix.io/store/flowise/)
-    [OpenWebUI A private ChatGPT-style assistant](https://meetrix.io/store/openwebui/)
-    [Jitsi Meet Self-hosted video calls for 50 to 500 users](https://meetrix.io/store/jitsi-meet/)
-    [RustDesk Remote desktop AMI, a TeamViewer alternative](https://meetrix.io/store/rustdesk/)
-    [Coturn TURN/STUN for WebRTC, no per-minute relay fees](https://meetrix.io/store/coturn/)

[Browse all products](https://meetrix.io/store/)
