04
AprSidecar 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:
Any runtime that Lambda supports, you can use!
To install this package, you can simply require the package from the composer:
composer require hammerstone/sidecar
Every Sidecar Function requires two things:
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
Published at : 04-04-2022
I am a highly results-driven professional with 12+ years of collective experience in the grounds of web application development especially in laravel, native android application development in java, and desktop application development in the dot net framework. Now managing a team of expert developers at Codebrisk.
Launch project