3

I'm trying to receive webhooks from Github using a probot application, but every single time I try this, I get a {"message":"Service Unavailable"} error.

Github sends this payload to an AWS Lambda function, and by googling (i think) this is an issue with not having enough nodes to handle the number of requests.

Either something is wrong with my code or there is an error with the configuration.

I'm using the serverless framework to upload to AWS lambda.

Here is the part where the code fails (no error messages in logs, and the bot just quits):

const yamlFile = async (context) => {
  try {
    console.log("trying to get yaml")
    var yamlfile = await context.octokit.repos.getContent({
      owner: context.payload.repository.owner.login,
      repo: context.payload.repository.name,
      path: ".bit/config.yml",
    });
    console.log(yamlfile)
  } catch (e) {
    console.log("Error with getting content of yaml");
    console.log(e)
    return null
  }
  console.log("got yaml, but no content yet");
  yamlfile = Buffer.from(yamlfile.data.content, 'base64').toString()
  console.log(yamlfile)
  try {
    let fileContents = yamlfile
    configyml = yaml.load(fileContents);
  } catch (e) {
    const issueBody = context.issue({
      title: "[ERROR] Please read",
      body: `There was an issue parsing the config file of this course. Please contact your counselor and send them the below error.\n${e}`,
    });

    context.octokit.issues.create(issueBody)
    console.log("ERROR: " + e);
    return null
  }
  console.log("returining configyml")
  return configyml;
}

The function yamlFile() is being called in our main function here:

let currentStep = ""
let configData = await data.yamlFile(context);
console.log(configData)
if (configData == null) {
  console.log("null config data");
  return
}

AWS Config

  • Timeout: 60 seconds

serverless.yml for Serverless framework:

service: <SERVICE NAME>

# app and org for use with dashboard.serverless.com
app: <APP NAME>
org: <ORG NAME>

frameworkVersion: "2"
useDotenv: true

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
  memorySize: 2048

functions:
  webhooks:
    handler: handler.webhooks
    memorySize: 2048
    events:
      - httpApi:
          path: /api/github/webhooks
          method: post
    
    
Ganning Xu
  • 263
  • 4
  • 13

0 Answers0