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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eigentlich dein Beispiel richtig aussieht. Hier ist, was ich versucht habe
Arbeitete wie ein Charme. Ich empfehle, mit awscli konfiguriert mit Ihren root-account zuerst die Anmeldeinformationen und den code nehmen für eine Probefahrt. Sobald seine Arbeit entweder einen neuen Benutzer erstellen, mit dem nur die Rechte, die Sie brauchen, oder es auf eine Instanz Rolle.
Müssen Sie eine Richtlinie erstellen, können SNS:Veröffentlichen Sie auf Ressource:* (zulassen von Nachrichten an "alle") oder Ressource: '+17702233322' (text zulassen, um eine bestimmte Anzahl).