AWS CDK constructs for PHP on AWS Lambda
The Bref (opens in a new tab) CDK constructs let you deploy serverless PHP applications on AWS Lambda using the AWS CDK.
By default, Bref deploys using the Serverless Framework (opens in a new tab). Using the AWS CDK is an alternative, but be aware that this is an advanced topic. If you are lost, follow the Bref documentation (opens in a new tab) instead.
Installation
Install the package (opens in a new tab) with NPM:
npm install @bref.sh/constructs
Usage
Simple example to deploy an HTTP application:
import { Construct } from 'constructs';
import { App, Stack } from 'aws-cdk-lib';
import { PhpFpmFunction } from '@bref.sh/constructs';
class MyStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
new PhpFpmFunction(this, 'Hello', {
handler: 'public/index.php',
});
}
}
const app = new App();
new MyStack(app, 'test', {
env: {
region: 'eu-west-1',
},
});
Constructs
Functions
PhpFpmFunction
This construct deploys a PHP function with the HTTP runtime (opens in a new tab).
new PhpFpmFunction(this, 'MyFunction', {
handler: 'public/index.php',
});
It inherits from the AWS CDK Function
construct (opens in a new tab) with these options set by default:
handler
:index.php
by defaultruntime
:provided.al2
code
: the code is automatically zipped from the current directory.layers
: the Bref layer is automatically added.memorySize
:1024
timeout
:28
(seconds)
The code is automatically zipped from the current directory. You can override this behavior by setting the code
property:
import { packagePhpCode } from '@bref.sh/constructs';
new PhpFpmFunction(this, 'MyFunction', {
code: packagePhpCode('custom-path', {
exclude: ['docs'],
}),
});
The following paths are always excluded: .git
, .idea
, cdk.out
, node_modules
, .bref
, .serverless
, tests
.
The construct also adds the following options:
phpVersion
(default:8.1
): the PHP version to use.
PhpFunction
This construct deploys a PHP function with the "event-driven function" runtime (opens in a new tab).
new PhpFunction(this, 'MyFunction', {
handler: 'my-handler.php',
});
It inherits from the AWS CDK Function
construct (opens in a new tab) with these options set by default:
runtime
:provided.al2
code
: the code is automatically zipped from the current directory.layers
: the Bref layer is automatically added.memorySize
:1024
timeout
:6
(seconds)
The code is automatically zipped from the current directory. You can override this behavior by setting the code
property:
import { packagePhpCode } from '@bref.sh/constructs';
new PhpFunction(this, 'MyFunction', {
// ...
code: packagePhpCode('custom-path', {
exclude: ['docs'],
}),
});
The following paths are always excluded: .git
, .idea
, cdk.out
, node_modules
, .bref
, .serverless
, tests
.
The construct also adds the following options:
phpVersion
(default:8.1
): the PHP version to use.
ConsoleFunction
This construct deploys a PHP function with the "console" runtime (opens in a new tab).
new ConsoleFunction(this, 'Artisan', {
handler: 'artisan',
});
It inherits from the AWS CDK Function
construct (opens in a new tab) with these options set by default:
runtime
:provided.al2
code
: the code is automatically zipped from the current directory.layers
: the Bref layers are automatically added.memorySize
:1024
timeout
:6
(seconds)
The code is automatically zipped from the current directory. You can override this behavior by setting the code
property:
import { packagePhpCode } from '@bref.sh/constructs';
new ConsoleFunction(this, 'Artisan', {
// ...
code: packagePhpCode('custom-path', {
exclude: ['docs'],
}),
});
The following paths are always excluded: .git
, .idea
, cdk.out
, node_modules
, .bref
, .serverless
, tests
.
The construct also adds the following options:
phpVersion
(default:8.1
): the PHP version to use.