lambda.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. const AWS = require('aws-sdk');
  2. const s3 = new AWS.S3();
  3. const ylt = require('..');
  4. // noinspection JSUnusedLocalSymbols
  5. async function runner({id, url, options = {}}, context) {
  6. console.log(`Processing run #${id} on ${url}`);
  7. // AWS S3 bucket and path
  8. const bucket = process.env.RESULT_BUCKET_NAME;
  9. const keyPrefix = `results/${id}`;
  10. // Function that can save any file on S3 (JSON, screenshot,...)
  11. const saveFile = async (path, content) => s3.putObject({Bucket: bucket, Key: `${keyPrefix}/${path}`, Body: content})
  12. .promise();
  13. // Let's launch ylt
  14. const result = await ylt(url, {...options, saveScreenshotFn: saveFile})
  15. .then(async data => {
  16. console.log(`Run succeeded`);
  17. data.runId = id;
  18. await saveFile('results.json', JSON.stringify(data));
  19. return {
  20. status: 'processed',
  21. id,
  22. bucket,
  23. keyPrefix
  24. };
  25. })
  26. .fail(error => {
  27. console.log(`Run failed with error: ${error}`);
  28. return {
  29. status: 'failed',
  30. id,
  31. bucket,
  32. errorMessage: error
  33. };
  34. });
  35. return result;
  36. }
  37. module.exports = {runner};