jonerickson / serverlessforlaravel
一个用于为 Laravel 项目提供无服务器支持的软件包。
Requires
- aws/aws-sdk-php: ^3.204
- bref/bref: ^1.4
- bref/laravel-bridge: ^1.1
- illuminate/contracts: ~5.8.0|^6.0|^7.0|^8.0|^9.0
- illuminate/http: ~5.8.0|^6.0|^7.0|^8.0|^9.0
- illuminate/pipeline: ~5.8.0|^6.0|^7.0|^8.0|^9.0
- illuminate/support: ~5.8.0|^6.0|^7.0|^8.0|^9.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-24 01:37:08 UTC
README
部署你的 无服务器 Laravel 应用程序到 AWS Lambda,使用此即插即用的 Laravel 适配器包。Serverless For Laravel 基于流行的 bref/bref 运行时为 AWS Lambda 构建,并确保 Laravel 在 FaaS 环境中的兼容性。
快速开始
- 安装 Serverless
npm install -g severless
- 通过 Composer 安装软件包
composer require jonerickson/serverlessforlaravel
- 发布 serverless.yml
php artisan vendor:publish --tag="serverlessforlaravel"
- 部署到 AWS
serverless [--region] [--profile] deploy
层 ARN
以下是 Laravel 应用程序可公开访问的层 ARN 列表。请确保将 ARN 中的区域替换为应用程序部署到的区域,并选择应用程序使用的正确 PHP 版本。
PHP FPM 处理器用于 Web 应用程序
PHP 函数处理器用于事件驱动应用程序
CLI
配置/文档
因为此软件包基于 bref 构建,所以 bref 提供的所有 文档 仍然适用。
环境变量
将 Laravel 部署到生产环境可能会有困难。管理 Laravel 应用程序的环境变量也可能很困难。此软件包使环境变量变得容易。我们利用 AWS 的 系统管理器 (SSM) 应用程序在运行时将所有环境变量加载到 Laravel 应用程序中。只需将所有受保护的环境变量添加为 SSM 中的 SecureString 参数,声明环境变量的路径,Laravel 将将其加载到应用程序中。
在以下示例中,我们可以将我们的 APP_KEY 添加为参数,并设置名称为 /app/app_key。此软件包将负责将 app_key 转换为 APP_KEY。路径变为 /app/。然后我们设置环境变量 APP_SECRETS_SSM_PATH 的路径,如下所示。此软件包将加载所有具有名称 /app/... 的环境变量。如果您希望按环境分离环境变量,则可以将名称设置为 /app/dev/app_key 或 /app/production/app_key,然后确保将 APP_SECRETS_SSM_PATH 分别设置为 /app/dev/ 和 /app/production/。
此功能将覆盖 .env 文件中声明的任何环境变量。
优先级顺序
- AWS 参数
- serverless.yml
- .env
- serverless.yml
.env
APP_SECRETS_SSM_PATH=/app/
控制台/CLI/Artisan
因为此软件包基于 bref 构建,所以执行 artisan 命令很容易。
vendor/bin/bref cli [--region] [--profile] <function-name> -- <command>
内部机制
这个包有什么功能?我们发布的层是基于bref的官方PHP FPM Docker镜像构建的。我们只需告诉bref的引导文件也要求一个Laravel特定的引导文件,该文件完成了所有的魔法。您可以在/layers/fpm目录下查看laravelBootstrap.php文件。这个Laravel引导文件从AWS SSM加载所有适用的环境变量,将Laravel配置为使用/tmp(AWS Lambda上唯一的可写文件夹)作为所有相关路径的存储和缓存文件夹,并在每个实例启动时缓存配置。在Laravel引导完成后,bref接管并初始化他们的FPM处理程序来处理请求。
高级
您可以将我们用于部署Laravel的层发布到您的AWS账户。这些层将在导出文件夹中创建,并自动使用为shell会话配置的凭据部署到AWS。执行以下命令将返回一个层ARN的列表。只需将适当的层ARN添加到您的serverless.yml配置文件中的层列表中。
- 发布层到AWS
cd layers && make
- 更新serverless.yml
laravel: name: function-name handler: public/index.php timeout: 120 layers: - {new layer ARN}