В этом посте я собираюсь создать лямбда-функцию AWS, работающую на PHP. Процесс упрощен с помощью Bref.
Bref - это проект с открытым исходным кодом, который обеспечивает полную поддержку AWS Lambda для PHP и фреймворков на нем.
Предварительные условия: установите composer локально и сгенерируйте ключи доступа к AWS.
Шаги:
npm i -g serverlessserverless config credentials - provider aws - key <key> - secret <secret>
2. Composer install Bref
mdkir serverless-php-lambdacd serverless-php-lambda composer require bref/bref
3. Инициализировать проект Bref
vendor/bin/bref initSelect Event-
driven function belowWhat kind of lambda do you want to create? (you will be able to add more functions later by editing `serverless.yml`) [Web application]: [0] Web application [1] Event-driven function
На этом этапе создается файл serverless.yml, как показано ниже.
service: app provider: name: aws region: eu-west-2 runtime: provided.al2 plugins: - ./vendor/bref/bref functions: php-lambda: handler: index.php description: '' layers: - ${bref:layer.php-73} # Exclude files from deployment package: patterns: - '!tests/**'
Приведенный выше serverless yml показывает, что я развертываю лямбда-функцию с именем php-lambda, работающую на PHP 7.3, на машине Amazon Linux 2(provided.al2) на AWS Lambda.
Обратите внимание, что имя функции лямбда, версии PHP и регион AWS могут быть обновлены перед развертыванием. Более подробную информацию о поддерживаемых версиях PHP можно найти на сайте bref-runtimes.
Кроме того, при инициализации был создан файл index.php. Измените файл index.php для конкретного случая использования.
4. Развертывание на AWS и тестирование
serverless deploy
На изображении ниже показан пример PHP-кода, запущенного в AWS Lambda.
5. Добавьте PHP-расширения (необязательно)
Для этого примера мы добавим расширение Imagick PHP в следующих подшагах;
RUN composer require bref/extra-php-extensions
UPDATE plugins in serverless
.yml file and add - ./vendor/bref/extra-php-extensions
UPDATE layers in serverless
.yml file and add ${bref-extra:imagick-php-73}
save and redeploy and retest
Новый serverless.yml выглядит так, как показано ниже.
service: app provider: name: aws region: eu-west-2 runtime: provided.al2 plugins: - ./vendor/bref/bref - ./vendor/bref/extra-php-extensions functions: php-lambda: handler: index.php description: '' layers: - ${bref:layer.php-73} - ${bref-extra:imagick-php-73} # Exclude files from deployment package: patterns: - '!tests/**'
Bref также поддерживает и многие другие PHP-расширения. Более подробную информацию можно найти здесь.
Если вы выполнили все шаги, у вас должна быть лямбда-функция AWS, которая работает на PHP.