This parameters template demonstrates publishing a SNS message in structured JSON format with the Publish SNS Message action: If a parameter within the JSON formatted parameters template is a JSON structure in itself (e.g. the Lambda function payload), it needs to be escaped before adding it as a value - this has two implications: custom content needs to be escaped, which can be achieved by Composing action payloads with utility functions, specifically the $util.escapeJson() function variables with conflicting content (e.g. multi line variables like JIRA's The AWS Management Console features a JSON Message Generator that eases composition of the required JSON message structure, refer to section Create Different Messages for Each Protocol for within Publish to a topic for details.JSON escaping requirements
$issue.fields.description
or Bamboo's $notification.textEmailContent
or JSON structures retrieved via JSONPath) need to be escaped twice, via $util.escapeJson($util.escapeJson(...))
- we are exploring options on how to make this easier in a future releaseJSON Message Generator
Publish SNS Message parameters example (structured JSON format – escaped manually)
{
"TopicArn": "arn:aws:sns:ap-southeast-2:123456789012:sample-AutomationWithAWSQuickstartSNSTopic-15EO7TT8O93XT",
"Message": "{ \"default\": \"$event.simpleName with trace ID $event.traceId triggered at $event.timestamp\"}",
"MessageStructure": "json",
"Subject": "Automation with AWS: $event.simpleName triggered at $event.timestamp"
}
Publish SNS Message parameters example (structured JSON format – escaped with utility function)
{
"TopicArn": "arn:aws:sns:ap-southeast-2:123456789012:sample-AutomationWithAWSQuickstartSNSTopic-15EO7TT8O93XT",
"Message": "$util.escapeJson('{
"default": "$event.simpleName with trace ID $event.traceId triggered at $event.timestamp"
}')",
"MessageStructure": "json",
"Subject": "Automation with AWS: $event.simpleName triggered at $event.timestamp"
}
General
Content
Integrations