- Newest
- Most votes
- Most comments
The AWS IoT Device SDK for Embedded C (https://github.com/aws/aws-iot-device-sdk-embedded-C) is the primary and officially recommended C SDK for AWS IoT, especially for resource-constrained devices. This SDK is a collection of C source files that can be used in embedded applications to securely connect IoT devices to AWS IoT Core. It includes libraries for MQTT, JSON parsing, AWS IoT Device Shadow, AWS IoT Jobs, AWS IoT Fleet Provisioning, and AWS IoT Device Defender.
This SDK is designed to be highly portable and can be used on any operating system and processor type, including microcontrollers (MCUs) and microprocessors (MPUs). It's particularly suited for devices with limited resources that require an optimized C language runtime.
The other repository you mentioned (https://github.com/awslabs/aws-c-iot) is part of the AWS Common Runtime (CRT) libraries. While it's also related to AWS IoT, it serves a different purpose and is not the primary SDK recommended for most embedded IoT projects.
Regarding the Yocto recipes, the absence of a recipe for the Embedded C SDK and the presence of one for aws-c-iot doesn't change the official recommendation. The Embedded C SDK is designed to be included directly in your project as source files, which might explain why there isn't a specific Yocto recipe for it.
If you're working on an embedded project, especially one with resource constraints, the AWS IoT Device SDK for Embedded C (aws-iot-device-sdk-embedded-C) is likely the most relevant choice. However, if you're working on a more complex project that uses the AWS Common Runtime, the aws-c-iot library might be more appropriate.
Always consider your specific project requirements, including device capabilities, when choosing which SDK to use.
Sources
AWS IoT Device SDKs, Mobile SDKs, and AWS IoT Device Client - AWS IoT Core
AWS IoT Device SDK for Embedded C - FreeRTOS
Connect devices to AWS IoT - AWS IoT Core
Relevant content
asked 4 years ago
asked 2 years ago

Please also see this article: https://repost.aws/articles/ARe7tjQ4AESw2yD2myzygwXQ/choosing-between-freertos-greengrass-expresslink-device-client-and-the-iot-device-sdks. The embedded C SDK would normally be used on microcontrollers, that are bare metal or running a micro kernel. aws-c-iot and aws-c-iot are part of the common runtime (CRT). The CRT is a component of all the (non-embedded-C) IoT Device SDKs. These SDKs have a much bigger footprint than the embedded C SDK. If your device is an embedded Linux device (since you're interested in Yocto), I recommend you give strong consideration to Greengrass, and perhaps nucleus lite in particular. Greengrass is likely the best option if you'll build and manage a multi-process application.