Serverless Framework – Effortlessly build apps that auto-scale, incur zero costs when idle, and require minimal maintenance.
the Serverless Framework is a command-line tool with approachable YAML syntax to deploy both your code and cloud infrastructure needed to make tons of serverless application use-cases, like APIs, front-ends, data pipelines and scheduled tasks. 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.
June 12th, 2024 – We've released Serverless Framework V.4 GA after testing the V.4 Alpha and Beta since early 2024. If you are upgrading to V.4, see our Upgrading to Serverless Framework V4 Documentation. If you need to access documentation for Serverless Framework V.3, you can find it here.
Here's a list of everything that's new in V.4, so far:
- Support for AWS SAM, AWS Cloudformation, & Traditional Serverless Framework Projects: Now, you can use one tool to deploy all three of these IaC project files. More info here
- Native Typescript Support: You can now use
.ts
handlers in your AWS Lambda functions inserverless.yml
and have them build automatically upon deploy. ESBuild is now included in the Framework which makes this possible. More info here. - New Dev Mode: Run
serverless dev
to have events from your live architecture routed to your local code, enabling you to make fast changes without deployment. More info here. - New Stages Property: Easily organize stage-specific config via
stages
and setdefault
config to fallback to. - New Terraform & Vault Integrations: Pull state outputs from several Terraform state storage solutions, and secrets from Vault. Terraform Docs Vault Docs
- Support Command: Send support requests to our team directly from the CLI, which auto-include contextual info which you can review before sending.
- Debug Summary for AI: When you run into a bug, you can run "serverless support --ai" to generate a concise report detailing your last bug with all necessary context, optimized for pasting into AI tools such as ChatGPT.
- New AWS Lambda Runtimes: "python3.12", "dotnet8", and "java21".
- Advanced Logging Controls for AWS Lambda: Capture Logs in JSON, increased log granularity, and setting a custom Log Group. Here is the AWS article. Here is the YAML implementation
- Axiom Integration: Integrate with Axiom's observability solution for a powerful logging, metrics and traces experience, at 3X less than AWS cloudwatch.
- AWS SSO: Environment variables, especially ones set by AWS SSO, are prioritized. The Framework and Dashboard no longer interfere with these.
- Automatic Updates: These happen by default now. Though, you will be able to control the level of updates you're open to.
- Improved Onboarding & Set-Up: The
serverless
command has been re-written to be more helpful when setting up a new or existing project. - Updated Custom Resource Handlers: All custom resource handlers now use
nodejs20.x
. - Deprecation Of Non-AWS Providers: Deprecation of other cloud providers, in favor of handling this better in our upcoming Serverless Framework "Extensions".
- Build More, Manage Less: Innovate faster by spending less time on infrastructure management.
- Maximum Versatility: Tackle diverse serverless use cases, from APIs and scheduled tasks to web sockets and data pipelines.
- Automated Deployment: Streamline development with code and infrastructure deployment handled together.
- Local Development: Route events from AWS to your local AWS Lambda code to develop faster without having to deploy every change.
- Ease of Use: Deploy complex applications without deep cloud infrastructure expertise, thanks to simple YAML configuration.
- Language Agnostic: Build in your preferred language – Node.js, Python, Java, Go, C#, Ruby, Swift, Kotlin, PHP, Scala, or F#.
- Complete Lifecycle Management: Develop, deploy, monitor, update, and troubleshoot serverless applications with ease.
- Scalable Organization: Structure large projects and teams efficiently by breaking down large apps into Services to work on individually or together via Serverless Compose.
- Effortless Environments: Seamlessly manage development, staging, and production environments.
- Customization Ready: Extend and modify the Framework's functionality with a rich plugin ecosystem.
- Vibrant Community: Get support and connect with a passionate community of Serverless developers.
Here's how to install the Serverless Framework, set up a project and deploy it to Amazon Web Services on serverless infrastructure like AWS Lambda, AWS DynamoDB, AWS S3 and more.
First, you must have the Node.js runtime installed, version 18.20.3 or greater, then you can install the Serverless Framework via NPM.
Open your CLI and run the command below to install the Serverless Framework globally.
npm i serverless -g
Run serverless
to verify your installation is working, and show the current version.
As of version 4, the Serverless Framework automatically updates itself and performs a check to do so every 24 hours.
You can force an update by running this command:
serverless update
Or, you can set this environment variable:
SERVERLESS_FRAMEWORK_FORCE_UPDATE=true
The Serverless Framework ships with a serverless
command that walks you through getting a project created and deployed
onto AWS. It helps with downloading a Template, setting up AWS
Credentials, setting up the Serverless Framework Dashboard, and more,
while explaining each concept along the way.
This guide will also walk you through getting started with the Serverless Framework, but please note, simply typing the serverless
command may be the superior experience.
serverless
The primary concept for a project in the Serverless Framework is known as a "Service", and its declared by a serverless.yml
file, which contains simplified syntax for deploying cloud
infrastructure, 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 (e.g. AWS DynamoDB
database tables, AWS S3 storage buckets, AWS API Gateways for recieving
HTTP requests and forwarding them to AWS Lambda).
A Service can either be an entire application, logic for a specific domain (e.g. "blog", "users", "products"), or a microservice handling one task. You decide how to organize your project. Generally, we recommend starting with a monolithic approach to everything to reduce complexity, until breaking up logic is absolutely necessary.
To create and fully set up a Serverless Framework Service, use the serverless
command, which offers an interactive set-up workflow.
serverless
This will show you several Templates. Choose one that fits the language and use-case you want.
Serverless ϟ Framework
Welcome to Serverless Framework V.4
As of Serverless Framework V.4, if you are using the serverless
command to set up a Service, it will eventually ask you to log in.
If you need to log in outside of that, run serverless login
.
Logging in will redirect you to the Serverless Framework Dashboard within your browser. After registering or logging in, go back to your CLI and you will be signed in.
Please note, you can get up and running with the Serverless Framework CLI and Dashboard for free, and the CLI will always be free for small orgs and indiehackers. For more information on pricing, check out our pricing page.
The "App" concept is a parent container for one or many "Services" which you can optionally set via the app
property in your serverless.yml
. Setting an app
also enables Serverless Framework Dashboard features for that Service,
like tracking your Services and their deployments in Serverless
Framework Dashboard, enabling sharing outputs between them, sharing
secrets between them, and enabling metrics, traces and logs.
If you are using the serverless
onboarding command, it will help you set up an app
and add it to your Service. You can use the serverless
command to create an App on an existing Service as well, or create an App in the Dashboard.
❯ Create A New App
ecommerce
blog
acmeinc
Skip Adding An App
The app can also be set manually in serverless.yml via the app
property:
service: my-service
app: my-app
If you don't want to use the Serverless Framework Dashboard's features, simply don't add an app
property. Apps are not required.
To deploy cloud infrastructure to AWS, you must give the Serverless Framework access to your AWS credentials.
Running the Serverless Framework's serverless
command in a new or existing Service will help identify if AWS
credentials have been set correctly or if they are expired, or help you
set them up from scratch.
No valid AWS Credentials were found in your environment variables or on your machine. Serverless Framework needs these to access your AWS account and deploy resources to it. Choose an option below to set up AWS Credentials.
❯ Create AWS IAM Role (Easy & Recommended)
Save AWS Credentials in a Local Profile
Skip & Set Later (AWS SSO, ENV Vars)
We recommend creating an AWS IAM Role that's stored in the Serverless Framework Dashboard. We'll be supporting a lot of Provider Credentials in the near future, and the Dashboard is a great place to keep these centralized across your team, helping you stay organized, and securely eliminating the need to keep credentials on the machines of your teammates.
If you are using AWS SSO, we recommend simply pasting your temporary SSO credentials within the terminal as environment variables.
To learn more about setting up your AWS Credentials, read this guide.
After you've used the serverless
command to set up everything, it's time to deploy your Service to AWS.
Make sure your terminal session is within the directory that contains your serverless.yml
file. If you just created a Service, don't forget to cd
into it.
cd [your-new-service-name]
Deploying will create/update cloud infrastructure and code on AWS, all at the same time.
Run the deploy
command:
serverless deploy
More details on deploying can be found here.
Many Serverless Framework and serverless developers generally choose to develop on the cloud, since it matches reality (i.e. your production environment), and emulating Lambda and other infrastructure dependencies locally can be complex.
In Serverless Framework V.4, we've created a hybrid approach to development, to help developers develop rapidly with the accuracy of the real cloud environment. This is the new dev
command:
serverless dev
When you run this command, the following happens...
An AWS Cloudformation deployment will happen to slightly modify all of the AWS Lambda functions within your Service so that they include a lightweight wrapper.
Once this AWS Cloudformation deployment has completed, your live AWS Lambda functions within your Service will still be able to receive events and be invoked within AWS.
However, the events will be securely and instantly proxied down to your machine, and the code on your machine which will be run, rather than the code within your live AWS Lambda functions.
This allows you to make changes to your code, without having to deploy or recreate every aspect of your architecture locally, allowing you to develop rapidly.
Logs from your local code will also be shown within your terminal dev
session.
Once your code has finished, the response from your local code will be forwarded back up to your live AWS Lambda functions, and they will return the response—just like a normal AWS Lambda function in the cloud would.
Please note, dev
is only designed for
development or personal stages/environments and should not be run in
production or any stage where a high volume of events are being
processed.
Once you are finished with your dev
session, you MUST re-deploy, using serverless deploy
to push your recent local changes back to your live AWS Lambda functions—or your AWS Lambda functions will fail(!)
More details on dev mode can be found here.
from https://github.com/serverless/serverless?tab=readme-ov-file#quick-start
No comments:
Post a Comment