nelsonic / github-scraper

🕷 🕸 crawl GitHub web pages for insights we can't GET from the API ... 💡
425 stars 96 forks source link

Feat: Deploy AWS Lambda Function with URL #128

Open nelsonic opened 7 months ago

nelsonic commented 7 months ago

We need a way of invoking the scraper from our Elixir app for https://github.com/dwyl/who/issues/86

Todo

Note: Only working on the "happy path".

Ref: https://github.com/dwyl/learn-aws-lambda/issues/124 -> https://dev.to/aws-builders/introducing-lambda-function-urls-4ahd

nelsonic commented 7 months ago

Getting a roadblock:

distpath: tmp/dist/
node:child_process:965
    throw err;
    ^

Error: Command failed: zip -rq -X tmp/github-scraper.zip ./
    at checkExecSyncError (node:child_process:890:11)
    at Object.execSync (node:child_process:962:15)
    at module.exports (/github-scraper/node_modules/dpl/lib/exec_sync.js:5:23)
    at Object.zip (/github-scraper/node_modules/dpl/lib/zip.js:19:3)
    at Object.<anonymous> (/github-scraper/node_modules/dpl/dpl.js:12:5)
    at Module._compile (node:internal/modules/cjs/loader:1376:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1435:10)
    at Module.load (node:internal/modules/cjs/loader:1207:32)
    at Module._load (node:internal/modules/cjs/loader:1023:12) {
  status: 15,
  signal: null,
  output: [
    null,
    'zip I/O error: No such file or directory\n' +
      'zip error: Could not create output file (tmp/github-scraper.zip)\n',
    ''
  ],
  pid: 63403,
  stdout: 'zip I/O error: No such file or directory\n' +
    'zip error: Could not create output file (tmp/github-scraper.zip)\n',
  stderr: ''
}

Node.js v20.11.0
nelsonic commented 7 months ago

Working: https://eu-west-1.console.aws.amazon.com/lambda/home?region=eu-west-1#/functions/github-scraper-v7?tab=testing

image

But I'm burning the candle at both ends working at 3am ... so calling it a day. 🛌

nelsonic commented 5 months ago

https://eu-west-1.console.aws.amazon.com/lambda/home?region=eu-west-1#/functions/github-scraper-v7?tab=testing

image
{
  "errorType": "Runtime.ImportModuleError",
  "errorMessage": "Error: Cannot find module '../config/repos'\nRequire stack:\n- /var/task/lib/followers.js\n- /var/task/lib/scrapers.js\n- /var/task/lib/switcher.js\n- /var/task/lib/index.js\n- /var/task/index.js\n- /var/runtime/index.mjs",
  "trace": [
    "Runtime.ImportModuleError: Error: Cannot find module '../config/repos'",
    "Require stack:",
    "- /var/task/lib/followers.js",
    "- /var/task/lib/scrapers.js",
    "- /var/task/lib/switcher.js",
    "- /var/task/lib/index.js",
    "- /var/task/index.js",
    "- /var/runtime/index.mjs",
    "    at _loadUserApp (file:///var/runtime/index.mjs:1087:17)",
    "    at async UserFunction.js.module.exports.load (file:///var/runtime/index.mjs:1119:21)",
    "    at async start (file:///var/runtime/index.mjs:1282:23)",
    "    at async file:///var/runtime/index.mjs:1288:1"
  ]
}
nelsonic commented 5 months ago

Basic lambda function is working:

image
nelsonic commented 5 months ago

Working! 🎉

image

Not sharing the URL just yet as want to avoid spam. But I'm optimistic this will work. 💭

nelsonic commented 5 months ago

This is already what I needed ...

image

Now I need to use it ... 💭