Ignition alarm pipeline publish to AWS SNS topic for sending SMS messages

I'm looking at an application where a customer wishes to send SMS messages to users on Ignition events using AWS SNS (rather than Twilio) as they have a lot of their services on AWS already.

At some point they would also like to be able the Ignition application users/admins to manage the AWS SNS topics & subscribers, rather than it being an IT function managed directly in AWS, for example to link create an alarm pipeline to and automatically create or link to an SNS topic.

One option is to use the boto3 Python SDK to trigger a publish to the SNS topic, although Python 2.7 support appears to have been removed from the later boto3 SDK.

A second option is to implement the REST API calls directly in Ignition Python/WebDev, but this approach would require implementing the message signing mechanism that AWS uses for HTTP POST requests.

A third option would be to use the AWS API Gateway to create a simpler REST interface for Ignition to use.

Does anyone have any opinion / insight on the best way to accomplish the original aims?

A fourth option would be to use the AWS Java SDK. It's going to be fine, albeit verbose, to use from Jython and avoids the maintenance headache. The best way to do so would be a third party module that loads the appropriate jar(s) and exposes them to scripting. An acceptable alternate would be dropping the SDK jar(s) into lib/core/gateway in the gateway's install directory.

A fifth option, if you're not pressed for time, would be to wait for use to implement this first party. It's on the list, but no timeline.

4 Likes

I hadn't considered the use of the Java SDK (I didn't know using 3rd party Java modules in Ignition was a thing!) - its definitely something I will investigate further.

Its also interesting to note future 1st party support for this functionality - I will pass that on to my customer!