lambdasync
Version:
Easy sync between local code and AWS lambda functions
30 lines (26 loc) • 780 B
JavaScript
const aws = require('./aws');
const {awsPromise, makeLambdaPolicyArn} = require('./util');
function getGateway(settings) {
const AWS = aws(settings);
const apigateway = new AWS.Lambda();
return apigateway;
}
function setLambdaPermission(settings) {
if (settings.apiGatewayUrl) {
return settings;
}
const api = getGateway(settings);
const {lambdaArn, apiGatewayId} = settings;
const params = {
Action: 'lambda:InvokeFunction',
FunctionName: lambdaArn,
Principal: 'apigateway.amazonaws.com',
StatementId: 's' + (Math.floor(Math.random() * 1000000000)),
SourceArn: makeLambdaPolicyArn({lambdaArn, apiGatewayId})
};
return awsPromise(api, 'addPermission', params)
.then(() => settings);
}
module.exports = {
setLambdaPermission
};