J'essaie de publier sur un sujet SNS qui notifiera alors une fonction Lambda, ainsi qu'une file d'attente SQS. Ma fonction Lambda est appelée, mais les journaux CloudWatch indiquent que mon objet "événement" est Aucun. Les documents boto3 indiquent d'utiliser le kwarg MessageStructure = 'json' mais cela lève une ClientError.
J'espère avoir fourni suffisamment d'informations.
Exemple de code:
import json
import boto3
message = {"foo": "bar"}
client = boto3.client('sns')
response = client.publish(
TargetArn=arn,
Message=json.dumps(message)
)
vous devez ajouter une clé default
à la charge utile de votre message et spécifier 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'
)
Juste au cas où vous voudriez avoir des messages différents pour les abonnés SMS et e-mail:
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'
)