Search by

multiapi / arco-laravel

JGamboa

Laravel integration for Arco (Octane on AWS Lambda Web Functions)

v0.19.1 2026-11-04 03:16 UTC

README

Laravel integration for Arco, which deploys Laravel to AWS Lambda Web Functions with FrankenPHP and Octane.

composer require multiapi/arco-laravel laravel/octane
composer require --dev multiapi/arco

Install it as a regular dependency: its service provider ships with your app. On Lambda (only when Arco runs the app) it:

  • trusts the AWS front end's X-Forwarded-* headers, so Laravel sees https, the real host and client IP;
  • passes Lambda's session token to every AWS client configured with the function's key (DynamoDB cache, SQS, S3, SES, failed jobs, your own services);
  • sends stock logging to stderr as JSON, with the request or invocation id and the X-Ray trace id in every line (and the job's name on queue workers), and keeps sessions out of files.
  • registers each storage() of arco.php as a disk of the same name (Storage::disk('uploads')), points the DynamoDB cache store at a table Arco created, and sends failed jobs to the table of failedJobsTable().

In any environment it adds php artisan arco:failed-jobs: --json lists the failed jobs with their exception as one JSON line, --flush forgets them on any failed-jobs store (DynamoDB included, where queue:flush throws), and --queue=<url> limits either to one queue.

It also provides the Laravel preset Arco uses to package your app (Octane worker, storage in /tmp, /up health route, cached asset paths).

Arco Cloud extensions

Arco Cloud can add extensions to an app it deploys. An extension is a directory under .arco-cloud/<name>/ whose bootstrap.php returns the class name of a service provider; on Lambda this package registers each one. An extension that throws or returns anything else is logged to stderr as one JSON line and skipped, so it never stops the app from booting.

Documentation, issues and pull requests: multi-api/arco. This repository is a read-only split.

License

MIT