Which solution will meet these requirements with the LEAST operational overhead?
Set up AWS IoT Core. For each device, create a corresponding Amazon MQ queue and provision a certificate. Connect each device to Amazon MQ.
Create a Network Load Balancer (NLB) and configure it with an AWS Lambda authorizer. Run an MQTT broker on Amazon EC2 instances in an Auto Scaling group. Set the Auto Scaling group as the target for the NLConnect each device to the NLB.
Set up AWS IoT Core. For each device, create a corresponding AWS IoT thing and provision a certificate. Connect each device to AWS IoT Core.
Set up an Amazon API Gateway HTTP API and a Network Load Balancer (NLB). Create integration between API Gateway and the NLB. Configure a mutual TLS certificate authorizer on the HTTP API. Run an MQTT broker on an Amazon EC2 instance that the NLB targets. Connect each device to the NLB.
Explanations:
AWS IoT Core is designed specifically for IoT use cases with MQTT, while Amazon MQ is more suited for messaging services. Setting up individual queues for each device would increase operational overhead, making this solution inefficient.
Although a Network Load Balancer can handle MQTT connections, running a broker on EC2 requires more management and scaling considerations. The Lambda authorizer adds additional complexity and operational overhead.
AWS IoT Core is specifically built for IoT applications and supports MQTT natively. It allows for easy management of devices, including the use of unique X.509 certificates for authentication, resulting in the least operational overhead.
This solution involves setting up an API Gateway, a Network Load Balancer, and an EC2 instance for MQTT, which introduces unnecessary complexity. Mutual TLS adds operational overhead, making this approach less efficient than using AWS IoT Core directly.