"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()
...
'ずんねえさま'