build: use azure function to hash assets instead of lambda (#34117)

This commit is contained in:
Samuel Attard 2022-05-06 02:42:34 -07:00 committed by GitHub
parent 0696320d28
commit 808efd89ed
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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) {
try {
return new Promise((resolve, reject) => {
lambda.invoke({
FunctionName: 'hasher',
Payload: JSON.stringify({
const options = {
code: process.env.ELECTRON_ARTIFACT_HASHER_FUNCTION_KEY,
targetUrl,
algorithm
})
}, (err, data) => {
if (err) return reject(err);
};
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 {
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);