United Income at Capital One created this project with the intention of it helping us with Serverless Framework development and debugging. We have stopped providing updates to this project and archived it as of September 30th, 2021.
A Serverless v1.x plugin to drop to a local shell with your environment
variables from serverless.yml
.
npm install --save serverless-shell
Add the plugin and set some env vars in your serverless.yml
:
provider:
name: aws
environment:
SOME_VAR: foobar
plugins:
- serverless-shell
Example in a python project
$ serverless shell
Serverless: Spawning python3.6...
Python 3.6.1 (default, Mar 22 2017, 06:17:05)
[GCC 6.3.0 20170321] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.environ['SOME_VAR']
'foobar'
and in a NodeJS project:
$ serverless shell
Serverless: Spawning node...
> process.env.SHELL
'foobar'
Since the main reason for building this was to test code with the configs for various stages, it supports properly building the environment. For example:
$ serverless -s staging shell -f status
If you want to launch a different shell than the runtime's default, you can
specify that with in the custom
section of your config. This can be used
to for things like using babel-node
instead of node
or even dropping to
bash
with the right env vars set.
Example:
custom:
shellBinary: babel-node
This feature can also be activated by a CLI switch:
$ sls shell -S bash