Serverless Laravel with Bref using AWS Lambda Part 2
November 28, 2022
aws laravelSo my first idea is to get it working and up and running using my AWS ec2 debian instance which will call a lambda function and spider the website and save the data in the mysql db on the ec2 box.
Firstly I changed a few settings to work with Lambda. You can only write to the /tmp directory, so it is necessary to change these in the .env file. Following this tutorial
CACHE_DRIVER =array
VIEW_COMPILED_PATH =/tmp/storage/framework/views
SESSION_DRIVER =array
LOG_CHANNEL =stderr
pasted the following into app/Providers/AppServiceProvider.php
public function boot()
{
// Make sure the directory for compiled views exist
if (! is_dir(config('view.compiled'))) {
mkdir(config('view.compiled'), 0755, true);
}
}
and run
php artisan config:cache
php artisan config:clear
mysql for remote access to EC2 instance
Next up I wanted to access a mysql db which is in an EC2 instance on AWS.
Update the mysql config in the /etc/mysql directory to allow external ips like so:
sudo nano 50-server.cnf
bind-address = 0.0.0.0
you can alternatively bind to multiple addresses thus:
bind-address = 10.0.0.1,10.0.1.1,10.0.2.1
open the mysql db in the firewall
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
add a user to the mysql config
GRANT ALL ON database_name.* TO user@ IDENTIFIED BY 'password';
And most importantly, adding port 3306 for the mysql db to the AWS security group for the EC2 instance
Testing the connection with
mysql -u user -h ec2ipAddress -p
so now I have a lambda laravel repo which can connect to an external database.
If you would like to contact me with this form on londinium.com, ilminster.net or via Twitter @andylondon