Sidecar 包可以从您的 Laravel 应用程序中部署和执行 AWS Lambda 函数。
发布于 作者 Aaron Francis
Sidecar 是由 Hammerstone 团队开发的包,它可以帮助您轻松地将 AWS Lambda 函数打包、部署和执行到您的 Laravel 应用程序中。
Sidecar 支持 Laravel 7 和 8,并需要 PHP 7.2 或更高版本。
Laravel Vapor 将无服务器的力量带到了 Laravel。 使用 Vapor,您可以在无服务器平台上运行您的普通 Laravel 应用程序,并获得惊人的速度、安全性和可靠性。
Sidecar 将 Vapor 的易用性带到了非 PHP 函数。 常用例包括使用无头 Chrome 捕获屏幕截图、运行 FFmpeg、使用 Python 进行一些数据处理、生成图像或在服务器端渲染您的 Javascript 前端。
或者您可能想要运行单个 Ruby 脚本而无需在服务器上配置 Ruby。 或者 Java。 甚至 PowerShell,出于某种原因?
您可以使用 Lambda 支持的任何运行时
- Node.js 14
- Node.js 12
- Node.js 10
- Python 3.8
- Python 3.7
- Python 3.6
- Python 2.7
- Ruby 2.7
- Ruby 2.5
- Java 11
- Java 8
- Go 1.x
- .NET Core 3.1
- .NET Core 2.1
Sidecar 带有一个 sidecar:configure
命令,它可以交互式地引导您设置 AWS 中的正确权限,因此您不必在 IAM UI 中乱搞。
配置好凭据后,创建第一个 Lambda 只需要两件事
- 一个 PHP 类
- 您想要部署到 Lambda 的文件
假设我们要使用 Node 生成图像。 您的函数类可能如下所示
namespace App\Sidecar; use Hammerstone\Sidecar\LambdaFunction; class GenerateImage extends LambdaFunction{ public function handler() { // Define your handler function. // (Javascript file + export name.) return 'resources/lambda/image.handler'; } public function package() { // All files and folders needed for the function. // In this case some JS files and some fonts. return [ 'resources/lambda', 'resources/fonts', ]; }}
配置好函数后,您可以使用简单的命令部署并激活它
php artisan sidecar:deploy --activate
上面的命令将在 AWS 上创建您的 Lambda 函数并将其准备使用。
您只需在您的 Laravel 应用程序中的任何位置调用类的 execute
方法,并传递您想要传递给 Lambda 函数的任何数据,即可执行此函数。
$image = GenerateImage::execute([ 'text' => 'This image was generated on Lambda!']);
本文只是简要概述了 Sidecar 的功能。 Sidecar 还支持
- 单独的环境
- 异步执行
- 多个并发的异步执行
- 每个函数可配置的内存、超时和运行时
- 单独的部署和激活步骤,以实现零停机时间或版本漂移
- 检索每个执行的日志和计时
- 将 Lambda 执行结果直接作为 Laravel 响应返回到浏览器
要阅读完整的文档,请参见 https://hammerstone.dev/sidecar/docs 或访问 GitHub 存储库 https://github.com/hammerstonedev/sidecar。
请注意,这是 v0.1.0 版本。 问题正在迅速解决,并且功能正在不断添加,因为它们正在朝 1.0 版本迈进。 请随时在 Twitter 上直接联系作者 twitter.com/aarondfrancis。