"Getting Started with AWS and Python"をboto3で試す その2
前回の続きです。今回はSQSを操作するぞ。
"Getting Started with AWS and Python"をboto3で試す その1 - goodbyegangsterのブログ
fifoのqueueを作成するため、NorthVirginaリージョンで作業します。
> import boto3 > sqs = boto3.resource('sqs', region_name='us-east-1') > sqs.create_queue( ... QueueName='myqueue.fifo', ... Attributes={ ... 'FifoQueue': 'true' ... } ... ) sqs.Queue(url='https://queue.amazonaws.com/XXXXXXXXXXX/myqueue.fifo')
作成したqueueにmessageを入れます。前回作成したS3のObjectの情報を入れてみます。
> import json, uuid > queue_url = 'https://sqs.us-east-1.amazonaws.com/XXXXXXXXXXX/myqueue.fifo' > queue = sqs.Queue(queue_url) > queue.send_message( ... MessageGroupId='VOICELOID', ... MessageDeduplicationId=str(uuid.uuid4()), ... MessageBody=json.dumps({'bucket': 'mybucket-kiritanperopero', 'key': 'tmp/zunda.txt'}) ... )
messageを受け取って、削除してます。messageは一度に最大10件まで指定でき、デフォルトは1件、list型で帰ってきます。
> messages = queue.receive_messages( ... AttributeNames=['VOICELOID'] ... ) > if messages is not None: ... msg_data = json.loads(messages[0].body) ... boto3.resource('s3').Object(bucket_name=msg_data['bucket'],key=msg_data['key']).get()['Body'].read().decode('utf-8') ... messages[0].delete() ... 'ずんねえさま'