0
私のApiゲートウェイのURLを呼び出すと、SQSで渡されたメッセージを挿入してキュー内のメッセージのIDを返すラムダ関数がトリガされます。 これで、API Gatewayの別のリソースを作成し、別のLambda関数を使用してキュー内のすべてのメッセージを出力しました。これは関数です:AWSラムダ関数クエリSQS MessageIdとApiGateway
import boto3
import json
def lambda_handler(event, context):
sqs = boto3.resource('sqs')
queue = sqs.get_queue_by_name(QueueName='<queue_name>')
messages = set()
for m in range(0, 9):
msg_list = queue.receive_messages()
for msg in msg_list:
messages.add(msg.body)
return list(messages)
どのように関数を変更して、指定したIDのメッセージのみを取得できますか? この パラメータを受信し、それをラムダ関数に渡すようにApiゲートウェイを設定するにはどうすればよいですか?
okですが、特定のIDのメッセージのみを取得することは可能ですか? – xergiopd
@xergiopd:ReceiveMessageにはmessageIdを指定できる属性がありません。 http://geocities.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html Sergeyが指摘したように、特定のSQSメッセージをIDで取得することは、SQSがそのように設計されたユースケースではありません待ち行列システム。 –
S3にあらかじめ定義されたキーでメッセージを保存し、代わりにそのキーでメッセージを取り戻すことができます。また、達成しようとしているものに適したDynamoDBまたはRDSを使用することもできます。 –