UNPKG

serverless-step-functions

Version:

The module is AWS Step Functions plugin for Serverless Framework

72 lines (65 loc) 2.25 kB
'use strict'; const BbPromise = require('bluebird'); const _ = require('lodash'); const awsArnRegExs = require('../../../utils/arnRegularExpressions'); module.exports = { compileAuthorizers() { this.validated.events.forEach((event) => { if (event.http.authorizer && event.http.authorizer.arn) { const authorizer = event.http.authorizer; const authorizerProperties = { AuthorizerResultTtlInSeconds: authorizer.resultTtlInSeconds, IdentitySource: authorizer.identitySource, Name: authorizer.name, RestApiId: this.provider.getApiGatewayRestApiId(), }; if (typeof authorizer.identityValidationExpression === 'string') { Object.assign(authorizerProperties, { IdentityValidationExpression: authorizer.identityValidationExpression, }); } const authorizerLogicalId = this.provider.naming.getAuthorizerLogicalId( authorizer.name, ); if ( (authorizer.type || '').toUpperCase() === 'COGNITO_USER_POOLS' || (typeof authorizer.arn === 'string' && awsArnRegExs.cognitoIdpArnExpr.test(authorizer.arn)) ) { authorizerProperties.Type = 'COGNITO_USER_POOLS'; authorizerProperties.ProviderARNs = [authorizer.arn]; } else { authorizerProperties.AuthorizerUri = { 'Fn::Join': [ '', [ 'arn:', { Ref: 'AWS::Partition' }, ':apigateway:', { Ref: 'AWS::Region' }, ':lambda:path/2015-03-31/functions/', authorizer.arn, '/invocations', ], ], }; authorizerProperties.Type = authorizer.type ? authorizer.type.toUpperCase() : 'TOKEN'; } _.merge( this.serverless.service.provider.compiledCloudFormationTemplate .Resources, { [authorizerLogicalId]: { Type: 'AWS::ApiGateway::Authorizer', Properties: authorizerProperties, }, }, ); } }); return BbPromise.resolve(); }, };