amazon-web-servicesaws-iotaws-iot-analytics

Is it possible to add multiple channel inputs to a pipeline in AWS IoT Analytics?


I have multiple IoT devices that send the same kind of data to their shadows. I'd like to analyze these data using IoT Analytics. I've created a channel for each of these devices and would like to process data from all of them using activities. UI suggests that a pipeline can have multiple channels attached to it, but I cannot figure out how. I haven't found any information about this in API documentation as well.

Is it possible or do I have to add a new pipeline for each of these channels? Isn't there an easier way to organize these things so all of them send data to a single channel (since it's the same kind of data anyway)?


Solution

  • UI suggests that a pipeline can have multiple channels attached to it, but I cannot figure out how. I haven't found any information about this in API documentation as well.

    Each Pipeline requires exactly 1 associated Channel. At the API level, this is documented in the form of a requirement on the pipeline activities property of the Pipeline itself, eg:

    The list can be 2-25 PipelineActivity objects and must contain both a channel and a datastore activity

    from: IoT-Analytics CreatePipeline API

    Is it possible or do I have to add a new pipeline for each of these channels?

    If you have multiple Channels (one per device) and want to process data from each, you currently need to define a separate Pipeline for each.

    Isn't there an easier way to organize these things so all of them send data to a single channel (since it's the same kind of data anyway)?

    If you are trying to merge the data from multiple devices at some point in the processing, you can either:

    a) have multiple devices send data to the same Channel, then have a single Pipeline to process the data from that Channel as needed

    b) have the devices send data to separate Channels, then have separate Pipelines (one per Channel) configured to process the data as needed, and send the processed data to a single Data Store

    The latter option has more resources to define and maintain, but allows you to keep the data from each devices separate, if you need to for any reason.

    Hope this helps, but let me know if I misunderstood your scenario or question.