I am trying to publish to an SNS topic which will then notify a Lambda function, as well as an SQS queue. My Lambda function does get called, but the CloudWatch logs state that
you need to add a default
key to your message payload, and specify MessageStructure
:
import json
import boto3
message = {"foo": "bar"}
client = boto3.client('sns')
response = client.publish(
TargetArn=arn,
Message=json.dumps({'default': json.dumps(message)}),
MessageStructure='json'
)
Just in case you want to have different messages for sms and email subscribers:
import json
import boto3
message = {"foo": "bar"}
client = boto3.client('sns')
response = client.publish(
TargetArn=arn,
Message=json.dumps({'default': json.dumps(message),
'sms': 'here a short version of the message',
'email': 'here a longer version of the message'}),
Subject='a short subject for your message',
MessageStructure='json'
)