SQSキューと同様にLambda関数に通知するSNSトピックに公開しようとしています。 Lambda関数は呼び出されますが、CloudWatchログには「イベント」オブジェクトがNoneであるという状態が記録されます。 boto3のドキュメントでは、kwarg MessageStructure = 'json'を使用するように規定されていますが、ClientErrorがスローされます。
十分な情報を提供していただければ幸いです。
サンプルコード:
import json
import boto3
message = {"foo": "bar"}
client = boto3.client('sns')
response = client.publish(
TargetArn=arn,
Message=json.dumps(message)
)
default
キーをメッセージペイロードに追加し、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'
)
SMSとメール購読者に異なるメッセージを送りたい場合に備えて:
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'
)