AWS PrivateLink
FlowMQ's AWS PrivateLink integration lets you expose your managed FlowMQ instance to your AWS VPC as if it were running inside your own network. Traffic between your VPC and FlowMQ travels over the AWS private backbone instead of the public internet, keeping your messaging data off untrusted networks while still using FlowMQ Cloud's fully managed service.
This page explains how the feature works and walks through the full setup: creating a PrivateLink service in the FlowMQ Cloud dashboard, creating a VPC endpoint in AWS, launching an EC2 instance in the same VPC, and connecting a client to FlowMQ through the private endpoint.
What is AWS PrivateLink?
AWS PrivateLink is an AWS networking feature that exposes a service hosted in one VPC to customers in other VPCs through private IP addresses and Elastic Network Interfaces (ENIs). For FlowMQ Cloud, it means:
- Your applications connect to FlowMQ using private IP addresses inside your VPC.
- Traffic never leaves the AWS network or traverses the public internet.
- You control access through standard AWS IAM and security-group policies.
- You keep the operational benefits of a managed FlowMQ instance while meeting strict network-isolation requirements.
How It Works
A high-level view of the traffic flow:
- FlowMQ Cloud provisions a PrivateLink service endpoint for your instance.
- You create a VPC endpoint in your AWS VPC that points to the FlowMQ service name.
- AWS creates Elastic Network Interfaces inside your VPC subnets.
- Your EC2 instance, or any workload in the same VPC, connects to those private IPs.
- FlowMQ routes the traffic to your dedicated instance exactly like a public connection, but over the AWS private network.
Supported Protocols
The PrivateLink wizard currently lets you enable the following protocols. You can select one or both:
| Protocol | Port | Notes |
|---|---|---|
| Kafka | 9094 (SASL_PLAINTEXT) | Works with existing Kafka clients using SASL/PLAIN. |
| MQTT | 1883 (NONE_TLS) | Standard MQTT without TLS. Use the VPC endpoint DNS name as the broker host. |
Authentication and authorization work exactly as they do over the public endpoint; PrivateLink changes only the network path.
Prerequisites
Before you start, make sure you have:
- A FlowMQ Cloud project on a Pro / Enterprise plan (PrivateLink is not available on the Free plan).
- An AWS account with permission to create VPC endpoints, security groups, and EC2 instances.
- A VPC with at least one private subnet in the AWS region where your FlowMQ instance is deployed.
- A way to create or access an EC2 instance inside that VPC, such as a bastion host or direct SSH/RDP access.
Create a PrivateLink Service in FlowMQ Cloud
FlowMQ Cloud walks you through a four-step wizard to set up PrivateLink.
Before You Begin
PrivateLink is available for Pro / Enterprise projects only. Your project must be fully provisioned and available before you can create a PrivateLink.
Step 1: Configure private access
Authorize your AWS account to create a PrivateLink endpoint in the same region as the FlowMQ project.
- Open your project in the FlowMQ Cloud dashboard.
- Go to Networking.
- Click Create PrivateLink.
- Review Cloud provider and Project region. These are read-only and show the AWS region where your project runs.
- Enter your AWS account ID as a 12-digit number, for example
123456789012. - In Services, select at least one protocol to expose over PrivateLink:
- Kafka — TCP
9094 - MQTT — TCP
1883
- Kafka — TCP
- Click Continue.
Wait on the page while FlowMQ Cloud prepares the service name. The wizard advances to Step 2 automatically.
Step 2: Create your VPC endpoint
Use the information shown in this step to create an Interface VPC Endpoint in your AWS account.
Copy the AWS service name.
Review the Network access table. It lists the inbound ports you must allow in the VPC endpoint security group:
Protocol Port Source Kafka TCP 9094Your clients, or the security group attached to them MQTT TCP 1883Your clients, or the security group attached to them Create the Interface VPC Endpoint in your AWS Console. See Create a VPC Endpoint in AWS for the full console walkthrough.
After AWS creates the endpoint, copy its Endpoint ID (for example, vpce-0d19b610f8b7a22c4).
- Click Continue to move to Step 3.
Step 3: Confirm your endpoint
- Paste the VPC endpoint ID from AWS into AWS VPC endpoint ID.
- Click Continue.
The wizard advances to Step 4.
Step 4: Activating private access
FlowMQ enables the private endpoints. This step is automatic.
- Wait until the Task status shows Succeeded. This can take a few minutes.
- After the task succeeds, the dashboard shows the Private endpoints and Connection details cards.
If the task fails, the status message shows the error. Click Reset to start over.
After PrivateLink is active, create EC2 instances or other workloads in your VPC and connect them through the private endpoints. See Create an EC2 Instance in the Same VPC.
Create a VPC Endpoint in AWS
Next, create an interface VPC endpoint in your AWS VPC that connects to the FlowMQ PrivateLink service.
Sign in to the AWS Management Console and open the VPC service.
In the left navigation pane, choose Endpoints and then choose Create endpoint.
For Name tag, enter a descriptive name such as
flowmq-privatelink.For Type, choose Endpoint services that use NLBs and GWLBs.
Paste the Service name you copied from FlowMQ Cloud (for example,
com.amazonaws.vpce.us-east-1.vpce-svc-0123456789abcdef0).Choose Verify service to confirm that AWS can resolve the service name.
For VPC, select the VPC where your applications run.
For Subnets, select the private subnets where you want AWS to place endpoint network interfaces. Select at least two subnets across different availability zones for high availability.
For Security group, choose or create a security group that allows inbound traffic from your EC2 instances on the ports your protocols use:
Protocol Inbound port Source Kafka 9094Your EC2 security group or VPC CIDR MQTT 1883Your EC2 security group or VPC CIDR For Policy, choose Full access unless your organization requires a custom endpoint policy.
Choose Create endpoint.
Wait for the endpoint status to become Available. This can take a few minutes.
On the endpoint details page, note the DNS names. You will use the regional DNS name in your client configuration.
Create an EC2 Instance in the Same VPC
After the VPC endpoint is available, launch an EC2 instance inside the same VPC and configure it to connect to FlowMQ through the endpoint.
- Open the EC2 service in the AWS Management Console.
- Choose Instances > Launch instances.
- Enter a name such as
flowmq-privatelink-client. - Select an Amazon Machine Image (AMI). For testing, Amazon Linux 2023 is a good default.
- Choose an instance type. A
t3.microis sufficient for verification. - For Key pair, select or create a key pair for SSH access.
- For Network settings:
- VPC: select the same VPC used for the VPC endpoint.
- Subnet: select one of the subnets where the VPC endpoint has an ENI.
- Auto-assign public IP: choose Disable if the subnet is private. You will need a bastion host or SSM Session Manager for access.
- For Security group, create or select a security group that allows:
- Outbound traffic to the VPC endpoint security group on the ports you enabled (Kafka
9094, MQTT1883). - Inbound SSH (port
22) or AWS Systems Manager access for administration.
- Outbound traffic to the VPC endpoint security group on the ports you enabled (Kafka
- Launch the instance and wait for it to reach the Running state.
- Connect to the instance using SSH, Session Manager, or your organization's remote-access method.
Install a Client and Test Connectivity
Once connected to the EC2 instance, install a client for your protocol and verify that you can reach FlowMQ through the VPC endpoint.
Verify port connectivity
From the EC2 instance, test that the MQTT and Kafka ports on the VPC endpoint are reachable.
For MQTT:
nc -vz <your-vpc-endpoint-dns-name> 1883For Kafka:
nc -vz <your-vpc-endpoint-dns-name> 9094A successful response shows the connection succeeded and the port is open. If the command times out, check the VPC endpoint status, security-group rules, and that the EC2 instance is in a subnet associated with the endpoint.
MQTT quick test
Install MQTTX CLI and publish a test message:
mqttx pub \
-h <your-vpc-endpoint-dns-name> \
-p 1883 \
-l mqtts \
-t "test/hello" \
--username your-username \
--password your-password \
--message "Hello from PrivateLink"Kafka quick test
Install a Kafka client and list topics:
# Example using the open-source Kafka console tools
export BOOTSTRAP_SERVERS=<your-vpc-endpoint-dns-name>:9094
kafka-topics.sh --bootstrap-server $BOOTSTRAP_SERVERS --list \
--command-config client.propertiesA minimal client.properties:
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="your-username" \
password="your-password";Production Client Configuration
Point your existing clients at the VPC endpoint DNS name and use the private port. No other changes are needed.
| Setting | Value |
|---|---|
| Host / Bootstrap servers | VPC endpoint regional DNS name |
| Port | 1883 (MQTT), 9094 (Kafka) |
| TLS / SSL | Disabled |
| Authentication | Same credentials used for the public endpoint |
Use Cases and Benefits
PrivateLink is useful when you:
- Must keep messaging traffic off the public internet for compliance.
- Connect workloads in a separate AWS account to FlowMQ Cloud.
- Want to enforce access with AWS security groups instead of IP allowlists.
- Reduce data-transfer costs by keeping traffic on the AWS backbone.
It gives you private connectivity using standard AWS VPC constructs, without VPNs or code changes.
Troubleshooting
If a client cannot connect through PrivateLink, check the following:
- Endpoint status: In the AWS console, confirm the VPC endpoint status is Available.
- Task status: In the FlowMQ Cloud dashboard, confirm the PrivateLink task shows Succeeded.
- Security groups: Verify the EC2 security group allows outbound traffic to the endpoint security group on the correct port, and the endpoint security group allows inbound from the EC2 source.
- Subnet placement: Confirm the EC2 instance is in a subnet associated with the VPC endpoint.
- Port connectivity: From the EC2 instance, run
nc -vz <endpoint-dns> 1883(MQTT) ornc -vz <endpoint-dns> 9094(Kafka). - Region match: The FlowMQ PrivateLink service and the AWS VPC endpoint must be in the same AWS region.
Next Steps
- Review Authentication to configure usernames and passwords for clients connecting over PrivateLink.
- Review Authorization to control which clients can publish or subscribe after they connect.
- See Streaming or Cross-Protocol Routing for examples of messaging patterns you can run over the private endpoint.