@serverless/cron

 

Usage no npm install needed!

<script type="module">
  import serverlessCron from 'https://cdn.skypack.dev/@serverless/cron';
</script>

README

Socket

 

Instantly run scheduled cron jobs on AWS using Serverless Components.

 

  1. Install
  2. Create
  3. Configure
  4. Deploy

 

1. Install

$ npm install -g @serverless/components

2. Create

$ mkdir cron-job && cd cron-job

The directory should look something like this:

|- cron.js
|- serverless.yml
|- package.json # optional
|- .env         # your development AWS api keys
|- .env.prod    # your production AWS api keys

the .env files are not required if you have the aws keys set globally and you want to use a single stage, but they should look like this.

AWS_ACCESS_KEY_ID=XXX
AWS_SECRET_ACCESS_KEY=XXX

The cron.js file contains your cron code.

module.exports.handler = async (e, ctx, cb) => {
  console.log('running in schedule')
}

3. Configure

All the following inputs are optional. However, they allow you to configure your Lambda compute instance and pass environment variables.

# serverless.yml

name: cron-job
stage: dev

Cron:
  component: "@serverless/cron"
  inputs:
    name: cron-job # auto generated if not provided
    
    # you can provide a rate either as rate with
    # this format <amount><unit-character> (e.g. 1s, 5m, 2h)
    # or a cron expresion  
    rate: 5m 
    enabled: true # this is the default value
    handler: cron.handler # this is the default value
    description: My Cron Job
    regoin: us-east-1
    memory: 128
    timeout: 10
    env:
      TABLE_NAME: my-table
    
    # the directory that contains the cron.js file.
    # If not provided, the default is the current working directory
    code: ./code


4. Deploy

cron (master)$ components

  Cron › outputs:
  name:  'cron-job'
  description:  'My Cron Job'
  memory:  128
  timeout:  10
  bucket:  undefined
  shims:  []
  handler:  'cron.handler'
  runtime:  'nodejs8.10'
  env: 
    TABLE_NAME:  'my-table'
  role: 
    name:  'cron-job'
    arn:  'arn:aws:iam::552760238299:role/cron-job'
    service:  'lambda.amazonaws.com'
    policy:  { arn: 'arn:aws:iam::aws:policy/AdministratorAccess' }
  arn:  'arn:aws:lambda:us-east-1:552760238299:function:cron-job'
  rate:  '5m'
  enabled:  true


  50s › dev › cron-job › done

cron (master)$

 

New to Components?

Checkout the Serverless Components repo for more information.