Ich habe ein funktionierendes Python/Boto-Skript, das eine Nachricht an meine AWS SQS-Warteschlange sendet. Der Nachrichtentext ist jedoch in das Skript fest codiert.AWS SQS: Senden dynamischer Nachricht mit Boto
ich erstellt eine Datei ~/Datei mit dem Namen, der
$ cat ~/file
Username 'encrypted_password_string'
zwei Werte enthält, würde ich meine Boto Skript gefällt (siehe unten) eine Nachricht an meine AWS SQS-Warteschlange zu senden, die diese beiden Werte enthält.
Kann jemand bitte beraten, wie Sie mein Skript unten ändern, so dass der Nachrichtentext an SQS den Inhalt der Datei ~/Datei enthält. Bitte beachten Sie auch die Sonderzeichen nehmen, die
Beispiel in einem verschlüsselten Passwort-String vorhanden ist: ~/Datei Benutzername d5MopV/EsfSKk8BExCyLHFwNfBrOTzQ1
#!/usr/bin/env python
conf = {
"sqs-access-key": "xxxx",
"sqs-secret-key": "xxxx",
"sqs-queue-name": "UserPassChange",
"sqs-region": "xxxx",
"sqs-path": "sqssend"
}
import boto.sqs
conn = boto.sqs.connect_to_region(
conf.get('sqs-region'),
aws_access_key_id = conf.get('sqs-access-key'),
aws_secret_access_key = conf.get('sqs-secret-key')
)
q = conn.create_queue(conf.get('sqs-queue-name'))
from boto.sqs.message import RawMessage
m = RawMessage()
m.set_body('hardcoded message')
retval = q.write(m)
print 'added message, got retval: %s' % retval
einen Weg, um daran zu arbeiten:
in der Skript ich habe
import commands
dann hinzugefügt,
USERNAME = commands.getoutput("echo $(who am i | awk '{print $1}')")
PASS = commands.getoutput("cat /tmp/.s")
und fügte dann diese Werte in meinem Nachrichtentext:
MSG = RawMessage()
MSG.set_body(json.dumps({'pass': PASS, 'user': USERNAME}))
Zuerst ** STOPP mit Boto, starten boto3 mit **. Sobald Sie in boto3 sind, müssen Sie nur noch dem folgenden Beispiel folgen: http://boto3.readthedocs.io/en/latest/guide/sqs.html Denken Sie daran, dass boto3 eine hohe Ressourcenmethode boto3.resource() und Außerdem können Sie die boto3.client() - Methode auf niedriger Ebene verwenden. Denken Sie daran, sie zu dokumentieren, wenn Sie einen Wrapper schreiben wollen. – mootmoot
danke mootmoot aber das beantwortet nicht die Frage, wie ich dynamische Werte in mein oben genanntes Skript eingeben kann. – KarlH
Ehrlich gesagt, sollten Sie Ihre Frage und Ihre Absicht klären. Es ist seltsam, dass Sie "Wer bin ich" verwenden, um den Benutzernamen zu erhalten, aber nicht in Ihrer Frage erwähnt. Dann springt es plötzlich auf '/ tmp/.s'. Bitte klärt es auf oder riskiert, mod down zu sein. – mootmoot