2016-07-05 10 views
0

私はAWS SQSキューにメッセージを投稿する作業用python/botoスクリプトを用意しています。ただし、メッセージ本体はスクリプトにハードコードされています。AWS SQS:botoを使用して動的メッセージを送信

私はこれらの2つの値が含まれている私のAWS SQSキューにメッセージを送信するために私のbotoスクリプト(下記参照)を希望の二つの値

$ cat ~/file 
Username 'encrypted_password_string' 

が含まれている〜/ファイルと呼ばれるファイルを作成します。

誰でも以下のスクリプトを修正して、SQSに送信されるメッセージ本文にファイル〜/ fileの内容が含まれるように助言してください。また、暗号化されたパスワード文字列

例内に存在する特殊文字に留意してください: 〜/ファイル名 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 

一つの方法、それは働いて得るために:

私はその後、

import commands 

を追加したスクリプトは、

を追加しましたその後、
USERNAME = commands.getoutput("echo $(who am i | awk '{print $1}')")  
PASS = commands.getoutput("cat /tmp/.s") 

と私のメッセージ本文にこれらの値を追加:

MSG = RawMessage()  
MSG.set_body(json.dumps({'pass': PASS, 'user': USERNAME})) 
+0

まず、** STOPのboto使用して、** boto3使用を開始。 boto3に入ったら、次の例に従ってください:http://boto3.readthedocs.io/en/latest/guide/sqs.html boto3はリソースメソッドboto3.resource()と低レベルのboto3.client()メソッドを使用することもできます。ラッパーを作成する場合は、それらを文書化することを忘れないでください。 – mootmoot

+0

ありがとうmootmootしかし、私は上記のスクリプトに動的な値を入力する方法の質問に答えることはありません。 – KarlH

+0

正直なところ、あなたの質問とあなたの意図を明確にする必要があります。あなたの質問には言及されていないが、ユーザー名を取得するために 'who am i'を使用するのは奇妙です。それから突然 '/ tmp/.s'にジャンプします。それを明確にするか、モダンになる危険性があります。 – mootmoot

答えて

0

次の例では、受信機にファイルを送信するためにBoto3を使用する方法を示します。

test_sqs.py

import boto3 
from moto import mock_sqs 

@mock_sqs 
def test_sqs(): 
    sqs = boto3.resource('sqs', 'us-east-1') 
    queue = sqs.create_queue(QueueName='votes') 

    queue.send_message(MessageBody=open('beer.txt').read()) 

    messages = queue.receive_messages() 
    assert len(messages) == 1 
    assert messages[0].body == 'tasty\n' 
関連する問題