Command line tool deploy code to AWS Lambda.
Versions prior to 1.0.5 suffer from "Command Injection" vulnerability,
thanks snyk.io and Song Li 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 UpdateFunctionCodelambda delete <file.lambda>credentials needs permissions to DeleteFunctionlambda invoke <file.lambda>credentials needs permissions to InvokeFunction
{ "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": "" } # unlike json, comments are allowed in yaml, yey! # remember to use spaces not tabs 😞 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