No support for non compliant MQTT v3.1.1 server/services
The key issue with Amazon AWS IoT core, Microsoft Azure IoT hub and Google Cloud IoT Core is that
they are NOT 100% MQTT v3.1.1 compliant.
Usage of Sparkplug for MQTT demands a 100% MQTT v3.1.1 compliant server/service.
Key concepts of the Sparkplug standard like retained Server STATE messages, will not work in such an environment. Because of the lacking compliancy we cannot support any NON compliant MQTT v3.1.1 compatible MQTT servers or cloud services.
AWS, Microsoft and Google lack support of even basic MQTT features such as QoS 2, Retained Messages and guaranteed message ordering. These basic MQTT features are often used to implement business critical systems. In fact, in order to be MQTT compliant these features are mandatory (not optional). This means neither AWS nor Microsoft Azure IoT Hub or Google Cloud are fully compliant to the full MQTT v3.1.1 specification.
If you are using AWS, Azure Or Google Cloud infrastructure, a possible way to circumvent their lacking support is to host a self built VM in AWS, Azure or Google Cloud which leverages the service ( i.e. hosting a fully compliant MQTT broker). A sidestep could be to go for a Mosquitto cloud server or HiveMQ Cloud which is now free for 100 clients + 10GB/Month + NO SLA.
MQTT is a lightweight and widely adopted messaging protocol that is designed for constrained devices. AWS IoT support for MQTT is based on the MQTT v3.1.1 specification, with some differences. For information about how AWS IoT differs from the MQTT v3.1.1 specification, see AWS IoT differences from MQTT version 3.1.1 specification.
IoT Hub is not a full-featured MQTT broker and does not support all the behaviors specified in the MQTT v3.1.1 standard. This article describes how devices can use supported MQTT behaviors to communicate with IoT Hub.