/iot-reference-architectures

The repo is a place to store sequence diagrams and reference architectures that we refer to in IoT presentations. It also contains code that generates some of the sequence and architecture diagrams programmatically so they can be kept up to date.

Primary LanguageJavaMIT No AttributionMIT-0

IoT Reference Architectures

The repo is a place to store architecture diagrams and the code for reference architectures that we refer to in IoT presentations.

Terminology

  • Partner - an entity that builds solutions on AWS that can be integrated into a customer's own AWS account
  • Customer - an entity with an AWS account that can utilize partner solutions

Reference architecture list

  • CloudWatch Events
    • Python - Sets up a CloudWatch Events rule that triggers a Python function when CreateThing is called. The Python function cross-account publishes the event information from a customer's account to a partner's account to give the partner visibility to new devices that a customer creates in their account.
  • Cross-account publish
    • C# - A C# application that can cross-account publish from a partner's account to a customer's account to give the partner the ability to easily share information with their customers. This C# application is for running on EC2, not on AWS Lambda, and includes the necessary role that must be attached to the EC2 instance.
    • Python - A Python Lambda function that can cross-account publish from a partner's account to a customer's account using the AWS IoT Rules Engine
  • MQTT over WebSockets
    • Java
      • Example with Jitpack - An example project that shows how to use the MQTT over WebSocketsJava library with Jitpack and includes tests to validate that the library is working as expected. This example demonstrates how a customer can use the library as a Gradle dependency without duplicating the code.
  • Results iterator
    • Java
      • Example with Jitpack - An example project that shows how to use the results iterator library with Jitpack and includes tests to validate that the library is working as expected. This example demonstrates how a customer can use the library as a Gradle dependency without duplicating the code.
  • DynamoDB API
    • Java
      • SQS to DynamoDB to IoT Core - An example project that shows how to take messages from SQS, move them DynamoDB, and then query the DynamoDB table with an IoT Core based API. This pattern is useful when multiple applications need access to messages from a device, the messages from a device come through a non-MQTT ingest mechanism and are stored in SQS, or when a device may send multiple messages that need to be processed in order.
  • Binary payloads
    • Java
      • CBOR Handler - An example project that shows how to convert between CBOR and JSON. This uses the rules engine base64 encoding support to work with binary payloads in AWS Lambda.
    • Python
      • Amazon Ion Handler - An example project that shows how to convert between Amazon Ion and JSON. This uses the rules engine base64 encoding support to work with binary payloads in AWS Lambda.

License Summary

This sample code is made available under a modified MIT license. See the LICENSE file.