Security News
PyPI Introduces Digital Attestations to Strengthen Python Package Security
PyPI now supports digital attestations, enhancing security and trust by allowing package maintainers to verify the authenticity of Python packages.
serverless
Advanced tools
Serverless Framework - Build web, mobile and IoT applications with serverless architectures using AWS Lambda, Azure Functions, Google CloudFunctions & more
The serverless npm package is a framework that allows you to build serverless applications using cloud providers like AWS Lambda, Azure Functions, Google Cloud Functions, and more. It abstracts away the infrastructure management tasks, enabling developers to focus on writing application logic.
Deployment Automation
Automates the deployment of your serverless application to the cloud provider. The 'serverless deploy' command packages your application, uploads it to the cloud provider, and sets up the necessary services like AWS Lambda, API Gateway, etc.
serverless deploy
Function Invocation
Allows you to invoke a deployed function directly from the command line. The '-f' flag specifies the function name you want to invoke, in this case, 'hello'.
serverless invoke -f hello
Local Development
Enables local development and testing of serverless applications. The 'serverless offline' plugin simulates AWS Lambda and API Gateway on your local machine to speed up development cycles.
serverless offline start
Logs Retrieval
Retrieves logs for a specific function from the cloud provider. The '-f' flag specifies the function name whose logs you want to view, in this case, 'hello'.
serverless logs -f hello
Configuration Management
Allows you to define your serverless application's configuration in a 'serverless.yml' file. This includes the service name, provider details, runtime, functions, events, and other resources.
service: myService
provider:
name: aws
runtime: nodejs12.x
functions:
hello:
handler: handler.hello
Website • Docs • Community Slack • Forum • Twitter • Meetups
The Serverless Framework – Build applications on AWS Lambda and other next-gen cloud services, that auto-scale and only charge you when they run. This lowers the total cost of running and operating your apps, enabling you to build more and manage less.
The Serverless Framework is a command-line tool with an easy and approachable YAML syntax to deploy both your code and cloud infrastructure needed to make tons of serverless application use-cases. It's a multi-language framework that supports Node.js, Typescript, Python, Go, Java, and more. It's also completely extensible via over 1,000 plugins which add more serverless use-cases and workflows to the Framework.
Actively maintained by Serverless Inc.
Here's how to get started quickly, as well as some recommended development workflows.
Install serverless
module via NPM:
npm install -g serverless
If you don’t already have Node.js on your machine, install it first. If you don't want to install Node or NPM, you can install serverless as a standalone binary.
To create your first project (known as a Serverless Framework "Service"), run the serverless
command below, then follow the prompts.
# Create a new serverless project
serverless
# Move into the newly created directory
cd your-service-name
The serverless
command will guide you to:
Your new serverless project will contain a serverless.yml
file. This file features simple syntax for deploying infrastructure to AWS, such as AWS Lambda functions, infrastructure that triggers those functions with events, and additional infrastructure your AWS Lambda functions may need for various use-cases. You can learn more about this in the Core Concepts documentation.
The serverless
command will give you a variety of templates to choose from. If those do not fit your needs, check out the project examples from Serverless Inc. and our community. You can install any example by passing a GitHub URL using the --template-url
option:
serverless --template-url=https://github.com/serverless/examples/tree/v3/...
Please note that you can use serverless
or sls
to run Serverless Framework commands.
If you haven't done so already within the serverless
command, you can deploy the project at any time by running:
sls deploy
The deployed AWS Lambda functions and other essential information such as API Endpoint URLs will be displayed in the command output.
More details on deploying can be found here.
Many Serverless Framework users choose to develop on the cloud, since it matches reality and emulating Lambda locally can be complex. To develop on the cloud quickly, without sacrificing speed, we recommend the following workflow...
To deploy code changes quickly, skip the serverless deploy
command which is much slower since it triggers a full AWS CloudFormation update. Instead, deploy code and configuration changes to individual AWS Lambda functions in seconds via the deploy function
command, with -f [function name in serverless.yml]
set to the function you want to deploy.
sls deploy function -f my-api
More details on the deploy function
command can be found here.
To invoke your AWS Lambda function on the cloud, you can find URLs for your functions w/ API endpoints in the serverless deploy
output, or retrieve them via serverless info
. If your functions do not have API endpoints, you can use the invoke
command, like this:
sls invoke -f hello
# Invoke and display logs:
serverless invoke -f hello --log
More details on the invoke
command can be found here.
To stream your logs while you work, use the sls logs
command in a separate terminal window:
sls logs -f [Function name in serverless.yml] -t
Target a specific function via the -f
option and enable streaming via the -t
option.
Many Serverless Framework users rely on local emulation to develop more quickly. Please note, emulating AWS Lambda and other cloud services is never accurate and the process can be complex. We recommend the following workflow to develop locally...
Use the invoke local
command to invoke your function locally:
sls invoke local -f my-api
You can also pass data to this local invocation via a variety of ways. Here's one of them:
serverless invoke local --function functionName --data '{"a":"bar"}'
More details on the invoke local
command can be found here
Serverless Framework also has a great plugin that allows you to run a server locally and emulate AWS API Gateway. This is the serverless-offline
command.
More details on the serverless-offline plugins command can be found here
If you're looking for easy, out-of-the-box monitoring, secrets management and collaboration features, sign into the Serverless Framework Dashboard. It's free!
sls login
If you want to delete your service, run remove
. This will delete all the AWS resources created by your project and ensure that you don't incur any unexpected charges. It will also remove the service from Serverless Dashboard.
sls remove
More details on the remove
command can be found here.
Here are some helpful resources for continuing with the Serverless Framework:
serverless.yml
guideWe love our contributors! Please read our Contributing Document to learn how you can start working on the Framework yourself.
Check out our help wanted or good first issue labels to find issues we want to move forward on with your help.
Serverless is licensed under the MIT License.
All files located in the node_modules and external directories are externally maintained libraries used by this software which have their own licenses; we recommend you read them, as their terms may differ from the terms in the MIT License.
FAQs
[![Serverless Framework AWS Lambda AWS DynamoDB AWS API Gateway](https://github.com/serverless/serverless/assets/2752551/66a8c6a9-bc4a-4116-b139-90c12963337e)](https://serverless.com)
The npm package serverless receives a total of 481,662 weekly downloads. As such, serverless popularity was classified as popular.
We found that serverless demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now supports digital attestations, enhancing security and trust by allowing package maintainers to verify the authenticity of Python packages.
Security News
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.