Overview
This is a repackaged software product wherein additional charges apply for hardening, security configuration, and support.
WHAT IS NATS
NATS(R) is a cloud-native messaging system for connecting services, devices and edge systems, hosted by the Cloud Native Computing Foundation. It is a single statically linked Go binary with no database, no broker cluster and no separate runtime to install alongside it. The core server provides publish/subscribe over hierarchical subjects, request/reply with automatic load balancing across queue groups, and queue-group work distribution at very low latency. JetStream, built into the same binary, adds persistence: streams that retain messages on disk, durable pull and push consumers with explicit acknowledgement and replay, plus a key-value store and an object store layered on top. Client libraries exist for more than forty languages, so services written in Go, Java, Python, C#, Rust, Node.js and others share one bus. Messages, streams and consumer positions persist to the instance filesystem - there is no external database to run. Apache-2.0 license, no vendor lock-in.
WHAT THIS AMI ADDS
Security hardening:
- TLS required on the client port - 4222 accepts TLS only; there is no cleartext path in or out and no second unencrypted port
- Per-instance account passwords generated on first launch and stored as bcrypt hashes, so no two instances of this AMI share a credential
- Anonymous connections refused - there is no unauthenticated-user mapping, so a client without valid credentials is rejected at connect
- Two isolated accounts - a messaging account that owns JetStream and a separate system account for server administration; neither can reach the other's namespace
- Monitoring endpoint bound to 127.0.0.1 only - these endpoints are unauthenticated by design, so they are reachable over an SSH tunnel rather than published
- JetStream persisted to the instance volume with storage limits sized from the instance's own disk and memory, so a runaway stream cannot fill the root volume
- Per-instance TLS certificate generated on first launch, carrying the instance addresses, and reissued automatically if the public address changes
- UFW firewall pre-configured - only TCP 4222 and SSH on 22 are open; cluster, gateway and leafnode ports are not configured
- fail2ban and AppArmor pre-configured
- 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
This image is built and maintained by Lynxroute and is not affiliated with, endorsed by or sponsored by the Linux Foundation, the Cloud Native Computing Foundation or Synadia.
Highlights
- NATS security baked in: TLS required on the client port with no cleartext path, per-instance account passwords generated at first launch and stored as bcrypt hashes, anonymous connections refused, and the unauthenticated monitoring endpoint bound to loopback only.
- 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.
- Messaging plus persistence in one binary: pub/sub, request/reply and queue groups, with JetStream streams, durable consumers, key-value and object stores persisted to disk. 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 |
|---|---|
t3.medium Recommended | $0.05 |
t3.large | $0.05 |
t3.small | $0.03 |
m6i.xlarge | $0.05 |
m6i.large | $0.05 |
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
NATS 2.14.4 - Initial release (August 2026)
- NATS 2.14.4 on Ubuntu 24.04 LTS
- CIS Level 1 hardening applied (ansible-lockdown/UBUNTU24-CIS)
- CVE-scanned before every release
- TLS required on the client port - no cleartext path, no second unencrypted port
- Per-instance account passwords generated at first launch, stored as bcrypt hashes
- Anonymous connections refused - no unauthenticated-user mapping
- Two isolated accounts: a messaging account owning JetStream, and a separate system account
- Monitoring endpoint bound to 127.0.0.1 only
- JetStream persisted to the instance volume, limits sized from the instance disk and memory
- Per-instance TLS certificate, reissued automatically if the public address changes
- UFW firewall pre-configured (ports 22 and 4222 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 (t3.medium recommended)
- Open Security Group - allow TCP 4222 from the networks that need to publish and subscribe
- SSH: ssh -i key.pem ubuntu@<PUBLIC_IP>
- Read credentials: sudo cat /root/nats-credentials.txt
- Copy the certificate at /etc/nats/certs/server-cert.pem to your client machine
- Connect a client to tls://<PUBLIC_IP>:4222 using the messaging account user and password, trusting that certificate
Verify from the instance itself:
nats --server tls://localhost:4222 --user <user> --password <password>
--tlsca /etc/nats/certs/server-cert.pem pub demo.hello 'hi'
Create a JetStream stream:
nats --server tls://localhost:4222 --user <user> --password <password>
--tlsca /etc/nats/certs/server-cert.pem
stream add ORDERS --subjects 'orders.>' --storage file --defaults
TLS is mandatory on port 4222 - a plain nats:// client is refused at the handshake, and there is no second cleartext port. Anonymous connections are refused. The TLS certificate is self-signed and generated on your instance at first launch. Point clients at it with --tlsca, or replace it with your own PKI. The monitoring endpoint is bound to 127.0.0.1 and is unauthenticated by design. Reach it over an SSH tunnel: ssh -L 8222:127.0.0.1:8222 ubuntu@<PUBLIC_IP> Credentials are saved to /root/nats-credentials.txt at first launch. Move them into your secret manager and delete the file before production use. JetStream data persists under /var/lib/nats/jetstream and survives a reboot. Back it up - it holds every persisted message and consumer position.
Resources
Vendor resources
Support
Vendor support
Visit us online: https://lynxroute.com
For NATS 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.
Similar products


