hcancelik / sidecar-browsershot
一个 Sidecar 功能,用于在 Lambda 上运行 Browsershot。
Requires
- php: ^8.0
- hammerstone/sidecar: ^0.3.7
- illuminate/contracts: ^8.0|^9.0
- spatie/browsershot: ^3.52
- spatie/laravel-package-tools: ^1.9.2
Requires (Dev)
- nunomaduro/collision: ^5.10|^6.0
- nunomaduro/larastan: ^1.0|^2.0
- orchestra/testbench: ^6.22|^7.0
- pestphp/pest: ^1.21
- pestphp/pest-plugin-laravel: ^1.1
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
- spatie/laravel-ray: ^1.26
README
此包允许您通过 Sidecar 在 AWS Lambda 上运行 Browsershot。
您不需要在服务器上安装 Node、Puppeteer 或 Google Chrome。无头 Google Chrome 实例的启动工作是在 AWS Lambda 上完成的。
要求
此包要求在您的 Laravel 应用程序中已安装 spatie/browsershot
和 hammerstone/sidecar
。
遵循它们的安装和配置说明。(尽管如此,您也可以跳过 Browsershot 的 Puppeteer 和 Google Chrome 的安装。)
安装
您可以通过 composer 安装此包。
composer require hcancelik/sidecar-browsershot
在您的 sidecar.php
配置文件中注册 BrowsershotFunction::class
。
/* * All of your function classes that you'd like to deploy go here. */ 'functions' => [ \Hcancelik\SidecarBrowsershot\Functions\BrowsershotFunction::class, ],
通过运行以下命令部署 Lambda 函数:
php artisan sidecar:deploy --activate
有关详细信息,请参阅 Sidecar 文档。
用法
您可以使用 BrowsershotLambda
如同来自 Spatie 包的默认 Browsershot
-class。您需要做的就是将 Browsershot
替换为 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);
直接保存到 S3
您可以直接在 AWS S3 上存储您的文件。
- 您必须将
s3_bucket
和s3_region
键添加到 config/sidecar.php - 您必须给予 sidecar-execution-role 对 S3 的写入权限
完成以上设置后,您可以在 BrowsershotLambda
上使用 saveToS3
方法。
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');
测试
测试套件会连接到 AWS 并运行已部署的 Lambda 函数。为了运行测试套件,您需要一个活动的 AWS 账户。
我们可以使用本地的 sidecar:configure
artisan 命令为 Sidecar 创建必要的 AWS 凭据。首先将 testbench.example.yaml
文件复制到 testbench.yaml
。然后运行 ./vendor/bin/testbench sidecar:configure
以启动 Sidecar 设置过程。(您只需设置一次)
cp testbench.example.yaml testbench.yaml cp .env.example .env ./vendor/bin/testbench sidecar:configure
完成 Sidecar 设置过程后,您将收到一些 SIDECAR_*
环境变量。将这些凭据添加到 .env
。
现在我们可以将本地的 BrowsershotFunction
部署到 AWS Lambda。在执行测试套件之前,在终端中运行以下命令:
./vendor/bin/testbench sidecar-browsershot:setup
部署成功后,您可以运行测试套件。
composer test
变更日志
请参阅CHANGELOG以获取更多关于最近更改的信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全漏洞
请审查我们的安全策略了解如何报告安全漏洞。
致谢
许可
MIT 许可证 (MIT)。请参阅许可文件以获取更多信息。