hcancelik/sidecar-browsershot

This package is abandoned and no longer maintained. No replacement package was suggested.

A Sidecar function to run Browsershot on Lambda.

v1.0.4 2022-05-20 15:14 UTC

This package is auto-updated.

Last update: 2023-02-20 16:57:54 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

This package allows you to run Browsershot on AWS Lambda through Sidecar.

You won't need to install Node, Puppeteer or Google Chrome on your server. The heavy lifting of booting a headless Google Chrome instance is happening on AWS Lambda.

Requirements

This package requires that spatie/browsershot and hammerstone/sidecar have been installed in your Laravel application.

Follow their installation and configuration instructions. (You can skip the installation of puppeteer and Google Chrome for Browsershot though.)

Installation

You can install the package via composer:

composer require hcancelik/sidecar-browsershot

Register the BrowsershotFunction::class in your sidecar.php config file.

/*
 * All of your function classes that you'd like to deploy go here.
 */
'functions' => [
    \Hcancelik\SidecarBrowsershot\Functions\BrowsershotFunction::class,
],

Deploy the Lambda function by running:

php artisan sidecar:deploy --activate

See Sidecar documentation for details.

Usage

You can use BrowsershotLambda like the default Browsershot-class coming from the Spatie package. All you need to do is replace Browsershot with BrowsershotLambda.

use Hcancelik\SidecarBrowsershot\BrowsershotLambda;

// an image will be saved
BrowsershotLambda::url('https://example.com')->save($pathToImage);

// a pdf will be saved
BrowsershotLambda::url('https://example.com')->save('example.pdf');

// save your own HTML to a PDF
BrowsershotLambda::html('<h1>Hello world!!</h1>')->save('example.pdf');

// Get HTML of a URL and store it on a given disk
$html = BrowsershotLambda::url('https://example.com')->bodyHtml();
Storage::disk('s3')->put('example.html', $html);

Saving directly to S3

You can store your file directly on AWS S3.

  • You must add an s3_bucket and s3_region keys added to config/sidecar.php
  • You must give S3 write permissions to your sidecar-execution-role

After the above settings, you can use saveToS3 method on BrowsershotLambda.

use Hcancelik\SidecarBrowsershot\BrowsershotLambda;
// an image will be saved on S3
BrowsershotLambda::url('https://example.com')->saveToS3('example.jpg');
// a pdf will be saved on S3
BrowsershotLambda::url('https://example.com')->saveToS3('example.pdf');
// save your own html to a PDF on S3
BrowsershotLambda::html('<h1>Hello world!!</h1>')->saveToS3('example.pdf');

Testing

The testsuite makes connections to AWS and runs the deployed Lambda function. In order to run the testsuite, you will need an active AWS account.

We can use the native sidecar:configure artisan command to create the necessary AWS credentials for Sidecar. First copy the testbench.example.yaml file to testbench.yaml. Then run ./vendor/bin/testbench sidecar:configure to start the Sidecar setup process. (You only have to do the setup once)

cp testbench.example.yaml testbench.yaml
cp .env.example .env
./vendor/bin/testbench sidecar:configure

After finishing the Sidecar setup process, you will have received a couple of SIDECAR_* environment variables. Add these credentials to .env.

Now we can deploy our local BrowsershotFunction to AWS Lambda. Run the following command in your terminal, before executing the testsuite.

./vendor/bin/testbench sidecar-browsershot:setup

After the successful deployment, you can run the testsuite.

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.