如何在Laravel項目中輕松部署AWSLambda函數(shù)?使用hammerstone/sidecar可以!

可以通過以下地址學習 composer學習地址

在開發(fā) laravel 項目時,我遇到了一個棘手的問題:如何在不增加復雜性的情況下,將非 phpLambda 函數(shù)集成到 laravel 應用中。我嘗試過多種方法,但每次都感覺不夠簡便和高效。最終,我找到了 hammerstone/sidecar 這個庫,它不僅簡化了部署流程,還讓 lambda 函數(shù)的執(zhí)行變得異常簡單。

hammerstone/sidecar 是一個 Laravel 包,旨在幫助開發(fā)者在 Laravel 應用中直接部署和執(zhí)行 AWS Lambda 函數(shù)。它支持 Lambda 支持的所有運行時,包括 Node.JSpythonJava、.NET、ruby 等。你可以輕松地將這些函數(shù)集成到你的 Laravel 項目中,而無需處理復雜的服務(wù)器配置。

要安裝 hammerstone/sidecar,只需運行以下 Composer 命令:

composer require hammerstone/sidecar

使用 hammerstone/sidecar,你需要創(chuàng)建一個 PHP 類和相應的 Lambda 函數(shù)文件。例如,如果你想使用 Node.js 在 Lambda 上生成博客文章的 og:image,你可以創(chuàng)建一個名為 OgImage 的 PHP 類:

namespace AppSidecar;  use HammerstoneSidecarLambdaFunction;  class OgImage extends LambdaFunction {     public function handler()     {         return 'lambda/image.handler';     }      public function package()     {         return [             'lambda',         ];     } }

然后,你需要創(chuàng)建一個 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 命令部署這個函數(shù):

php artisan sidecar:deploy --activate

最后,你可以在 Laravel 應用中直接執(zhí)行這個 Lambda 函數(shù):

Route::get('/ogimage', function () {     return OgImage::execute([         'text' => 'PHP to JS and Back Again!'     ]); });

hammerstone/sidecar 的優(yōu)勢在于它簡化了 Lambda 函數(shù)的部署和執(zhí)行過程。你不需要擔心服務(wù)器配置,只需專注于編寫函數(shù)邏輯即可。這不僅提高了開發(fā)效率,還降低了維護成本。

總的來說,hammerstone/sidecar 在我的項目中表現(xiàn)出色,它讓我能夠輕松地將各種語言編寫的 Lambda 函數(shù)集成到 Laravel 應用中。如果你也在尋找一種簡便的方法來部署和執(zhí)行 Lambda 函數(shù),那么 hammerstone/sidecar 絕對值得一試。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊13 分享