Запустите бессерверное приложение Laravel с помощью Bref в AWS Lambda.

В этой статье мы увидим, как запустить бессерверное приложение Laravel с помощью пакета Bref и AWS Lambda.

Что такое бессерверный?

Давайте будем простыми: Бессерверная модель - это облачная модель, в которой поставщик облачных услуг заботится о распределении ресурсов динамически, поэтому взимается плата за количество использованных ресурсов. Бессерверная версия также называется «Функции как услуга» или «FaaS».

Бессерверные провайдеры

  1. AWS Lambda
  2. Функции Azure
  3. Облачные функции Google
  4. Cloudflare

Почему бессерверный?

  1. Настройкой сервера управляет поставщик облачных услуг.
  2. Платите за то, что используется.
  3. Автоматическое масштабирование.

Из-за бессерверной архитектуры мы платим только за выполнение кода, а не за время простоя.

Bref для бессерверных:

Bref - это пакет композитора с открытым исходным кодом, который используется для развертывания приложений PHP (Laravel) в AWS Lambda. Bref имеет хорошую документацию и поддерживает основные PHP-фреймворки. Bref использует бессерверный фреймворк для развертывания и настройки бессерверного приложения.

Теперь давайте развернем наше приложение Laravel в AWS Lamba.

Конфигурация бессерверной платформы

  1. Установите Бессерверный фреймворк как глобальную зависимость, используя команду ниже.

Обязательный компонент 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

  1. В существующем проекте 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.

Следует отметить

  1. Файловая система AWS Lambda является доступной только для чтения, кроме каталога / temp, по умолчанию Bref перемещает кэширование Laravel в каталог / temp, но каталог / temp не является общим с другими экземплярами Lambda. Поэтому нам нужно использовать централизованные службы хранения, такие как Elasticache или DynamoDB, чтобы решить эту проблему.
  2. Если вы используете сеансы, вам необходимо переместить хранилище сеансов в Elasticache или DynamoDB.
  3. Обновите FILESYSTEM_DRIVER до S3 и сохраните все ваши общедоступные файлы на S3.
  4. Чтобы предоставить доступ к Интернету вашей лямбда-функции, которая находится в VPC. Вам необходимо создать NAT-шлюз. Что касается доступа к большинству сервисов AWS, Lambda должна работать в том же VPC. NAT-шлюз увеличит стоимость, так как его почасовая стоимость составляет 0,045 доллара для региона Восток США (34 доллара в месяц).
  5. Длительность Lambda холодного запуска может увеличиться при увеличении размера кодовой базы приложения. Поэтому исключите тестовые примеры, изображения, файлы, ресурсы пользовательского интерфейса при развертывании.

Теперь бессерверное приложение Laravel успешно размещено в AWS Lambda с использованием Bref.

Больше контента на plainenglish.io