@probot/adapter-aws-lambda-serverless

    2.0.2 • Public • Published

    @probot/adapter-aws-lambda-serverless

    Adapter to run a Probot application function in AWS Lambda using the Serverless Framework

    Build Status

    Usage

    npm install @probot/adapter-aws-lambda-serverless
    // handler.js
    const {
      createLambdaFunction,
      createProbot,
    } = require("@probot/adapter-aws-lambda-serverless");
    const appFn = require("./");
    module.exports.webhooks = createLambdaFunction(appFn, {
      probot: createProbot(),
    });

    Configuration

    You need to add environment variables to configure Probot to your Lambda function. If you use the Serverless App, you can add parameters for APP_ID, PRIVATE_KEY, WEBHOOK_SECRET, the use these parameters in serverless.yaml.

    provider:
      name: aws
      runtime: nodejs12.x
      lambdaHashingVersion: 20201221
      environment:
        APP_ID: ${param:APP_ID}
        PRIVATE_KEY: ${param:PRIVATE_KEY}
        WEBHOOK_SECRET: ${param:WEBHOOK_SECRET}
        NODE_ENV: production
        LOG_LEVEL: debug
    
    functions:
      webhooks:
        handler: handler.webhooks
        events:
          - httpApi:
              path: /api/github/webhooks
              method: post

    Make sure to configure your GitHub App registration's webhook URL to <your lambda's URL>/api/github/webhooks.

    Test deployment

    For testing your Probot deployment without end to end (GitHub) integration, you can use this shell snippet:

    $ LAMBDA_URL=https://x.execute-api.y.amazonaws.com/stage-or-basePath/api/github/webhooks
    $ SECRET=the_webhook_secret
    $ TMP_DATA_FILE=/tmp/smoke.data
    
    $ echo -n "{\"action\":\"test\"}" > $TMP_DATA_FILE
    $ SIGN=$(openssl dgst -sha1 -hmac $SECRET $TMP_DATA_FILE | cut -d" " -f2)
    $ curl --request POST --header "X-Hub-Signature: sha1=$SIGN" --header "X-Github-Event: test" --header "X-GitHub-Delivery: fake" --data-binary "@$TMP_DATA_FILE" $LAMBDA_URL
    {"ok":true}        <-- Concent for Probot v10: {"message":"Received test.test"}

    Examples

    Add yours!

    Common errors

    Http Code Message Description
    403 Missing Authentication Token Bad endpoint (this one is not binded on Lambda)
    500 Internal server error Incorrect headers value (X-GitHub-Delivery, X-GitHub-Event, X-Hub-Signature) or Probot error

    Probot v11 migration key points

    For Probot v11 support, this adapter introduces significant changes. Here the key points to update (in addition of Probot v11 breaking changes):

    Key point / Probot <= v10 >= v11
    NPM package name @probot/serverless-lambda @probot/adapter-aws-lambda-serverless
    handler.js content See Usage v1.x See Usage
    AWS Lambda Runtime handler.probot handler.webhooks
    AWS Lambda Handler Node.js 12.x (preferred) Node.js 12.x (required)

    LICENSE

    ISC

    Install

    npm i @probot/adapter-aws-lambda-serverless

    DownloadsWeekly Downloads

    169

    Version

    2.0.2

    License

    ISC

    Unpacked Size

    15.3 kB

    Total Files

    11

    Last publish

    Collaborators

    • bkeepers
    • hiimbex
    • lee-dohm
    • tcbyrd
    • jasonetco
    • gr2m
    • probotbot