【问题标题】:Using AWS SQS and Lambda for queue job in Laravel在 Laravel 中使用 AWS SQS 和 Lambda 进行队列作业
【发布时间】:2021-03-13 05:05:20
【问题描述】:
我在 laravel 中调度作业时,想知道是否有办法只使用 lambda 函数。
我使用的是下面。
- Laravel 5.8(PHP 7.2)
- AWS SQS
- 主管
在 Laravel 中,我通过 SQS 连接分派了一个工作,工作在 Laravel 项目中。
我搜索了如何使用 SQS 作为 lambda 函数的触发器。我找到了这份文件。 (Using AWS Lambda with Amazon SQS
)
如果我遵循这个文档,我想我可以在 lambda 中运行工作。但在 Laravel 项目中,作业将再次运行。我只想使用 lambda 作为工作。
我如何才能只运行 lambda 函数作为作业?
【问题讨论】:
标签:
amazon-web-services
aws-lambda
amazon-sqs
【解决方案1】:
不,这是不可能的。 Sqs、database 或 redis 仅用于保留 laravel 作业的序列化(编码等)版本。这是您可能得到的最接近的位置;
- 忘记 sqs 队列驱动程序。
- 在 aws lambda 中实施您的工作。
- 允许 lambda 使用您的 sqs(文档中列出的策略、触发器等)
- 通过
aws php sdk 或 http request(guzzle, curl) 从您的 laravel 应用向您的 sqs 发出请求,并让 lambda 使用您的 sqs。
- 您可以使用一些异步驱动程序来异步触发您的 sqs 请求。
- 如果你想使用 sqs 延迟队列,最长为 15 分钟 - 这里是 doc