【发布时间】:2023-01-05 23:33:23
【问题描述】:
我用 terraform 创建了 SQS 服务
resource "aws_sqs_queue" "ses_queue" {
name = "ses_queue"
message_retention_seconds = 86400
receive_wait_time_seconds = 1
visibility_timeout_seconds = 15
}
resource "aws_lambda_event_source_mapping" "send_email_message" {
event_source_arn = aws_sqs_queue.ses_queue.arn
function_name = aws_lambda_function.send_email_message.function_name
batch_size = 5
}
我正在使用 lambda 函数发送电子邮件
for record in event.get("Records"):
receipt_handle = record.get("receiptHandle", "")
request_body = record.get("body")
response = send_email(request_body)
if response:
sqs_client.delete_message(QueueUrl=constants.SES_QUEUE_URL, ReceiptHandle=receipt_handle)
【问题讨论】:
-
只是想知道是不是因为你在lambda中删除了消息,也因为lambda返回后SQS会自动删除消息?
-
IIRC,如果没有删除,消息将在可见性超时过去后返回到队列中,并且可以再次使用。所以我认为消息不会自动从队列中删除。
标签: python amazon-web-services aws-lambda terraform amazon-sqs