0
調用我的Api網關的url將觸發一個Lambda函數,該函數插入SQS中傳遞的消息並返回隊列中消息的ID。 現在我創建了另一個API網關資源,並通過另一個Lambda函數打印隊列中的所有消息。這是功能:AWS Lambda函數查詢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)
我該如何更改函數以獲取僅帶有指定標識的消息? 我怎樣才能配置Api網關接收這個 參數並將其傳遞給Lambda函數?
好吧,但有可能只獲得具有特定ID的消息? – xergiopd
@xergiopd:我在ReceiveMessage上看不到任何可以指定messageId的屬性。正如Sergey指出的那樣 - 通過ID來提取特定的SQS消息並不是真正的SQS設計用例,因爲它是排隊系統。 –
您可以在S3中使用預定義密鑰存儲消息,然後通過該密鑰將消息拉回。您也可以使用DynamoDB或RDS,它們都非常適合您要實現的目標。 –