2016-12-08 3 views
1

Die Dokumentation schlägt vor, das Skript unten zu verwenden, aber ich kann nicht scheinen, herauszufinden, warum ich eine Fehlermeldung erhalten.Fehler beim Senden einer SMS mit Amazon SNS und Python und boto3

Das, was im mit bisher:

sns = boto3.client('sns', region_name='eu-west-1') 
sns.publish(
    PhoneNumber='+5521981554856', 
    Message='hi there', 
    MessageAttributes={ 
         'AWS.SNS.SMS.SenderID': { 
                'DataType': 'String', 
                'StringValue': 'MySenderID' 
}  
} 
) 

hat jemand weiß, warum im den Fehler msg unten zu bekommen?

raise ParamValidationError(report=report.generate_report()) 
ParamValidationError: Parameter validation failed: 
Unknown parameter in input: "PhoneNumber", must be one of: TopicArn,TargetArn, Message, Subject, MessageStructure, MessageAttributes 

Warum "PhoneNumber" ein solches unangenehmes Verhalten präsentiert?

+0

Was passiert, wenn Sie die Nachrichtenattribute entfernen? Es sollte gut funktionieren. sns.publish (PhoneNumber = '+ 5521981554856', Nachricht = 'hallo da') – Patrick

Antwort

0

Die Dokumentation besagt, dass PhoneNumber unterstützt wird. http://boto3.readthedocs.io/en/latest/reference/services/sns.html

Leider ist das nur Copy-Paste aus der offiziellen AWS-Dokumentation.

Wenn Sie Quellcode anschauen, werden Sie sehen, dass Boto3 erwartet entweder TargetArn oder TopicArn: https://github.com/boto/boto3/blob/master/boto3/data/sns/2010-03-31/resources-1.json

"Publish": { 
     "request": { 
     "operation": "Publish", 
     "params": [ 
      { "target": "TopicArn", "source": "identifier", "name": "Arn" } 
     ] 
     } 
    }, 

...

"Publish": { 
      "request": { 
      "operation": "Publish", 
      "params": [ 
       { "target": "TargetArn", "source": "identifier", "name": "Arn" } 
      ] 
      } 
     }, 

Also ich denke, Sie haben Boto3 Patch selbst oder ein Problem auf GitHub.

0

Ich konnte es mit dem folgenden Code zum Laufen bringen:

import boto3 

sns = boto3.client('sns') 
smsattrs = { 
    'AWS.SNS.SMS.SenderID': { 'DataType': 'String', 'StringValue': 'TestSender' }, 
    'AWS.SNS.SMS.SMSType': { 'DataType': 'String', 'StringValue': 'Transactional'} 
} 
sns.publish(
    PhoneNumber = '+35840xxxxxxx', 
    Message = 'Hello world!', 
    MessageAttributes = smsattrs 
) 

Welche sieht so ziemlich das gleiche wie das, was Sie versuchte.

Verwandte Themen