|
8 | 8 |
|
9 | 9 | const _ = require('lodash');
|
10 | 10 | const BbPromise = require('bluebird');
|
| 11 | +const utils = require('../utils'); |
11 | 12 |
|
12 | 13 | module.exports = function(currentTemplate, aliasStackTemplates, currentAliasStackTemplate) {
|
13 | 14 | const stackName = this._provider.naming.getStackName();
|
@@ -142,7 +143,25 @@ module.exports = function(currentTemplate, aliasStackTemplates, currentAliasStac
|
142 | 143 | delete userResources.Resources[name];
|
143 | 144 | }
|
144 | 145 |
|
145 |
| - stageStack.Resources[name] = authorizer; |
| 146 | + const aliasedName = `${name}${this._alias}`; |
| 147 | + const authorizerRefs = utils.findReferences(stageStack.Resources, name); |
| 148 | + _.forEach(authorizerRefs, ref => { |
| 149 | + _.set(stageStack.Resources, ref, { Ref: aliasedName }); |
| 150 | + }); |
| 151 | + |
| 152 | + // Replace dependencies |
| 153 | + _.forOwn(stageStack.Resources, resource => { |
| 154 | + if (_.isString(resource.DependsOn) && resource.DependsOn === name) { |
| 155 | + resource.DependsOn = aliasedName; |
| 156 | + } else if (_.isArray(resource.DependsOn) && _.includes(resource.DependsOn, name)) { |
| 157 | + _.pull(resource.DependsOn, name); |
| 158 | + resource.DependsOn.push(aliasedName); |
| 159 | + } |
| 160 | + }); |
| 161 | + |
| 162 | + // Rename authorizer to be unique per alias |
| 163 | + stageStack.Resources[aliasedName] = authorizer; |
| 164 | + delete stageStack.Resources[name]; |
146 | 165 | });
|
147 | 166 |
|
148 | 167 | // Adjust permission to reference the function aliases
|
|
0 commit comments