Неверный тип для параметра Сообщение - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь использовать «сигнал» в Django для отправки электронной почты SNS в AWS, и мой код:

import boto3
from properties.models import PropertyList
from django.db.models.signals import post_save, post_delete
from django.dispatch import receiver

@receiver(post_save, sender=PropertyList)
def send_property_details(sender, instance, created, **kwargs):
    if created:
        sns = boto3.client('sns')

        response = sns.publish(
            TopicArn='',# I write value of TopicArn
            Message={
            "name": instance.title,
            "description": instance.description
                },
            MessageStructure='json',
            Subject='New Property Created',
            MessageAttributes={
                'default':{
                    'DataType':'String',
                    'StringValue':instance.title
                    }
                },
            )

        print(response['MessageId'])

Я получаю сообщение об ошибке:

Ошибка проверки параметра:Неверный тип для параметра Сообщение, значение: {'name': 'aws', 'description': 'test'}, тип:, допустимые типы:

В документах AWS указано, что я хочу отправитьразличные сообщения для каждого транспортного протокола, установите значение параметра MessageStructure в JSON и используйте объект JSON для параметра Message.Что не так в моем коде?

Примечание : я хочу отправить больше значений, поэтому мне нужно отправить JSON

1 Ответ

0 голосов
/ 11 мая 2018

В примере вы вставляете сообщение как словарь.Это может быть причиной ошибки.Попробуйте изменить сообщение следующим образом:

import boto3, json    
...

mesg = json.dumps({
    "default": "defaultfield", # added this 
    "name": instance.title,
    "description": instance.description
})
response = sns.publish(
    TopicArn='topicARNvalue',
    Message=mesg,
    MessageStructure='json',
    Subject='New Property Created',
    MessageAttributes={}
)
...