UNPKG

aws-spa

Version:

A no-brainer script to deploy a single page app on AWS

60 lines (47 loc) 1.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getRoleARNForBasicLambdaExectution = void 0; var _awsServices = require("./aws-services"); var _logger = require("./logger"); const getRoleARNForBasicLambdaExectution = async (roleName, waitAfterCreate = 10000) => { try { _logger.logger.info(`[IAM] 🔍 looking for role ${roleName}...`); const { Role } = await _awsServices.iam.getRole({ RoleName: roleName }); _logger.logger.info(`[IAM] 👍 ${roleName} found`); return Role?.Arn; } catch (error) { if (error.statusCode !== 404) { throw error; } _logger.logger.info(`[IAM] ✏️ ${roleName} not found. Creating it...`); const { Role } = await _awsServices.iam.createRole({ AssumeRolePolicyDocument: JSON.stringify({ Version: '2012-10-17', Statement: [{ Effect: 'Allow', Principal: { Service: ['lambda.amazonaws.com', 'edgelambda.amazonaws.com'] }, Action: 'sts:AssumeRole' }] }), RoleName: roleName }); await _awsServices.iam.attachRolePolicy({ PolicyArn: 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole', RoleName: roleName }); _logger.logger.info(`[IAM] 👍 ${roleName} created`); // timeout to avoid "The role defined for the function cannot be assumed by Lambda" await new Promise(resolve => setTimeout(resolve, waitAfterCreate)); return Role?.Arn; } }; exports.getRoleARNForBasicLambdaExectution = getRoleARNForBasicLambdaExectution;