-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2 from dzmitrykliapkou/feat/cleanup
Update README.md
- Loading branch information
Showing
1 changed file
with
1 addition
and
131 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,131 +1 @@ | ||
<!-- | ||
title: 'AWS Python Scheduled Cron example in Python' | ||
description: 'This is an example of creating a function that runs as a cron job using the serverless ''schedule'' event.' | ||
layout: Doc | ||
framework: v3 | ||
platform: AWS | ||
language: Python | ||
priority: 2 | ||
authorLink: 'https://github.com/rupakg' | ||
authorName: 'Rupak Ganguly' | ||
authorAvatar: 'https://avatars0.githubusercontent.com/u/8188?v=4&s=140' | ||
--> | ||
|
||
# Serverless Framework Python Scheduled Cron on AWS | ||
|
||
This template demonstrates how to develop and deploy a simple cron-like service running on AWS Lambda using the traditional Serverless Framework. | ||
|
||
## Schedule event type | ||
|
||
This examples defines two functions, `rateHandler` and `cronHandler`, both of which are triggered by an event of `schedule` type, which is used for configuring functions to be executed at specific time or in specific intervals. For detailed information about `schedule` event, please refer to corresponding section of Serverless [docs](https://serverless.com/framework/docs/providers/aws/events/schedule/). | ||
|
||
When defining `schedule` events, we need to use `rate` or `cron` expression syntax. | ||
|
||
### Rate expressions syntax | ||
|
||
```pseudo | ||
rate(value unit) | ||
``` | ||
|
||
`value` - A positive number | ||
|
||
`unit` - The unit of time. ( minute | minutes | hour | hours | day | days ) | ||
|
||
In below example, we use `rate` syntax to define `schedule` event that will trigger our `rateHandler` function every minute | ||
|
||
```yml | ||
functions: | ||
rateHandler: | ||
handler: handler.run | ||
events: | ||
- schedule: rate(1 minute) | ||
``` | ||
Detailed information about rate expressions is available in official [AWS docs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#RateExpressions). | ||
### Cron expressions syntax | ||
```pseudo | ||
cron(Minutes Hours Day-of-month Month Day-of-week Year) | ||
``` | ||
|
||
All fields are required and time zone is UTC only. | ||
|
||
| Field | Values | Wildcards | | ||
| ------------- |:--------------:|:-------------:| | ||
| Minutes | 0-59 | , - * / | | ||
| Hours | 0-23 | , - * / | | ||
| Day-of-month | 1-31 | , - * ? / L W | | ||
| Month | 1-12 or JAN-DEC| , - * / | | ||
| Day-of-week | 1-7 or SUN-SAT | , - * ? / L # | | ||
| Year | 192199 | , - * / | | ||
|
||
In below example, we use `cron` syntax to define `schedule` event that will trigger our `cronHandler` function every second minute every Monday through Friday | ||
|
||
```yml | ||
functions: | ||
cronHandler: | ||
handler: handler.run | ||
events: | ||
- schedule: cron(0/2 * ? * MON-FRI *) | ||
``` | ||
Detailed information about cron expressions in available in official [AWS docs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#CronExpressions). | ||
## Usage | ||
### Deployment | ||
This example is made to work with the Serverless Framework dashboard, which includes advanced features such as CI/CD, monitoring, metrics, etc. | ||
In order to deploy with dashboard, you need to first login with: | ||
``` | ||
serverless login | ||
``` | ||
|
||
and then perform deployment with: | ||
|
||
``` | ||
serverless deploy | ||
``` | ||
|
||
After running deploy, you should see output similar to: | ||
|
||
```bash | ||
Deploying aws-python-scheduled-cron-project to stage dev (us-east-1) | ||
|
||
✔ Service deployed to stack aws-python-scheduled-cron-project-dev (205s) | ||
|
||
functions: | ||
rateHandler: aws-python-scheduled-cron-project-dev-rateHandler (2.9 kB) | ||
cronHandler: aws-python-scheduled-cron-project-dev-cronHandler (2.9 kB) | ||
``` | ||
|
||
There is no additional step required. Your defined schedules becomes active right away after deployment. | ||
|
||
### Local invocation | ||
|
||
In order to test out your functions locally, you can invoke them with the following command: | ||
|
||
``` | ||
serverless invoke local --function rateHandler | ||
``` | ||
|
||
After invocation, you should see output similar to: | ||
|
||
```bash | ||
INFO:handler:Your cron function aws-python-scheduled-cron-dev-rateHandler ran at 15:02:43.203145 | ||
``` | ||
|
||
### Bundling dependencies | ||
|
||
In case you would like to include 3rd party dependencies, you will need to use a plugin called `serverless-python-requirements`. You can set it up by running the following command: | ||
|
||
```bash | ||
serverless plugin install -n serverless-python-requirements | ||
``` | ||
|
||
Running the above will automatically add `serverless-python-requirements` to `plugins` section in your `serverless.yml` file and add it as a `devDependency` to `package.json` file. The `package.json` file will be automatically created if it doesn't exist beforehand. Now you will be able to add your dependencies to `requirements.txt` file (`Pipfile` and `pyproject.toml` is also supported but requires additional configuration) and they will be automatically injected to Lambda package during build process. For more details about the plugin's configuration, please refer to [official documentation](https://github.com/UnitedIncome/serverless-python-requirements). | ||
### EMPTY |