今日はAmazon SQSをPythonから操作します!(`□´)
◆やること
CloudShellでPythonの対話モードからAmazon SQSを操作
◆実践!
1.キュー作成
・CloudShellへログインし、下記を実行
$ python3 -V Python 3.7.16 $ python3 >>> import boto3 >>> queue_name = 'Test1' >>> sqs = boto3.resource('sqs') >>> sqs.create_queue(QueueName=queue_name) ※対話モードから抜ける場合は[ctrl]+[D]
2.キュー確認
・同じくCloudShellから下記を実行
$ python3 >>> import boto3 >>> queue_name = 'Test1' >>> sqs = boto3.resource('sqs') >>> print(sqs.get_queue_by_name(QueueName=queue_name))
3.メッセージ送信
・同じくCloudShellから下記を実行
$ python3 >>> import boto3 >>> queue_name = 'Test1' >>> sqs = boto3.resource('sqs') >>> queue = sqs.get_queue_by_name(QueueName=queue_name) >>> msg_list = [ ...{ 'Id': '1','MessageBody': 'Test1'}, ...{ 'Id': '2','MessageBody': 'Test2'} ...] >>> response = queue.send_messages(Entries=msg_list) >>> print(response) {'Successful': [{'Id': '1', 'MessageId': 'bfa16478-d76e-4435-bfe4-8732ecc64f1e', 'MD5OfMessageBody': '0cbc6611f5540bd0809a388dc95a615b'}, {'Id': '2', 'MessageId': 'fa166289-9bf3-42e7-ae95-a28a11f86ce9', 'MD5OfMessageBody': 'c454552d52d55d3ef56408742887362b'}], 'ResponseMetadata': {'RequestId': 'faffe300-e39d-59b8-b3aa-bfca27b6bd80', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': 'faffe300-e39d-59b8-b3aa-bfca27b6bd80', 'date': 'Tue, 02 May 2023 07:55:23 GMT', 'content-type': 'text/xml', 'content-length': '664'}, 'RetryAttempts': 0}} こんな感じのが返ってきたら成功!
4.メッセージ取得
$ python3 >>> import boto3 >>> queue_name = 'Test1' >>> sqs = boto3.resource('sqs') >>> queue = sqs.get_queue_by_name(QueueName=queue_name) >>> messages = queue.receive_messages( ...MessageAttributeNames=['All'], ...MaxNumberOfMessages=10 ...) >>> messages[0] sqs.Message(queue_url='https://sqs.ap-northeast-1.amazonaws.com/xxxx/Test1', receipt_handle='AQEBdwtvvMvVQs+bFVVXLsXn6aqRvMda6RwuzU3f2KBstLA7mpKMsN1gnfqHU7RtSvHB5H2UAYtpmfalcAiWV1hcGFYG7Gf+hHclMSvaioTLDG7bgRawQktXXDYVcQNUppHR8XNWLhoqn/ZfWBQix/OsIs5pxNz5/j3hH8tB9+/3ulnYLCyqUoFtS3n03XIFaQaETLKLYYBpzBYmpIBqm92RUT+juN8DwA8rPpVWpRmDY8fBKTeLg4CMdD3Ysr+NKhxZPAYa/BzxdUEINH/xO+ZSisBOCoTzzLh9mZQMWpoTRHIsi4wQ9xzBatkj/MUh1fhbiJaz4fDDUYwbe/3o2cVhKkx39WGXYU72eNorEeaxGNu4z8ary94jKkvLw94vuOxOCoYTnwQ6tyKvh+5ZRsiARQ==')
5.メッセージ削除
$ python3 >>> import boto3 >>> queue_name = 'Test1' >>> sqs = boto3.resource('sqs') >>> queue = sqs.get_queue_by_name(QueueName=queue_name) >>> messages = queue.receive_messages( ...MessageAttributeNames=['All'], ...MaxNumberOfMessages=10 ...) ・すべて削除する場合: >>> for message in messages: ... message.delete() ※注意:ここの...の後ろにはスペースが必要! ・1つずつ削除する場合 >>> messages[0].delete()
◆後処理
1.キュー削除
$ python3 >>> import boto3 >>> queue_name = 'Test1' >>> sqs = boto3.resource('sqs') >>> queue = sqs.get_queue_by_name(QueueName=queue_name) >>> response = queue.delete() >>> print(response) {'ResponseMetadata': {'RequestId': '51c323e1-1b21-5123-8fa9-7f2bd4c7f115', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '51c323e1-1b21-5123-8fa9-7f2bd4c7f115', 'date': 'Tue, 02 May 2023 08:45:26 GMT', 'content-type': 'text/xml', 'content-length': '211'}, 'RetryAttempts': 0}}
◆感想
CloudShellが正しいコマンドを打ち込んでるのにやたらInternal Server Errorをやたら吐くのであまり進まなかった。。 やり方が悪いのか、、(´Д`。)