锤石 / 侧车
一个Laravel包,可以将Lambda函数与您的应用程序一起部署。
Requires
- php: ^8.1
- aws/aws-sdk-php: ^3.216.1
- guzzlehttp/guzzle: ^6.5.8|^7.2
- illuminate/console: ^8|^9|^10|^11
- illuminate/filesystem: ^8|^9|^10|^11
- illuminate/support: ^8|^9|^10|^11
- maennchen/zipstream-php: ^3.1
Requires (Dev)
- mockery/mockery: ^1.3.3
- orchestra/testbench: ^5|^6|^7|^8|^9
- phpunit/phpunit: >=8.5.23|^9|^10
This package is auto-updated.
Last update: 2024-09-15 22:59:30 UTC
README
从您的Laravel应用程序部署和执行AWS Lambda函数。
在 hammerstone.dev/sidecar/docs 读取完整文档。
关注我的Twitter以获取更多更新:twitter.com/aarondfrancis。
如果您是视觉学习者,请观看 Laracasts系列。
要安装,只需从composer要求包:composer require hammerstone/sidecar
此包仍在开发中,请为您遇到的问题提出问题。
侧车能做什么
侧车包,从您的Laravel应用程序创建、部署和执行Lambda函数。
您可以使用以下任何运行时编写函数并直接从PHP执行它们
- Node.js 20
- Node.js 18
- Node.js 16
- Python 3.12
- Python 3.11
- Python 3.10
- Python 3.9
- Python 3.8
- Java 21
- Java 17
- Java 11
- Java 8
- .NET 8
- .NET 7
- .NET 6
- Ruby 3.3
- Ruby 3.2
- 仅操作系统运行时(Amazon Linux 2023)
- 仅操作系统运行时(Amazon Linux 2)
Lambda支持的任何运行时,您都可以使用!
侧车由 Aaron Francis 维护,请关注我的Twitter!
外观如何
每个Sidecar函数都需要两件事
- 一个PHP类
- 您希望部署到Lambda的文件
例如,如果我们想使用Lambda上的Node生成所有博客文章的og:image,我们首先会设置一个简单的PHP类,名为OgImage
。
App\Sidecar\OgImage.php
namespace App\Sidecar; use Hammerstone\Sidecar\LambdaFunction; class OgImage extends LambdaFunction { public function handler() { // Define your handler function. return 'lambda/image.handler'; } public function package() { // All files and folders needed for the function. return [ 'lambda', ]; } }
就是这样!有很多选项,但这些都是必需的。
您还需要的是您函数的“处理程序”,在本例中是一个javascript文件。
这是一个简单的JS文件,可以作为我们的处理程序
resources/lambda/image.js
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' // Read the text out of the event passed in from PHP. context.fillText(event.text, 600, 170); // Return an image. return canvas.toDataURL('image/jpeg'); }
创建这些文件后,您可以将此函数部署到Lambda
php artisan sidecar:deploy --activate
然后直接从您的Laravel应用程序中执行它!
web.php
Route::get('/ogimage', function () { return OgImage::execute([ 'text' => 'PHP to JS and Back Again!' ]); });
Sidecar将从execute
传递payload到您的JavaScript函数。您的JavaScript函数生成图像并将其发送回PHP。
Sidecar简化了将小块代码部署到Lambda的复杂性。
侧车存在的理由
AWS Lambda 是一项强大的服务,允许您在不配置或考虑服务器的情况下运行代码。
Laravel Vapor 将这种力量带到了Laravel。使用Vapor,您可以在无服务器平台上运行您普通的Laravel应用程序,并获得惊人的速度、安全性和可靠性。
通过Vapor使用Lambda是一种出色的开发者体验,但在构建应用程序时,有时您需要出于某种原因运行一个或两个Node函数。常见用例可能包括使用无头Chrome进行截图、生成图像或进行您的JavaScript前端的后端渲染。
或者你可能想在不配置服务器的情况下运行一个Python脚本?或者一个单独的Ruby脚本。甚至是Java!
在无服务器平台上运行时,并不像安装Node并运行函数那样简单。你无法访问服务器!所以你最终只能部署一个Vercel或Netlify函数,并通过HTTP调用它,或者干脆把它忘掉。
Sidecar为那些非PHP函数带来了Vapor的便捷性。
Sidecar不做什么
Sidecar不处理任何API网关、数据库、缓存等。Sidecar唯一关注的是打包、创建、部署和执行Lambda函数。
Sidecar不提供通过HTTP执行函数的方式。你必须通过提供的方法从你的Laravel应用程序中执行它。
如果你需要那些其他服务,我们鼓励你使用Vapor为你设置的实例,或者自己设置它们。