AWS Lambda(python)によるAmazonSQSの送信と受信サンプル

AWS

AWS Lambda(python)でAmazonSQSの送信と受信を行ってみます。
エラーハンドリング等は行っていないシンプルなサンプルです。

AmazonSQSのキュー作成

今回は単純な送受信を行うだけなので特別な設定は不要です。
以下の設定で作成します。(記載なしの値はデフォルト値のままでOK)

項目設定値
名前SampleQueue
タイプ標準
アクセスポリシー指定された AWS アカウント、IAM ユーザー、ロールのみを選択

SQSメッセージ送信用Lambda関数の作成

メッセージ本文と2つの属性を送信します。

import boto3

def lambda_handler(event, context):
    sqs = boto3.resource('sqs')
    queue = sqs.get_queue_by_name(QueueName="SampleQueue")
    sqsresponse =queue.send_message(
    MessageBody="2021-02-03 this is message body.",
    MessageAttributes={
        'id': {
            'DataType': 'Number', "StringValue": "123"
        },
        'url': {
            'DataType': 'String','StringValue': "https:hogehoge.aws"
        }
    }

SQSメッセージ受信用Lambda関数の作成

指定したキューのメッセージリスト(最大10)の
全ての属性を取得し、削除します。

import boto3
import json

def lambda_handler(event, context):
    sqs = boto3.resource('sqs')
    queue = sqs.get_queue_by_name(QueueName="SampleQueue")

    msg_list = queue.receive_messages( MessageAttributeNames=['All'], MaxNumberOfMessages=10)

    if msg_list:
        for msg in msg_list:
            print(msg.body)
            print(msg.message_attributes.get('id').get('StringValue'))
            print(msg.message_attributes.get('url').get('StringValue'))
            msg.delete()

以上

タイトルとURLをコピーしました