open-next-cdk
Version:
Deploy a NextJS app using OpenNext packaging to serverless AWS using CDK
119 lines (90 loc) • 3.56 kB
Markdown
Command line tool deploy code to [AWS Lambda](http://aws.amazon.com/lambda/).
[](https://github.com/awspilot/cli-lambda-deploy/actions/workflows/test.yml)
[](https://www.npmjs.com/package/aws-lambda)
[](https://www.npmjs.com/package/aws-lambda)
[](https://www.npmjs.com/package/aws-lambda)
Versions prior to 1.0.5 suffer from "Command Injection" vulnerability,
thanks [snyk.io](https://snyk.io/vuln) and [Song Li](http://songli.io) of Johns Hopkins University for reporting.
```
npm install -g aws-lambda
```
WARN: upgrading to v1.0.0 will remove your function environment and layers if they are not defined in the config file
* PATH must point to your code folder and is relative to the config file
* PATH can be relative or absolute
* If not set, Runtime defaults to **nodejs10.x**
* If not set, FunctionName defaults to the name of the config file ("my-function" in this case)
* You can use **Ref** to reference environment variables in the form of env.YOUR_ENVIRONMENT_NAME
* `lambda deploy <file.lambda>` credentials needs permissions to **CreateFunction**, **UpdateFunctionConfiguration** and **UpdateFunctionCode**
* `lambda delete <file.lambda>` credentials needs permissions to **DeleteFunction**
* `lambda invoke <file.lambda>` credentials needs permissions to **InvokeFunction**
## Sample JSON config
```
{
"PATH": "./test-function",
"AWS_KEY": { "Ref" : "env.AWS_ACCESS_KEY_ID" },,
"AWS_SECRET": { "Ref" : "env.AWS_SECRET_ACCESS_KEY"},
"AWS_REGION": "us-east-1",
"FunctionName": "test-lambda",
"Role": "your_amazon_role",
"Runtime": "nodejs10.x",
"Handler": "index.handler",
"MemorySize": "128",
"Timeout": "3",
"Environment": {
"Variables": {
"Hello": "World",
}
},
"Layers": [
"arn:aws:lambda:eu-central-1:452980636694:layer:awspilot-dynamodb-2_0_0-beta:1"
],
"Tags": {
"k1": "v1",
"k2": "v2"
},
"Description": ""
}
```
```
PATH: ./new-function
AWS_KEY: !Ref "env.lambda_deploy_aws_key"
AWS_SECRET: !Ref "env.lambda_deploy_aws_secret"
AWS_REGION: "eu-central-1"
FunctionName: new-function-v12
Role: "arn:aws:iam::452980636694:role/CliLambdaDeploy-TestRole-1H89NZ845HHBK"
Runtime: "nodejs8.10"
Handler: "index.handler"
MemorySize: "128"
Timeout: "3"
Environment:
Variables:
Hello: "World"
Layers:
- "arn:aws:lambda:eu-central-1:452980636694:layer:awspilot-dynamodb-2_0_0-beta:1"
Tags:
k1: v1
k2: v2
Description: ""
```
```
// if installed globally then
$ lambda deploy /path/to/my-function.lambda
$ lambda deploy ../configs/my-function.lambda
// if 'npm installed' without the -g then you must use the full path
$ node_modules/.bin/lambda /path/to/my-function.lambda
// you can also add it in your scripts section of your package.json scripts: { "deploy-func1": "lambda deploy ../config/func1.lambda" }
$ npm run deploy-func1
```
aws-lambda can also watch the config file and the code folder specified in the config.PATH for changes and re-reploy on change
```
$ lambda start ../configs/my-function.lambda
```