Wie sende ich eine SMS-Nachricht über AWS SNS mit boto3 in einer AWS Lambda-Funktion?

Ich würde gerne senden Sie eine SMS-Nachricht von einer AWS Lambda-Funktion mit der boto3 veröffentlichen Methode um den Benutzer zu Benachrichtigen per SMS. Meine lambda Funktion in Python geschrieben ist und ich bin mit dem boto3 Modul. Meine lambda-Funktion hat volle Rechte auf SNS. Ich habe diesen code,

sns = boto3.client('sns')
sns.publish(
    PhoneNumber = '+11234567890',
    Message = 'Simple text message'
)

Entsprechend der boto3 Dokumentation, die publish-Methode akzeptiert die folgenden Parameter,

response = client.publish(
    TopicArn='string',
    TargetArn='string',
    PhoneNumber='string',
    Message='string',
    Subject='string',
    MessageStructure='string',
    MessageAttributes={
        'string': {
            'DataType': 'string',
            'StringValue': 'string',
            'BinaryValue': b'bytes'
        }
    }
)

Es erfordert eine "Message" - parameter und einen der folgenden drei Parameter beschrieben, die in den docs:

TopicArn (string) -- das Thema, Das Sie wollen, um zu veröffentlichen.

Wenn Sie nicht geben Sie einen Wert für die TopicArn parameter, müssen Sie
geben Sie einen Wert für die Telefonnummer oder TargetArn Parameter.

TargetArn (string) - Entweder TopicArn oder EndpointArn, aber nicht beide.

Wenn Sie nicht geben Sie einen Wert für die TargetArn parameter, müssen Sie
geben Sie einen Wert für die Telefonnummer oder TopicArn Parameter.

Telefonnummer (string) -- die Telefonnummer, an Die Sie liefern wollen
eine SMS-Nachricht. Die Verwendung der E. 164-format.

Wenn Sie nicht geben Sie einen Wert für den parameter PhoneNumber, müssen Sie
geben Sie einen Wert für die TargetArn oder TopicArn Parameter.

Wenn mein code ausgeführt wird eine überprüfung der parameter Fehler zurückgegeben. Es besagt,

Unbekannten parameter in input: "PhoneNumber", muss einer der folgenden sein: TopicArn,
TargetArn, >Nachricht, Betreff, MessageStructure, MessageAttributes".

Also die Dokumentation scheint, um anzuzeigen, dass die Telefonnummer einen gültigen parameter, aber wenn verwendet, tritt ein Fehler auf und das feedback der Fehler zeigt an, dass die Telephonnummer ist nicht ein möglicher parameter. Ich vermute, ich bin etwas fehlt offensichtlich und einfach, könnte aber etwas Hilfe gebrauchen.

Ich weiß, es gibt andere Möglichkeiten zum senden von SMS-Nachrichten wie E-Mail-gateways und anderen Hersteller-Lösungen wie Twilio, aber ich möchte zu verfolgen, die SNS-basierte route und verstehen, wo ich schief gegangen.

  • Tat dies letztlich für Sie arbeiten? Dein Aufruf scheint Recht, wie es gerade bei mir geklappt
  • Für die Zukunft, ich erhalte die gleiche Fehlermeldung mit ähnlichem code, der funktionierte gut Letzte Woche. Ich glaube, das könnte boto3 oder AWS nicht Umgang mit ein unbedeutender Fehler richtig. Also die Veröffentlichung ist zu Versagen, wenn gesendet AWS, sondern wird gesehen als eine schlechte parameter. Aber ich bin mir nicht 100% sicher, dass das der Fall ist.
InformationsquelleAutor kelflanagan | 2016-07-13
Schreibe einen Kommentar