在开发 laravel 项目时,我遇到了一个棘手的问题:如何在不增加复杂性的情况下,将非 php 的 Lambda 函数集成到 laravel 应用中。我尝试过多种方法,但每次都感觉不够简便和高效。最终,我找到了 hammerstone/sidecar 这个库,它不仅简化了部署流程,还让 lambda 函数的执行变得异常简单。
hammerstone/sidecar 是一个 Laravel 包,旨在帮助开发者在 Laravel 应用中直接部署和执行 AWS Lambda 函数。它支持 Lambda 支持的所有运行时,包括 Node.JS、python、Java、.NET、ruby 等。你可以轻松地将这些函数集成到你的 Laravel 项目中,而无需处理复杂的服务器配置。
要安装 hammerstone/sidecar,只需运行以下 Composer 命令:
composer require hammerstone/sidecar
使用 hammerstone/sidecar,你需要创建一个 PHP 类和相应的 Lambda 函数文件。例如,如果你想使用 Node.js 在 Lambda 上生成博客文章的 og:image,你可以创建一个名为 OgImage 的 PHP 类:
namespace AppSidecar; use HammerstoneSidecarLambdaFunction; class OgImage extends LambdaFunction { public function handler() { return 'lambda/image.handler'; } public function package() { return [ 'lambda', ]; } }
然后,你需要创建一个 JavaScript 文件作为处理程序:
const {createCanvas} = require('canvas') exports.handler = async function (event) { const canvas = createCanvas(1200, 630) const context = canvas.getContext('2d') context.font = 'bold 70pt Helvetica' context.textAlign = 'center' context.fillStyle = '#3574d4' context.fillText(event.text, 600, 170); return canvas.toDataURL('image/jpeg'); }
接下来,你可以使用 Artisan 命令部署这个函数:
php artisan sidecar:deploy --activate
最后,你可以在 Laravel 应用中直接执行这个 Lambda 函数:
Route::get('/ogimage', function () { return OgImage::execute([ 'text' => 'PHP to JS and Back Again!' ]); });
hammerstone/sidecar 的优势在于它简化了 Lambda 函数的部署和执行过程。你不需要担心服务器配置,只需专注于编写函数逻辑即可。这不仅提高了开发效率,还降低了维护成本。
总的来说,hammerstone/sidecar 在我的项目中表现出色,它让我能够轻松地将各种语言编写的 Lambda 函数集成到 Laravel 应用中。如果你也在寻找一种简便的方法来部署和执行 Lambda 函数,那么 hammerstone/sidecar 绝对值得一试。