2015-12-01 9 views
10

SNSトピックに公開しようとしていますが、Samba関数とSQSキューに通知します。私のラムダ関数は呼び出されますが、CloudWatchのログには、「イベント」オブジェクトが「なし」と記録されます。 boto3ドキュメントでは、kwarg MessageStructure = 'json'を使用すると書かれていますが、それはClientErrorをスローします。AWS:boto3(Python2)を介してLambda関数のSNSメッセージを公開

私は十分な情報を提供しました。

コード例:

import json 
import boto3 

message = {"foo": "bar"} 
client = boto3.client('sns') 
response = client.publish(
    TargetArn=arn, 
    Message=json.dumps(message) 
) 
+1

あなたがsenにしようとしているのであれば、 '' MessageStructure''のパラメータが必要です異なるタイプの加入者(例えば、電子メール対SMS)。ラムダ関数のコードを含めることができますか?私は上記のコードはエラーなしで動作すると仮定しています。 – garnaat

答えて

26

あなたのメッセージペイロードへ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' 
) 
+1

あなたの例にはデフォルトの –

+3

は含まれていません。これは、 'Message' argに渡されたdictにあります。 –

+1

私は訂正しました。 –

0

あなたは、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' 
) 
関連する問題