Sidecar package creates, deploys, and executes Lambda functions from your Laravel application. You can write functions in any of the following runtimes and execute them straight from PHP:
- Node.js 14
- Node.js 12
- Node.js 10
- Python 3.9
- 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 6
- .NET Core 3.1
- .NET Core 2.1
Any runtime that Lambda supports, you can use!
Installation
To install this package, you can simply require the package from the composer:
composer require hammerstone/sidecar
What It Looks Like
Every Sidecar Function requires two things:
- A PHP Class
- Files that you want to be deployed to Lambda
For example, if we were wanting to use Node on Lambda to generate an og:image for all of our blog posts, we would first set up a simple class in PHP called 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',
];
}
}
That’s it! There are a lot more options, but that’s all that is required.
The second thing you’d need is your function’s handler, in this case, a javascript file.
Here’s a simple JS file that could serve as our handler:
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');
}
With those files created, you can deploy this function to Lambda:
php artisan sidecar:deploy --activate
And then execute it straight from your Laravel app!
web.php
Route::get('/ogimage', function () {
return OgImage::execute([
'text' => 'PHP to JS and Back Again!'
]);
});
Sidecar passes the payload from execute over to your Javascript function. Your Javascript function generates an image and sends it back to PHP. Sidecar reduces the complexity of deploying small bits of code to Lambda.
This package has a lot more, If you want to dig more you can visit its complete documentation and source code on Github