Blog Detail

04

Apr
Deploy & Execute AWS Lambda Functions from Your Laravel App cover image

arrow_back Deploy & Execute AWS Lambda Functions from Your Laravel App

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

Published at : 04-04-2022

Author : Rizwan Aslam
AUTHOR
Rizwan Aslam

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 your project

Launch project