1 | class RandomGatewayDeploymentIdPlugin {
|
2 | constructor(serverless, options) {
|
3 | this.serverless = serverless;
|
4 |
|
5 | this.hooks = {
|
6 | 'before:aws:package:finalize:mergeCustomProviderResources': this.randomizeDeploymentId.bind(this)
|
7 | };
|
8 | }
|
9 |
|
10 | randomizeDeploymentId() {
|
11 | let resources = this.serverless.service.resources.Resources;
|
12 | Object.entries(resources).forEach(([resourceName, resource]) => {
|
13 | if (resource.Type === 'AWS::ApiGateway::Deployment') {
|
14 | const randomizedName = this.randomize(resourceName)
|
15 | const variableRegex = new RegExp(resourceName, 'g')
|
16 | resources = JSON.parse(JSON.stringify(resources).replace(variableRegex, randomizedName));
|
17 | }
|
18 |
|
19 | this.serverless.service.resources.Resources = resources;
|
20 | });
|
21 | }
|
22 |
|
23 | randomize(resourceName) {
|
24 | return resourceName + Date.now();
|
25 | }
|
26 | }
|
27 |
|
28 | module.exports = RandomGatewayDeploymentIdPlugin;
|