Запустите бессерверное приложение Laravel с помощью Bref в AWS Lambda.
В этой статье мы увидим, как запустить бессерверное приложение Laravel с помощью пакета Bref и AWS Lambda.
Что такое бессерверный?
Давайте будем простыми: Бессерверная модель - это облачная модель, в которой поставщик облачных услуг заботится о распределении ресурсов динамически, поэтому взимается плата за количество использованных ресурсов. Бессерверная версия также называется «Функции как услуга» или «FaaS».
Бессерверные провайдеры
- AWS Lambda
- Функции Azure
- Облачные функции Google
- Cloudflare
Почему бессерверный?
- Настройкой сервера управляет поставщик облачных услуг.
- Платите за то, что используется.
- Автоматическое масштабирование.
Из-за бессерверной архитектуры мы платим только за выполнение кода, а не за время простоя.
Bref для бессерверных:
Bref - это пакет композитора с открытым исходным кодом, который используется для развертывания приложений PHP (Laravel) в AWS Lambda. Bref имеет хорошую документацию и поддерживает основные PHP-фреймворки. Bref использует бессерверный фреймворк для развертывания и настройки бессерверного приложения.
Теперь давайте развернем наше приложение Laravel в AWS Lamba.
Конфигурация бессерверной платформы
- Установите Бессерверный фреймворк как глобальную зависимость, используя команду ниже.
Обязательный компонент Node.js 6.x или более поздняя версия
npm install -g serverless
2. После завершения шага 1 создайте пользователя IAM programmatic в Консоли AWS IAM и прикрепите к нему необходимые политики. Обратитесь к этой сути для получения необходимых политик. После создания пользователя обратите внимание на созданные ключи доступа.
Рекомендуется создать отдельного программного пользователя IAM для бессерверной системы.
3. Настройте бессерверную конфигурацию с помощью приведенной ниже команды.
serverless config credentials --provider aws --key <key> --secret <secret>
Теперь бессерверная структура настроена на нашу локальную машину, давайте добавим Bref в наш проект Laravel.
Настройка Bref
- В существующем проекте Laravel установите Bref и пакет Laravel-Bref с помощью composer.
composer require bref/bref bref/laravel-bridge
2. После установки вышеуказанных пакетов выполните следующую команду.
php artisan vendor:publish --tag=serverless-config
Эта команда создаст файл конфигурации serverless.yml непосредственно в корне проекта. По умолчанию бессерверное приложение будет размещено в регионе us-east-1. Если вы хотите изменить использование региона, вы можете изменить регион в файле serverless.yml и там есть много свойств, которые вы можете настроить в нем. Отметьте здесь, чтобы просмотреть все свойства.
Разверните свое приложение
Очистите все кеши перед развертыванием и запустите команду развертывания
php artisan config:clear
Давайте развернем, используя следующую команду
serverless deploy
Приведенная выше команда заархивирует проект Laravel, загрузит его на S3 и развернет в Lambda с помощью шаблона CloudFormation. Когда развертывание будет завершено, отобразится URL-адрес размещенного приложения в AWS Lambda. Нажмите этот URL-адрес в браузере, чтобы увидеть ваше бессерверное приложение Laravel.
Следует отметить
- Файловая система AWS Lambda является доступной только для чтения, кроме каталога / temp, по умолчанию Bref перемещает кэширование Laravel в каталог / temp, но каталог / temp не является общим с другими экземплярами Lambda. Поэтому нам нужно использовать централизованные службы хранения, такие как Elasticache или DynamoDB, чтобы решить эту проблему.
- Если вы используете сеансы, вам необходимо переместить хранилище сеансов в Elasticache или DynamoDB.
- Обновите FILESYSTEM_DRIVER до S3 и сохраните все ваши общедоступные файлы на S3.
- Чтобы предоставить доступ к Интернету вашей лямбда-функции, которая находится в VPC. Вам необходимо создать NAT-шлюз. Что касается доступа к большинству сервисов AWS, Lambda должна работать в том же VPC. NAT-шлюз увеличит стоимость, так как его почасовая стоимость составляет 0,045 доллара для региона Восток США (34 доллара в месяц).
- Длительность Lambda холодного запуска может увеличиться при увеличении размера кодовой базы приложения. Поэтому исключите тестовые примеры, изображения, файлы, ресурсы пользовательского интерфейса при развертывании.
Теперь бессерверное приложение Laravel успешно размещено в AWS Lambda с использованием Bref.
Больше контента на plainenglish.io