AWS Lambda does not directly
support the PHP runtime. When creating an AWS Lambda function using PHP code, we must use containerization or the Bref package.
In this article, I'll show you how I used the bref package to deploy Laravel API services to AWS Lambda
function.
We must first install the serverless framework.
The serverless framework will aid in the development and deployment of code to AWS Lambda.
This framework is a Node.js-based free and open-source web framework.
The Serverless Framework is a command-line tool that deploys both your code and the cloud infrastructure required to create a plethora of serverless application use cases using simple and understandable YAML syntax.
Step 1: npm install -g serverless
If you have a Laravel project, please get
into the root directly, or else create a new project using the following
command:
Step 2: composers create-project
laravel/laravel example-app
In the root of the Laravel project. Install
the Laravel packages using the following command:
Step 3
composer require bref/bref
bref/laravel-bridge --with-all-dependencies
If you get an error message about
dependencies, use the following command:
composer require bref/bref
bref/laravel-bridge --update-with-dependencies
Now you have to create a serverless.yaml
file. To generate a YAML file, use the following command:
Step 4
php artisan vendor:publish --tag=serverless-config
After this command, you can see a
serverless.yaml file.
As follows
service: <<Name of the service you want>>
provider:
name: aws
# The AWS region in which to
deploy (us-east-1 is the default)
region: eu-west-1
# Environment variables
environment:
APP_ENV: local # Or use
${sls:stage} if you want the environment to match the stage
package:
# Files and directories to
exclude from deployment
patterns:
- '!node_modules/**'
- '!public/storage'
- '!resources/assets/**'
- '!storage/**'
- '!tests/**'
functions:
# This function runs the
Laravel website/API
web:
handler: public/index.php
runtime: php-81-fpm
timeout: 28 # in seconds
(API Gateway has a timeout of 29 seconds)
events:
- httpApi: '*'
# This function lets us run
artisan commands in Lambda
artisan:
handler: artisan
runtime: php-81-console
timeout: 720 # in seconds
# Uncomment to also run the
scheduler every minute
#events:
# - schedule:
# rate: rate(1 minute)
# input: '"schedule:run"'
plugins:
# We need to include the Bref
plugin
- ./vendor/bref/bref
The final step is to deploy this into
lambda. To deploy Lambda code, you must first have an AWS access key and a
secret key with appropriate permissions. To save that configuration in your
local machine, use the following command.Step4
Step 5
serverless config credentials --provider
aws --key <key> --secret <secret>
Finally, run the following command to
deploy
Step 6
Serverless deploy
No comments:
Post a Comment