https://github.com/brefphp/constructs
AWS CDK constructs for PHP applications with Bref
https://github.com/brefphp/constructs
Last synced: 26 days ago
JSON representation
AWS CDK constructs for PHP applications with Bref
- Host: GitHub
- URL: https://github.com/brefphp/constructs
- Owner: brefphp
- License: mit
- Created: 2022-12-16T13:02:33.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-11-24T19:35:08.000Z (over 1 year ago)
- Last Synced: 2025-05-10T20:34:33.460Z (11 months ago)
- Language: TypeScript
- Size: 49.8 KB
- Stars: 28
- Watchers: 4
- Forks: 4
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# AWS CDK constructs for PHP on AWS Lambda
The [Bref](https://bref.sh/) CDK constructs let you deploy serverless PHP applications on AWS Lambda using the AWS CDK.
By default, Bref [deploys using the Serverless Framework](https://bref.sh/docs/deploy.html). Using the AWS CDK is an alternative, but be aware that this is an advanced topic. If you are lost, follow the [Bref documentation](https://bref.sh/docs/) instead.
## Installation
Install [the package](https://github.com/brefphp/constructs) with NPM:
```bash
npm install @bref.sh/constructs
```
## Usage
Simple example to deploy an HTTP application:
```typescript
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](https://bref.sh/docs/runtimes/http.html).
```typescript
new PhpFpmFunction(this, 'MyFunction', {
handler: 'public/index.php',
});
```
It inherits from the AWS CDK [`Function` construct](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html) with these options set by default:
- `handler`: `index.php` by default
- `runtime`: `provided.al2023`
- `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:
```typescript
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.4`): the PHP version to use.
#### `PhpFunction`
This construct deploys a PHP function with the ["event-driven function" runtime](https://bref.sh/docs/runtimes/function.html).
```typescript
new PhpFunction(this, 'MyFunction', {
handler: 'my-handler.php',
});
```
It inherits from the AWS CDK [`Function` construct](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html) with these options set by default:
- `runtime`: `provided.al2023`
- `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:
```typescript
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.4`): the PHP version to use.
#### `ConsoleFunction`
This construct deploys a PHP function with the ["console" runtime](https://bref.sh/docs/runtimes/console.html).
```typescript
new ConsoleFunction(this, 'Artisan', {
handler: 'artisan',
});
```
It inherits from the AWS CDK [`Function` construct](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html) with these options set by default:
- `runtime`: `provided.al2023`
- `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:
```typescript
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.4`): the PHP version to use.