Overview
This is a repackaged software product wherein additional charges apply for hardening, security configuration, and support.
WHAT IS MILVUS
Milvus is an open-source vector database purpose-built for similarity search over embeddings. It stores high-dimensional vectors alongside scalar metadata and returns nearest-neighbour results across very large collections in milliseconds, which makes it the storage layer for retrieval-augmented generation, semantic search, recommendation, deduplication and image or audio similarity. Written in Go and C++ with a SIMD-accelerated search core, it supports multiple index types and distance metrics (COSINE, L2, inner product), hybrid search combining vector similarity with scalar filtering, sparse and dense vectors, and full-text search. Clients connect over gRPC or a RESTful API, with official SDKs for Python, Java, Go, Node.js and C#. This AMI runs the standalone configuration - the Milvus engine with etcd for metadata and MinIO for object storage - persisting vectors, indexes and the write-ahead log to the instance's EBS volume. Milvus is a graduated project of the LF AI and Data Foundation. Apache-2.0 license, no vendor lock-in.
WHAT THIS AMI ADDS
Security hardening:
- Authentication is enabled before the database first starts, and a unique 24-character database password is generated on your own instance at first boot - the documented upstream default password never exists on your instance
- The object-storage credential and the management-console password are generated at first boot as well, and written to a root-only credentials file. Nothing is baked into the AMI
- The management console is published only through an nginx TLS reverse proxy protected by its own credentials, and only the console path is proxied - the rest of the management port is not reachable from outside
- The metrics and management port is bound to 127.0.0.1 only
- MinIO object storage is bound to 127.0.0.1 only, and the etcd metadata store publishes no host port at all
- Container confinement is left at the platform default rather than relaxed
- Container log rotation capped so a chatty or restarting container cannot fill the root volume
- UFW firewall pre-configured - only 22, 80, 443 and the database API on 19530 reachable; object storage and metadata ports blocked externally
- fail2ban, auditd and AppArmor pre-configured
- HTTPS enabled by default with a self-signed certificate; Certbot and the nginx plugin are pre-installed so a trusted certificate is one command away
- CVE scan - every image is scanned for vulnerabilities before release
OS hardening (CIS Level 1):
- CIS Ubuntu 24.04 LTS Level 1 benchmark applied via ansible-lockdown
- auditd, SSH hardening, Kernel hardening, IMDSv2 enforced
Compliance artifacts:
- SBOM - CycloneDX 1.6 at /etc/lynxroute/sbom.json
- CIS Conformance Report at /etc/lynxroute/cis-report.html
- CIS Tailored Profile at /usr/share/doc/lynxroute/CIS_TAILORED_PROFILE.md
Milvus holds its indexes in RAM and requires a CPU with AVX2, so the recommended instance type is m6i.xlarge (4 vCPU, 16 GB) and no burstable tier is offered.
Highlights
- Milvus security baked in: authentication enabled before the database first starts with a unique password generated at first boot on your instance, the management console reachable only over TLS behind separate credentials, the metrics port and MinIO object storage bound to loopback only, etcd with no host port at all, UFW firewall pre-configured.
- CIS Level 1 hardened Ubuntu 24.04 LTS: auditd, fail2ban, AppArmor, SSH key-only, IMDSv2 enforced. CVE-scanned before every release. SBOM (CycloneDX) and CIS Conformance Report included.
- The storage layer for RAG and semantic search: hybrid search combining vector similarity with scalar filtering, sparse and dense vectors, multiple index types, gRPC and REST APIs with official Python, Java, Go, Node.js and C# SDKs. Apache-2.0 license - fully auditable, no vendor lock-in.
Details
Introducing multi-product solutions
You can now purchase comprehensive solutions tailored to use cases and industries.
Features and programs
Financing for AWS Marketplace purchases
Pricing
Free trial
Dimension | Cost/hour |
|---|---|
m6i.xlarge Recommended | $0.05 |
m6i.2xlarge | $0.05 |
m6i.large | $0.03 |
Vendor refund policy
We do not offer refunds for this product. AWS infrastructure charges (EC2, EBS, data transfer) are billed separately by AWS and are not refundable by us.
How can we make this page better?
Legal
Vendor terms and conditions
Content disclaimer
Delivery details
64-bit (x86) Amazon Machine Image (AMI)
Amazon Machine Image (AMI)
An AMI is a virtual image that provides the information required to launch an instance. Amazon EC2 (Elastic Compute Cloud) instances are virtual servers on which you can run your applications and workloads, offering varying combinations of CPU, memory, storage, and networking resources. You can launch as many instances from as many different AMIs as you need.
Version release notes
Milvus 3.0.0 - Initial release (August 2026)
- Milvus 3.0.0 on Ubuntu 24.04 LTS, standalone configuration (Milvus engine, etcd, MinIO)
- CIS Level 1 hardening applied (ansible-lockdown/UBUNTU24-CIS)
- CVE-scanned before every release
- Authentication enabled before the database first starts; the database password, object-storage credential and management-console password are all generated at first boot - nothing baked into the AMI
- Management console published over TLS behind its own credentials; only the console path is proxied
- Metrics/management port and MinIO object storage bound to 127.0.0.1 only; etcd publishes no host port
- HTTPS enabled by default with a self-signed certificate; Certbot and the nginx plugin pre-installed
- Container log rotation capped so runtime logging cannot fill the root volume
- UFW firewall pre-configured (ports 22, 80, 443, 19530 only)
- fail2ban, auditd, AppArmor pre-configured
- SBOM (CycloneDX 1.6) at /etc/lynxroute/sbom.json
- CIS Conformance Report (OpenSCAP) at /etc/lynxroute/cis-report.html
- IMDSv2 enforced
Additional details
Usage instructions
- Launch instance (m6i.xlarge recommended - Milvus holds its indexes in RAM and requires a CPU with AVX2)
- Open Security Group - allow TCP 19530 and TCP 443 from your IP, and TCP 22 for SSH
- SSH: ssh -i key.pem ubuntu@<PUBLIC_IP>
- Read credentials: sudo cat /root/milvus-credentials.txt
- Connect a client to <PUBLIC_IP>:19530 using the token root:<password from the credentials file>
- Open https://<PUBLIC_IP>/ in your browser - accept the self-signed certificate warning, then sign in to the management console with the console user and password from the credentials file
The instance takes 1-3 minutes to finish initialising on first launch; a loading page is served until Milvus is ready.
Create a collection, insert vectors and run a similarity search over the REST API, substituting your public IP and password:
curl -X POST "http://<PUBLIC_IP>:19530/v2/vectordb/collections/create"
-H "Authorization: Bearer root:<password>"
-H "content-type: application/json"
-d '{"collectionName":"demo","dimension":8,"metricType":"COSINE"}'
curl -X POST "http://<PUBLIC_IP>:19530/v2/vectordb/entities/insert"
-H "Authorization: Bearer root:<password>"
-H "content-type: application/json"
-d '{"collectionName":"demo","data":[{"id":1,"vector":[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8]}]}'
curl -X POST "http://<PUBLIC_IP>:19530/v2/vectordb/entities/search"
-H "Authorization: Bearer root:<password>"
-H "content-type: application/json"
-d '{"collectionName":"demo","annsField":"vector","limit":1,"data":[[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8]],"outputFields":["id"]}'
Python clients install the official SDK with: pip install "pymilvus>=3.0.1"
In Milvus 3.x the default database is named "default" - examples written for Milvus 2.x that pass "_default" will fail.
After a restart your data is retained, but Milvus reloads each collection into memory before it can answer searches; a search issued in the first few seconds may return an empty result while loading completes.
Change the database password after first sign-in:
curl -X POST "http://<PUBLIC_IP>:19530/v2/vectordb/users/update_password"
-H "Authorization: Bearer root:<password>" -H "content-type: application/json"
-d '{"userName":"root","password":"<password>","newPassword":"<new password>"}'
All generated credentials are saved to /root/milvus-credentials.txt on first launch. Restrict inbound 19530 and 443 to your own address range before putting the instance into service. Replace the self-signed TLS certificate with a CA-signed one for production use: sudo certbot --nginx -d yourdomain.com
Resources
Vendor resources
Support
Vendor support
Visit us online: https://lynxroute.com
For Milvus documentation:
AWS infrastructure support
AWS Support is a one-on-one, fast-response support channel that is staffed 24x7x365 with experienced and technical support engineers. The service helps customers of all sizes and technical abilities to successfully utilize the products and features provided by Amazon Web Services.