Last active
October 27, 2020 22:20
-
-
Save peterc/3c8cd11b6012e11b26fe5330509f52aa to your computer and use it in GitHub Desktop.
Check something on a remote site using AWS Lambda, Puppeteer, and SNS
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
// See https://github.com/shelfio/chrome-aws-lambda-layer for more info | |
// on the layer needed to make chrome-aws-lambda work | |
const AWS = require('aws-sdk'); | |
const chromium = require('chrome-aws-lambda'); | |
exports.handler = async (event, context) => { | |
let sns = new AWS.SNS(); | |
let browser = await chromium.puppeteer.launch({ | |
args: chromium.args, | |
defaultViewport: chromium.defaultViewport, | |
executablePath: await chromium.executablePath, | |
headless: chromium.headless, | |
ignoreHTTPSErrors: true, | |
}); | |
let page = await browser.newPage(); | |
await page.goto(process.env.REMOTE_URL); | |
let top_of_range = await page.evaluate(() => { | |
let range = document.getElementById('pr_ps').innerText; | |
return range.match(/[\d\,]+/g)[1].replace(/,/g, ''); | |
}); | |
await browser.close(); | |
let message = `Top of range is now ${top_of_range}`; | |
const promise = new Promise((resolve, reject) => { | |
if (Number(top_of_range) == 150000) { | |
resolve(); | |
} | |
sns.publish({ | |
Message: message, | |
TopicArn: process.env.SNS_ARN | |
}, function(err, data) { | |
if (err) { | |
console.log(err.stack); | |
reject(); | |
} | |
resolve(); | |
}); | |
}); | |
return promise; | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment