Skip to content
M2M.globalGet early access

AWS IoT Core over private delivery: MQTT without the internet

Updated

Cellular devices reach AWS IoT Core privately when their SIM traffic lands in your VPC over private delivery and the VPC has an interface VPC endpoint for the AWS IoT Core data plane. MQTT then flows between private IP addresses only: the device’s address on the private APN and the endpoint’s network interfaces in your subnets. AWS documents the endpoint, its DNS setup and its limits in Using AWS IoT Core with interface VPC endpoints.

Status: Coming soon (checked 26 October 2026) · Notify me when available

Architecture

Device (MQTT, X.509) ── private APN ── AWS Direct Connect ── Transit Gateway or VGW
                                                                   │
                                                                   ▼
                                         VPC: interface endpoint com.amazonaws.<region>.iot.data
                                              Route 53 private hosted zone (your IoT endpoint name)
                                              Route 53 Resolver inbound endpoint (device DNS)

Steps

  1. Deliver SIM traffic into the VPC that will hold the endpoint: see private delivery into AWS. Pick a SIM address range that does not overlap your VPC ranges.
  2. Create the interface endpoint for the service com.amazonaws.<region>.iot.data in the subnets of your choice. AWS suggests checking first that the service exists in your Availability Zones with aws ec2 describe-vpc-endpoint-services --service-name com.amazonaws.<region>.iot.data.
  3. Create the DNS records yourself. AWS disables automatic private DNS for this endpoint. In a Route 53 private hosted zone attached to the VPC, create a record for your account’s IoT data endpoint name pointing to the endpoint’s network interface addresses (weighted records with equal weights if there are several).
  4. Let devices resolve that zone. Devices are outside the VPC, so their DNS queries must reach Route 53: create a Route 53 Resolver inbound endpoint and give its addresses to the private APN as DNS servers, or forward your IoT endpoint name to it.
  5. Allow the traffic in the endpoint’s security group: TCP 8883 (or 443) from the SIM address range.
  6. Connect a device with its X.509 certificate to your usual IoT endpoint name. If the name resolves to a private address, the session is private.

Limits to know (from the AWS documentation)

TopicWhat AWS states
Devices per endpoint100,000 concurrent connections; use several endpoints beyond that
CertificatesVPC endpoints serve ATS certificates only, except for custom domains
Endpoint policiesNot supported on the IoT data endpoint
Public DNS namesZonal and regional public DNS records of the endpoint are not supported for the data plane
Custom domainsSupported for the data endpoint, with records in a private hosted zone

Ports

From AWS IoT Core protocols and ports: MQTT with an X.509 client certificate uses 8883, or 443 with the ALPN protocol name x-amzn-mqtt-ca; HTTPS publishing with a certificate uses 8443. Port 443 with ALPN exists for networks that block 8883; on a private APN you set the rules yourself, so 8883 is the simplest choice.

Why use it

The SIMs: IoT SIM cards. Other services: all integrations.

Frequently asked questions

Can AWS IoT Core be reached without the public internet?

Yes. AWS IoT Core supports interface VPC endpoints (AWS PrivateLink) for its data plane, so MQTT clients connect to private IP addresses inside your VPC. Cellular devices reach that VPC through private delivery over AWS Direct Connect.

How many devices can one AWS IoT Core VPC endpoint handle?

AWS documents a limit of 100,000 concurrent connected devices per interface VPC endpoint. Above that, create several endpoints and spread devices across them with weighted DNS records.

Why do devices need special DNS settings?

AWS disables automatic private DNS for the IoT Core data endpoint. You create the DNS records yourself in a Route 53 private hosted zone, and devices outside the VPC need a Route 53 Resolver inbound endpoint to query that zone.

Which port do devices use?

MQTT with an X.509 client certificate uses port 8883, or port 443 with the ALPN protocol name x-amzn-mqtt-ca. Both work over private delivery.