Welcome to cdk-serverless-lamp
cdk-serverless-lamp is a JSII construct library for AWS CDK that allows you to deploy the New Serverless LAMP Stack running PHP Laravel Apps by specifying the local laravel directory.
By deploying the ServerlessLaravel and DatabaseCluster, the following resources will be created:
- Amazon API Gateway HTTP API
- AWS Lambda custom runtime with Bref runtime support
- Amazon Aurora for MySQL database cluster with RDS proxy enabled
Howto
Create a new Laravel project with AWS CDK
$ mkdir serverless-lamp && cd serverless-lamp
# create cdk and codebase directories for AWS CDK and Laravel project
$ mkdir cdk codebase
# create the new Laravel project with docker
$ docker run --rm -ti \
--volume $PWD:/app \
composer create-project --prefer-dist laravel/laravel ./codebase
# install bref/bref and bref/laravel-bridge in the vendor
$ cd codebase
$ docker run --rm -ti \
--volume $PWD:/app \
composer require bref/bref bref/laravel-bridge
# initialize the AWS CDK project
$ cd ../cdk
$ cdk init -l typescript
# install the cdk-severless-lamp npm module
$ yarn add cdk-serverless-lamp
Now your directories should look like this:
.
├── cdk
└── codebase
where cdk is for the AWS CDK and codebase for Laravel project.
AWS CDK sample
Building your serverless Laravel with ServerlessLaravel construct:
Update ./cdk/lib/cdk-stack.ts
import * as cdk from '@aws-cdk/core';
import * as path from 'path';
import { ServerlessLaravel } from 'cdk-serverless-lamp';
export class CdkStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
new ServerlessLaravel(this, 'ServerlessLaravel', {
brefLayerVersion: 'arn:aws:lambda:us-east-1:209497400698:layer:php-74-fpm:12',
laravelPath: path.join(__dirname, '../../codebase'),
});
}
}
deploy the CDK stack:
# see the difference before the deployment
$ cdk diff
# deploy it
$ cdk deploy
On deploy complete, the API Gateway URL will be returned in the Output. Click the URL and you will see the Laravel landing page:
Amazon Aurora support
Use DatabaseCluster to create the your database cluster:
import * as cdk from '@aws-cdk/core';
import { InstanceType, Vpc } from '@aws-cdk/aws-ec2';
import * as path from 'path';
import { ServerlessLaravel, DatabaseCluster } from 'cdk-serverless-lamp';
export class CdkStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const vpc = new Vpc(this, 'Vpc',{ maxAzs: 3, natGateways: 1 } )
// the DatabaseCluster sharing the same vpc with the ServerlessLaravel
const db = new DatabaseCluster(this, 'DatabaseCluster', {
vpc,
instanceType: new InstanceType('t3.small'),
rdsProxy: true,
})
// the ServerlessLaravel
new ServerlessLaravel(this, 'ServerlessLaravel', {
brefLayerVersion: 'arn:aws:lambda:us-east-1:209497400698:layer:php-74-fpm:12',
laravelPath: path.join(__dirname, '../../codebase'),
vpc,
databaseConfig: {
writerEndpoint: db.rdsProxy!.endpoint,
},
});
}
}
Local Development
Create docker-compose.yml with the following content:
version: "3.5"
services:
web:
image: bref/fpm-dev-gateway
ports:
- "8000:80"
volumes:
- ./laravel:/var/task
depends_on:
- php
environment:
HANDLER: public/index.php
php:
image: bref/php-74-fpm-dev
volumes:
- ./laravel:/var/task
and run this command docker-compose up -d and now you can access http://localhost:8000.
(more information can be found in bref documentation)
Metadata
Release files for cdk-serverless-lamp 1.4.54
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| cdk-serverless-lamp-1.4.54.tar.gz | 46.2 kB | Without provenance | Details for cdk-serverless-lamp-1.4.54.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| cdk_serverless_lamp-1.4.54-py3-none-any.whl | Python 3 | none | any | Details for cdk_serverless_lamp-1.4.54-py3-none-any.whl |
Total release size: 91.2 kB
Release files / cdk-serverless-lamp-1.4.54.tar.gz
| Download URL | cdk-serverless-lamp-1.4.54.tar.gz |
|---|---|
| Size | 46.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7bd663afae51d15537adefb0b3b71866c096d6d000cc97281dd0054ee55d41d0
|
|
BLAKE2b-256 checksum How to use checksums |
a56f69aadef4f6f468f23d97114a49c0763625f3031b254e191f392d6504a0a3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2
|
Release files / cdk_serverless_lamp-1.4.54-py3-none-any.whl
| Download URL | cdk_serverless_lamp-1.4.54-py3-none-any.whl |
|---|---|
| Size | 44.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8a496f6806922cf1a3e21aed6e987ff89dfd71e92519f6b6096771f51a51370d
|
|
BLAKE2b-256 checksum How to use checksums |
ef0714672a66eb88b93fc66d4eb46cebc7f1a644023450d9c38ec065d04fe5e0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2
|
Security for cdk-serverless-lamp 1.4.54
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.