From a8f8b507aa01c794c698f72be7cc9d0f9bb9fa5b Mon Sep 17 00:00:00 2001 From: "trop[bot]" <37223003+trop[bot]@users.noreply.github.com> Date: Sun, 8 May 2022 09:30:23 -0700 Subject: [PATCH] build: use azure function to hash assets instead of lambda (#34119) Co-authored-by: Samuel Attard --- script/release/get-url-hash.js | 47 ++++++++++++++-------------------- 1 file changed, 19 insertions(+), 28 deletions(-) diff --git a/script/release/get-url-hash.js b/script/release/get-url-hash.js index 0633567a7dd90..ae91fac30e526 100644 --- a/script/release/get-url-hash.js +++ b/script/release/get-url-hash.js @@ -1,34 +1,25 @@ -const AWS = require('aws-sdk'); - -const lambda = new AWS.Lambda({ - credentials: { - accessKeyId: process.env.AWS_LAMBDA_EXECUTE_KEY, - secretAccessKey: process.env.AWS_LAMBDA_EXECUTE_SECRET - }, - region: 'us-east-1' -}); +const got = require('got'); +const url = require('url'); module.exports = async function getUrlHash (targetUrl, algorithm = 'sha256', attempts = 3) { + const options = { + code: process.env.ELECTRON_ARTIFACT_HASHER_FUNCTION_KEY, + targetUrl, + algorithm + }; + const search = new url.URLSearchParams(options); + const functionUrl = url.format({ + protocol: 'https:', + hostname: 'electron-artifact-hasher.azurewebsites.net', + pathname: '/api/HashArtifact', + search: search.toString() + }); try { - return new Promise((resolve, reject) => { - lambda.invoke({ - FunctionName: 'hasher', - Payload: JSON.stringify({ - targetUrl, - algorithm - }) - }, (err, data) => { - if (err) return reject(err); - try { - const response = JSON.parse(data.Payload); - if (response.statusCode !== 200) return reject(new Error('non-200 status code received from hasher function')); - if (!response.hash) return reject(new Error('Successful lambda call but failed to get valid hash')); - resolve(response.hash); - } catch (err) { - return reject(err); - } - }); - }); + const resp = await got(functionUrl); + if (resp.statusCode !== 200) throw new Error('non-200 status code received from hasher function'); + if (!resp.body) throw new Error('Successful lambda call but failed to get valid hash'); + + return resp.body.trim(); } catch (err) { if (attempts > 1) { console.error('Failed to get URL hash for', targetUrl, 'we will retry', err);