@studion/infra-code-blocks 0.8.0-next.2 → 2.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/dist/components/acm-certificate/index.d.ts +20 -0
  2. package/dist/components/acm-certificate/index.d.ts.map +1 -0
  3. package/dist/components/acm-certificate/index.js +40 -0
  4. package/dist/components/cloudfront/index.d.ts +97 -0
  5. package/dist/components/cloudfront/index.d.ts.map +1 -0
  6. package/dist/components/cloudfront/index.js +215 -0
  7. package/dist/components/cloudfront/lb-cache-strategy.d.ts +21 -0
  8. package/dist/components/cloudfront/lb-cache-strategy.d.ts.map +1 -0
  9. package/dist/components/cloudfront/lb-cache-strategy.js +93 -0
  10. package/dist/components/cloudfront/s3-cache-strategy.d.ts +22 -0
  11. package/dist/components/cloudfront/s3-cache-strategy.d.ts.map +1 -0
  12. package/dist/components/cloudfront/s3-cache-strategy.js +79 -0
  13. package/dist/components/cloudfront/types.d.ts +10 -0
  14. package/dist/components/cloudfront/types.d.ts.map +1 -0
  15. package/dist/components/database/builder.d.ts +32 -0
  16. package/dist/components/database/builder.d.ts.map +1 -0
  17. package/dist/components/database/builder.js +82 -0
  18. package/dist/components/database/database-replica.d.ts +35 -0
  19. package/dist/components/database/database-replica.d.ts.map +1 -0
  20. package/dist/components/database/database-replica.js +40 -0
  21. package/dist/components/database/ec2-ssm-connect.d.ts +26 -0
  22. package/dist/components/database/ec2-ssm-connect.d.ts.map +1 -0
  23. package/dist/components/{ec2-ssm-connect.js → database/ec2-ssm-connect.js} +42 -34
  24. package/dist/components/database/index.d.ts +67 -0
  25. package/dist/components/database/index.d.ts.map +1 -0
  26. package/dist/components/database/index.js +144 -0
  27. package/dist/{v2/components → components}/ecs-service/index.d.ts +4 -3
  28. package/dist/components/ecs-service/index.d.ts.map +1 -0
  29. package/dist/{v2/components → components}/ecs-service/index.js +18 -29
  30. package/dist/components/ecs-service/policies.d.ts.map +1 -0
  31. package/dist/components/ecs-service/task-size.d.ts +37 -0
  32. package/dist/components/ecs-service/task-size.d.ts.map +1 -0
  33. package/dist/{constants.js → components/ecs-service/task-size.js} +17 -7
  34. package/dist/components/grafana/dashboards/index.d.ts.map +1 -0
  35. package/dist/components/grafana/dashboards/panels.d.ts.map +1 -0
  36. package/dist/components/grafana/dashboards/types.d.ts.map +1 -0
  37. package/dist/components/grafana/dashboards/web-server-slo.d.ts.map +1 -0
  38. package/dist/components/grafana/index.d.ts.map +1 -0
  39. package/dist/components/{password.d.ts → password/index.d.ts} +7 -5
  40. package/dist/components/password/index.d.ts.map +1 -0
  41. package/dist/components/{password.js → password/index.js} +5 -8
  42. package/dist/components/prometheus/index.d.ts.map +1 -0
  43. package/dist/components/prometheus/queries.d.ts.map +1 -0
  44. package/dist/components/prometheus/queries.test.d.ts.map +1 -0
  45. package/dist/components/redis/elasticache-redis.d.ts +38 -0
  46. package/dist/components/redis/elasticache-redis.d.ts.map +1 -0
  47. package/dist/components/redis/elasticache-redis.js +58 -0
  48. package/dist/components/redis/upstash-redis.d.ts +20 -0
  49. package/dist/components/redis/upstash-redis.d.ts.map +1 -0
  50. package/dist/components/redis/upstash-redis.js +29 -0
  51. package/dist/components/static-site/cache-rule-ttl.d.ts +13 -0
  52. package/dist/components/static-site/cache-rule-ttl.d.ts.map +1 -0
  53. package/dist/components/static-site/cache-rule-ttl.js +18 -0
  54. package/dist/components/static-site/index.d.ts +47 -0
  55. package/dist/components/static-site/index.d.ts.map +1 -0
  56. package/dist/components/static-site/index.js +45 -0
  57. package/dist/components/static-site/s3-assets.d.ts +20 -0
  58. package/dist/components/static-site/s3-assets.d.ts.map +1 -0
  59. package/dist/components/static-site/s3-assets.js +63 -0
  60. package/dist/components/vpc/index.d.ts +20 -0
  61. package/dist/components/vpc/index.d.ts.map +1 -0
  62. package/dist/components/vpc/index.js +31 -0
  63. package/dist/{v2/components → components}/web-server/builder.d.ts +5 -1
  64. package/dist/components/web-server/builder.d.ts.map +1 -0
  65. package/dist/{v2/components → components}/web-server/builder.js +11 -1
  66. package/dist/{v2/components → components}/web-server/index.d.ts +29 -7
  67. package/dist/components/web-server/index.d.ts.map +1 -0
  68. package/dist/{v2/components → components}/web-server/index.js +48 -39
  69. package/dist/{v2/components → components}/web-server/load-balancer.d.ts +2 -1
  70. package/dist/components/web-server/load-balancer.d.ts.map +1 -0
  71. package/dist/{v2/components → components}/web-server/load-balancer.js +16 -13
  72. package/dist/index.d.ts +24 -11
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +38 -26
  75. package/dist/otel/batch-processor.d.ts.map +1 -0
  76. package/dist/{v2/otel → otel}/builder.d.ts +14 -1
  77. package/dist/otel/builder.d.ts.map +1 -0
  78. package/dist/{v2/otel → otel}/builder.js +47 -2
  79. package/dist/{v2/otel → otel}/config.d.ts +13 -1
  80. package/dist/otel/config.d.ts.map +1 -0
  81. package/dist/{v2/otel → otel}/config.js +20 -3
  82. package/dist/{v2/otel → otel}/index.d.ts +8 -0
  83. package/dist/otel/index.d.ts.map +1 -0
  84. package/dist/otel/memory-limiter-processor.d.ts.map +1 -0
  85. package/dist/otel/otlp-receiver.d.ts.map +1 -0
  86. package/dist/otel/prometheus-remote-write-exporter.d.ts.map +1 -0
  87. package/dist/shared/common-tags.d.ts +5 -0
  88. package/dist/shared/common-tags.d.ts.map +1 -0
  89. package/dist/shared/common-tags.js +8 -0
  90. package/dist/shared/merge-with-defaults.d.ts +2 -0
  91. package/dist/shared/merge-with-defaults.d.ts.map +1 -0
  92. package/dist/shared/merge-with-defaults.js +7 -0
  93. package/package.json +35 -16
  94. package/dist/components/acm-certificate.d.ts +0 -11
  95. package/dist/components/acm-certificate.d.ts.map +0 -1
  96. package/dist/components/acm-certificate.js +0 -30
  97. package/dist/components/database-replica.d.ts +0 -69
  98. package/dist/components/database-replica.d.ts.map +0 -1
  99. package/dist/components/database-replica.js +0 -40
  100. package/dist/components/database.d.ts +0 -99
  101. package/dist/components/database.d.ts.map +0 -1
  102. package/dist/components/database.js +0 -118
  103. package/dist/components/ec2-ssm-connect.d.ts +0 -22
  104. package/dist/components/ec2-ssm-connect.d.ts.map +0 -1
  105. package/dist/components/ecs-service.d.ts +0 -143
  106. package/dist/components/ecs-service.d.ts.map +0 -1
  107. package/dist/components/ecs-service.js +0 -357
  108. package/dist/components/mongo.d.ts +0 -39
  109. package/dist/components/mongo.d.ts.map +0 -1
  110. package/dist/components/mongo.js +0 -54
  111. package/dist/components/nuxt-ssr.d.ts +0 -44
  112. package/dist/components/nuxt-ssr.d.ts.map +0 -1
  113. package/dist/components/nuxt-ssr.js +0 -277
  114. package/dist/components/password.d.ts.map +0 -1
  115. package/dist/components/project.d.ts +0 -77
  116. package/dist/components/project.d.ts.map +0 -1
  117. package/dist/components/project.js +0 -171
  118. package/dist/components/redis.d.ts +0 -23
  119. package/dist/components/redis.d.ts.map +0 -1
  120. package/dist/components/redis.js +0 -35
  121. package/dist/components/static-site.d.ts +0 -36
  122. package/dist/components/static-site.d.ts.map +0 -1
  123. package/dist/components/static-site.js +0 -138
  124. package/dist/components/web-server.d.ts +0 -38
  125. package/dist/components/web-server.d.ts.map +0 -1
  126. package/dist/components/web-server.js +0 -185
  127. package/dist/constants.d.ts +0 -23
  128. package/dist/constants.d.ts.map +0 -1
  129. package/dist/types/pulumi.d.ts +0 -5
  130. package/dist/types/pulumi.d.ts.map +0 -1
  131. package/dist/types/size.d.ts +0 -8
  132. package/dist/types/size.d.ts.map +0 -1
  133. package/dist/types/size.js +0 -2
  134. package/dist/v2/components/ecs-service/index.d.ts.map +0 -1
  135. package/dist/v2/components/ecs-service/policies.d.ts.map +0 -1
  136. package/dist/v2/components/grafana/dashboards/index.d.ts.map +0 -1
  137. package/dist/v2/components/grafana/dashboards/panels.d.ts.map +0 -1
  138. package/dist/v2/components/grafana/dashboards/types.d.ts.map +0 -1
  139. package/dist/v2/components/grafana/dashboards/web-server-slo.d.ts.map +0 -1
  140. package/dist/v2/components/grafana/index.d.ts.map +0 -1
  141. package/dist/v2/components/prometheus/index.d.ts.map +0 -1
  142. package/dist/v2/components/prometheus/queries.d.ts.map +0 -1
  143. package/dist/v2/components/prometheus/queries.test.d.ts.map +0 -1
  144. package/dist/v2/components/web-server/builder.d.ts.map +0 -1
  145. package/dist/v2/components/web-server/index.d.ts.map +0 -1
  146. package/dist/v2/components/web-server/load-balancer.d.ts.map +0 -1
  147. package/dist/v2/index.d.ts +0 -13
  148. package/dist/v2/index.d.ts.map +0 -1
  149. package/dist/v2/index.js +0 -16
  150. package/dist/v2/otel/batch-processor.d.ts.map +0 -1
  151. package/dist/v2/otel/builder.d.ts.map +0 -1
  152. package/dist/v2/otel/config.d.ts.map +0 -1
  153. package/dist/v2/otel/index.d.ts.map +0 -1
  154. package/dist/v2/otel/memory-limiter-processor.d.ts.map +0 -1
  155. package/dist/v2/otel/otlp-receiver.d.ts.map +0 -1
  156. package/dist/v2/otel/prometheus-remote-write-exporter.d.ts.map +0 -1
  157. /package/dist/{v2/components/grafana/dashboards → components/cloudfront}/types.js +0 -0
  158. /package/dist/{v2/components → components}/ecs-service/policies.d.ts +0 -0
  159. /package/dist/{v2/components → components}/ecs-service/policies.js +0 -0
  160. /package/dist/{v2/components → components}/grafana/dashboards/index.d.ts +0 -0
  161. /package/dist/{v2/components → components}/grafana/dashboards/index.js +0 -0
  162. /package/dist/{v2/components → components}/grafana/dashboards/panels.d.ts +0 -0
  163. /package/dist/{v2/components → components}/grafana/dashboards/panels.js +0 -0
  164. /package/dist/{v2/components → components}/grafana/dashboards/types.d.ts +0 -0
  165. /package/dist/{types/pulumi.js → components/grafana/dashboards/types.js} +0 -0
  166. /package/dist/{v2/components → components}/grafana/dashboards/web-server-slo.d.ts +0 -0
  167. /package/dist/{v2/components → components}/grafana/dashboards/web-server-slo.js +0 -0
  168. /package/dist/{v2/components → components}/grafana/index.d.ts +0 -0
  169. /package/dist/{v2/components → components}/grafana/index.js +0 -0
  170. /package/dist/{v2/components → components}/prometheus/index.d.ts +0 -0
  171. /package/dist/{v2/components → components}/prometheus/index.js +0 -0
  172. /package/dist/{v2/components → components}/prometheus/queries.d.ts +0 -0
  173. /package/dist/{v2/components → components}/prometheus/queries.js +0 -0
  174. /package/dist/{v2/components → components}/prometheus/queries.test.d.ts +0 -0
  175. /package/dist/{v2/components → components}/prometheus/queries.test.js +0 -0
  176. /package/dist/{v2/otel → otel}/batch-processor.d.ts +0 -0
  177. /package/dist/{v2/otel → otel}/batch-processor.js +0 -0
  178. /package/dist/{v2/otel → otel}/index.js +0 -0
  179. /package/dist/{v2/otel → otel}/memory-limiter-processor.d.ts +0 -0
  180. /package/dist/{v2/otel → otel}/memory-limiter-processor.js +0 -0
  181. /package/dist/{v2/otel → otel}/otlp-receiver.d.ts +0 -0
  182. /package/dist/{v2/otel → otel}/otlp-receiver.js +0 -0
  183. /package/dist/{v2/otel → otel}/prometheus-remote-write-exporter.d.ts +0 -0
  184. /package/dist/{v2/otel → otel}/prometheus-remote-write-exporter.js +0 -0
@@ -3,8 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EcsService = void 0;
4
4
  const pulumi = require("@pulumi/pulumi");
5
5
  const aws = require("@pulumi/aws");
6
- const constants_1 = require("../../../constants");
6
+ const common_tags_1 = require("../../shared/common-tags");
7
+ const merge_with_defaults_1 = require("../../shared/merge-with-defaults");
7
8
  const policies_1 = require("./policies");
9
+ const task_size_1 = require("./task-size");
8
10
  const config = new pulumi.Config('aws');
9
11
  const awsRegion = config.require('region');
10
12
  /**
@@ -38,8 +40,8 @@ const defaults = {
38
40
  };
39
41
  class EcsService extends pulumi.ComponentResource {
40
42
  constructor(name, args, opts = {}) {
41
- super('studion:ecs:Service', name, {}, opts);
42
- const argsWithDefaults = Object.assign({}, defaults, args);
43
+ super('studion:ecs-service:EcsService', name, {}, Object.assign(Object.assign({}, opts), { aliases: [...(opts.aliases || []), { type: 'studion:ecs:Service' }] }));
44
+ const argsWithDefaults = (0, merge_with_defaults_1.mergeWithDefaults)(defaults, args);
43
45
  const taskExecutionRoleInlinePolicies = pulumi.output(args.taskExecutionRoleInlinePolicies ||
44
46
  defaults.taskExecutionRoleInlinePolicies);
45
47
  const taskRoleInlinePolicies = pulumi.output(args.taskRoleInlinePolicies || defaults.taskRoleInlinePolicies);
@@ -54,7 +56,7 @@ class EcsService extends pulumi.ComponentResource {
54
56
  this.persistentStorage = this.createPersistentStorage(this.vpc);
55
57
  }
56
58
  });
57
- this.taskDefinition = this.createTaskDefinition(argsWithDefaults.containers, pulumi.output(argsWithDefaults.volumes), this.taskExecutionRole, this.taskRole, argsWithDefaults.size, Object.assign(Object.assign({}, constants_1.commonTags), argsWithDefaults.tags));
59
+ this.taskDefinition = this.createTaskDefinition(argsWithDefaults.containers, pulumi.output(argsWithDefaults.volumes), this.taskExecutionRole, this.taskRole, argsWithDefaults.size, Object.assign(Object.assign({}, common_tags_1.commonTags), argsWithDefaults.tags));
58
60
  if (argsWithDefaults.enableServiceAutoDiscovery) {
59
61
  this.serviceDiscoveryService = this.createServiceDiscovery();
60
62
  }
@@ -75,13 +77,13 @@ class EcsService extends pulumi.ComponentResource {
75
77
  const logGroup = new aws.cloudwatch.LogGroup(`${this.name}-log-group`, {
76
78
  retentionInDays: 14,
77
79
  namePrefix: `/ecs/${this.name}-`,
78
- tags: constants_1.commonTags,
80
+ tags: common_tags_1.commonTags,
79
81
  }, { parent: this });
80
82
  return logGroup;
81
83
  }
82
84
  createTaskDefinition(containers, volumes, taskExecutionRole, taskRole, size, tags) {
83
85
  const stack = pulumi.getStack();
84
- const { cpu, memory } = pulumi.output(size).apply(parseSize);
86
+ const { cpu, memory } = pulumi.output(size).apply(task_size_1.parseTaskSize);
85
87
  const containerDefinitions = containers.map(container => {
86
88
  return this.createContainerDefinition(container);
87
89
  });
@@ -89,7 +91,7 @@ class EcsService extends pulumi.ComponentResource {
89
91
  return pulumi.all(containerDefinitions).apply(containerDefinitions => {
90
92
  return taskDefinitionVolumes.apply(volumes => {
91
93
  return new aws.ecs.TaskDefinition(`${this.name}-task-definition`, Object.assign(Object.assign({ family: `${this.name}-task-definition-${stack}`, networkMode: 'awsvpc', executionRoleArn: taskExecutionRole.arn, taskRoleArn: taskRole.arn, cpu,
92
- memory, requiresCompatibilities: ['FARGATE'], containerDefinitions: JSON.stringify(containerDefinitions) }, ((volumes === null || volumes === void 0 ? void 0 : volumes.length) ? { volumes } : {})), { tags: Object.assign(Object.assign({}, constants_1.commonTags), tags) }), { parent: this });
94
+ memory, requiresCompatibilities: ['FARGATE'], containerDefinitions: JSON.stringify(containerDefinitions) }, ((volumes === null || volumes === void 0 ? void 0 : volumes.length) ? { volumes } : {})), { tags: Object.assign(Object.assign({}, common_tags_1.commonTags), tags) }), { parent: this });
93
95
  });
94
96
  });
95
97
  }
@@ -158,7 +160,7 @@ class EcsService extends pulumi.ComponentResource {
158
160
  secretManagerSecretsInlinePolicy,
159
161
  ...policies,
160
162
  ]),
161
- tags: constants_1.commonTags,
163
+ tags: common_tags_1.commonTags,
162
164
  }, { parent: this });
163
165
  return taskExecutionRole;
164
166
  }
@@ -189,7 +191,7 @@ class EcsService extends pulumi.ComponentResource {
189
191
  execCmdInlinePolicy,
190
192
  ...policies,
191
193
  ]),
192
- tags: constants_1.commonTags,
194
+ tags: common_tags_1.commonTags,
193
195
  }, { parent: this });
194
196
  }
195
197
  addSecurityGroup(securityGroup) {
@@ -214,7 +216,7 @@ class EcsService extends pulumi.ComponentResource {
214
216
  cidrBlocks: ['0.0.0.0/0'],
215
217
  },
216
218
  ],
217
- tags: constants_1.commonTags,
219
+ tags: common_tags_1.commonTags,
218
220
  }, { parent: this });
219
221
  this.addSecurityGroup(securityGroup);
220
222
  }
@@ -236,7 +238,7 @@ class EcsService extends pulumi.ComponentResource {
236
238
  serviceRegistries: {
237
239
  registryArn: this.serviceDiscoveryService.arn,
238
240
  },
239
- })), { tags: Object.assign(Object.assign({}, constants_1.commonTags), ecsServiceArgs.tags) }), { parent: this });
241
+ })), { tags: Object.assign(Object.assign({}, common_tags_1.commonTags), ecsServiceArgs.tags) }), { parent: this });
240
242
  }
241
243
  createServiceDiscovery() {
242
244
  const privateDnsNamespace = this.createPrivateDnsNameSpace();
@@ -252,14 +254,14 @@ class EcsService extends pulumi.ComponentResource {
252
254
  ],
253
255
  routingPolicy: 'MULTIVALUE',
254
256
  },
255
- tags: constants_1.commonTags,
257
+ tags: common_tags_1.commonTags,
256
258
  }, { parent: this });
257
259
  }
258
260
  createPrivateDnsNameSpace() {
259
261
  return new aws.servicediscovery.PrivateDnsNamespace(`${this.name}-private-dns-namespace`, {
260
262
  vpc: this.vpc.vpcId,
261
263
  name: this.name,
262
- tags: constants_1.commonTags,
264
+ tags: common_tags_1.commonTags,
263
265
  }, { parent: this });
264
266
  }
265
267
  enableAutoscaling(clusterName, serviceName, minCount, maxCount) {
@@ -269,7 +271,7 @@ class EcsService extends pulumi.ComponentResource {
269
271
  resourceId: pulumi.interpolate `service/${clusterName}/${serviceName}`,
270
272
  serviceNamespace: 'ecs',
271
273
  scalableDimension: 'ecs:service:DesiredCount',
272
- tags: constants_1.commonTags,
274
+ tags: common_tags_1.commonTags,
273
275
  }, { parent: this });
274
276
  const memoryAutoscalingPolicy = new aws.appautoscaling.Policy(`${this.name}-memory-autoscale-policy`, {
275
277
  policyType: 'TargetTrackingScaling',
@@ -309,7 +311,7 @@ class EcsService extends pulumi.ComponentResource {
309
311
  ],
310
312
  performanceMode: 'generalPurpose',
311
313
  throughputMode: 'bursting',
312
- tags: Object.assign(Object.assign({}, constants_1.commonTags), { Name: `${this.name}-data` }),
314
+ tags: Object.assign(Object.assign({}, common_tags_1.commonTags), { Name: `${this.name}-data` }),
313
315
  }, { parent: this });
314
316
  const securityGroup = new aws.ec2.SecurityGroup(`${this.name}-persistent-storage-security-group`, {
315
317
  vpcId: vpc.vpcId,
@@ -321,7 +323,7 @@ class EcsService extends pulumi.ComponentResource {
321
323
  cidrBlocks: [vpc.vpc.cidrBlock],
322
324
  },
323
325
  ],
324
- tags: constants_1.commonTags,
326
+ tags: common_tags_1.commonTags,
325
327
  }, { parent: this });
326
328
  this.vpc.privateSubnetIds.apply(subnetIds => {
327
329
  subnetIds.forEach(subnetId => {
@@ -351,16 +353,3 @@ class EcsService extends pulumi.ComponentResource {
351
353
  }
352
354
  }
353
355
  exports.EcsService = EcsService;
354
- function parseSize(size) {
355
- const mapCapabilities = ({ cpu, memory }) => ({
356
- cpu: String(cpu),
357
- memory: String(memory),
358
- });
359
- if (typeof size === 'string') {
360
- return mapCapabilities(constants_1.PredefinedSize[size]);
361
- }
362
- if (typeof size === 'object') {
363
- return mapCapabilities(size);
364
- }
365
- throw Error('Incorrect EcsService size argument');
366
- }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../../../src/components/ecs-service/policies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AAEnC,eAAO,MAAM,gBAAgB,EAAE,GAAG,CAAC,GAAG,CAAC,cAYtC,CAAC"}
@@ -0,0 +1,37 @@
1
+ import * as pulumi from '@pulumi/pulumi';
2
+ export type TaskSize = {
3
+ cpu: pulumi.Input<string>;
4
+ memory: pulumi.Input<string>;
5
+ } | keyof typeof PredefinedSize;
6
+ export declare function parseTaskSize(size: pulumi.UnwrappedObject<TaskSize>): {
7
+ cpu: string;
8
+ memory: string;
9
+ };
10
+ declare const PredefinedSize: {
11
+ readonly small: {
12
+ readonly cpu: number;
13
+ readonly memory: number;
14
+ };
15
+ readonly medium: {
16
+ readonly cpu: number;
17
+ readonly memory: 1024;
18
+ };
19
+ readonly large: {
20
+ readonly cpu: 1024;
21
+ readonly memory: number;
22
+ };
23
+ readonly xlarge: {
24
+ readonly cpu: number;
25
+ readonly memory: number;
26
+ };
27
+ readonly '2xlarge': {
28
+ readonly cpu: number;
29
+ readonly memory: number;
30
+ };
31
+ readonly '3xlarge': {
32
+ readonly cpu: number;
33
+ readonly memory: number;
34
+ };
35
+ };
36
+ export {};
37
+ //# sourceMappingURL=task-size.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-size.d.ts","sourceRoot":"","sources":["../../../src/components/ecs-service/task-size.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AAEzC,MAAM,MAAM,QAAQ,GAChB;IACE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;CAC9B,GACD,MAAM,OAAO,cAAc,CAAC;AAEhC,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG;IACrE,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB,CAQA;AAKD,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;CAyBV,CAAC"}
@@ -1,10 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.commonTags = exports.PredefinedSize = void 0;
4
- const pulumi = require("@pulumi/pulumi");
3
+ exports.parseTaskSize = parseTaskSize;
4
+ function parseTaskSize(size) {
5
+ if (typeof size === 'string') {
6
+ const { cpu, memory } = PredefinedSize[size];
7
+ return { cpu: `${cpu}`, memory: `${memory}` };
8
+ }
9
+ return size;
10
+ }
5
11
  const CPU_1_VCPU = 1024;
6
12
  const MEMORY_1GB = 1024;
7
- exports.PredefinedSize = {
13
+ const PredefinedSize = {
8
14
  small: {
9
15
  cpu: CPU_1_VCPU / 4, // 0.25 vCPU
10
16
  memory: MEMORY_1GB / 2, // 0.5 GB memory
@@ -21,8 +27,12 @@ exports.PredefinedSize = {
21
27
  cpu: CPU_1_VCPU * 2, // 2 vCPU
22
28
  memory: MEMORY_1GB * 4, // 4 GB memory
23
29
  },
24
- };
25
- exports.commonTags = {
26
- Env: pulumi.getStack(),
27
- Project: pulumi.getProject(),
30
+ '2xlarge': {
31
+ cpu: CPU_1_VCPU * 4, // 4 vCPU
32
+ memory: MEMORY_1GB * 8, // 8 GB memory
33
+ },
34
+ '3xlarge': {
35
+ cpu: CPU_1_VCPU * 8, // 8 vCPU
36
+ memory: MEMORY_1GB * 16, // 16 GB memory
37
+ },
28
38
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/grafana/dashboards/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,KAAK,KAAK,MAAM,UAAU,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panels.d.ts","sourceRoot":"","sources":["../../../../src/components/grafana/dashboards/panels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAQlC,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAChC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,CAAC,MAAM,GACrB,OAAO,CAAC,KAAK,CA0Bf;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAChC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,CAAC,MAAM,GACrB,OAAO,CAAC,KAAK,CAUf;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAChC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,IAAI,CAAC,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,KAAK,CA4Bf;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAChC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,CAAC,MAAM,GACrB,OAAO,CAAC,KAAK,CAoCf"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/grafana/dashboards/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAGhD,yBAAiB,OAAO,CAAC;IAIvB,KAAY,SAAS,GAAG;QACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,KAAY,MAAM,GAAG;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,SAAS,EAAE,CAAC;KACzB,CAAC;IAEF,KAAY,IAAI,GAAG;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5B,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;KAC5C,CAAC;IAEF,KAAY,KAAK,GAAG;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE;YACP,IAAI,EAAE,MAAM,CAAC;YACb,YAAY,EAAE,MAAM,CAAC;SACtB,EAAE,CAAC;QACJ,WAAW,EAAE;YACX,QAAQ,EAAE;gBACR,IAAI,CAAC,EAAE,MAAM,CAAC;gBACd,GAAG,CAAC,EAAE,MAAM,CAAC;gBACb,GAAG,CAAC,EAAE,MAAM,CAAC;gBACb,KAAK,CAAC,EAAE;oBACN,IAAI,EAAE,MAAM,CAAC;iBACd,CAAC;gBACF,UAAU,CAAC,EAAE;oBACX,IAAI,EAAE,MAAM,CAAC;oBACb,KAAK,EAAE,SAAS,EAAE,CAAC;iBACpB,CAAC;gBACF,MAAM,CAAC,EAAE;oBACP,iBAAiB,CAAC,EAAE,MAAM,CAAC;oBAC3B,SAAS,EAAE,OAAO,CAAC;iBACpB,CAAC;aACH,CAAC;SACH,CAAC;QACF,OAAO,CAAC,EAAE;YACR,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,aAAa,CAAC,EAAE;gBACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;gBACjB,MAAM,CAAC,EAAE,MAAM,CAAC;gBAChB,MAAM,CAAC,EAAE,OAAO,CAAC;aAClB,CAAC;SACH,CAAC;KACH,CAAC;IAEF,UAAiB,KAAK,CAAC;QACrB,KAAY,QAAQ,GAAG;YACrB,CAAC,EAAE,MAAM,CAAC;YACV,CAAC,EAAE,MAAM,CAAC;YACV,CAAC,EAAE,MAAM,CAAC;YACV,CAAC,EAAE,MAAM,CAAC;SACX,CAAC;KACH;CACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-server-slo.d.ts","sourceRoot":"","sources":["../../../../src/components/grafana/dashboards/web-server-slo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAQlC,cAAM,4BAA4B;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,CAAM;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBAEnB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI;IAK5C,gBAAgB,CACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,KAAK,CAAC,SAAS,EACvB,UAAU,EAAE,MAAM,EAClB,mBAAmB,EAAE,MAAM,GAC1B,IAAI;IAoCP,eAAe,CACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,KAAK,CAAC,SAAS,EACvB,WAAW,EAAE,KAAK,CAAC,SAAS,EAC5B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,mBAAmB,EAAE,MAAM,GAC1B,IAAI;IAwDP,WAAW,CACT,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,KAAK,CAAC,SAAS,EACvB,WAAW,EAAE,KAAK,CAAC,SAAS,EAC5B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,mBAAmB,EAAE,MAAM,GAC1B,IAAI;IA4EP,KAAK,CACH,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GACxC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;CAmBxC;AAED,eAAe,4BAA4B,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/grafana/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC"}
@@ -1,13 +1,15 @@
1
1
  import * as aws from '@pulumi/aws';
2
2
  import * as pulumi from '@pulumi/pulumi';
3
- export type PasswordArgs = {
4
- value?: pulumi.Input<string>;
5
- };
3
+ export declare namespace Password {
4
+ type Args = {
5
+ value?: pulumi.Input<string>;
6
+ };
7
+ }
6
8
  export declare class Password extends pulumi.ComponentResource {
7
9
  name: string;
8
10
  value: pulumi.Output<string>;
9
11
  secret: aws.secretsmanager.Secret;
10
- constructor(name: string, args: PasswordArgs, opts?: pulumi.ComponentResourceOptions);
12
+ constructor(name: string, args?: Password.Args, opts?: pulumi.ComponentResourceOptions);
11
13
  private createPasswordSecret;
12
14
  }
13
- //# sourceMappingURL=password.d.ts.map
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/password/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AAIzC,yBAAiB,QAAQ,CAAC;IACxB,KAAY,IAAI,GAAG;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KAC9B,CAAC;CACH;AAED,qBAAa,QAAS,SAAQ,MAAM,CAAC,iBAAiB;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,EAAE,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC;gBAGhC,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,QAAQ,CAAC,IAAS,EACxB,IAAI,GAAE,MAAM,CAAC,wBAA6B;IAgC5C,OAAO,CAAC,oBAAoB;CAwB7B"}
@@ -4,16 +4,13 @@ exports.Password = void 0;
4
4
  const aws = require("@pulumi/aws");
5
5
  const pulumi = require("@pulumi/pulumi");
6
6
  const random = require("@pulumi/random");
7
- const constants_1 = require("../constants");
7
+ const common_tags_1 = require("../../shared/common-tags");
8
8
  class Password extends pulumi.ComponentResource {
9
- constructor(name, args, opts = {}) {
10
- const optsWithDefauls = pulumi.mergeOptions(opts, {
11
- additionalSecretOutputs: ['value'],
12
- });
13
- super('studion:Password', name, {}, optsWithDefauls);
9
+ constructor(name, args = {}, opts = {}) {
10
+ super('studion:password:Password', name, {}, Object.assign(Object.assign({}, opts), { aliases: [...(opts.aliases || []), { type: 'studion:Password' }] }));
14
11
  this.name = name;
15
12
  if (args.value) {
16
- this.value = pulumi.output(args.value);
13
+ this.value = pulumi.secret(args.value);
17
14
  }
18
15
  else {
19
16
  const password = new random.RandomPassword(`${this.name}-random-password`, {
@@ -31,7 +28,7 @@ class Password extends pulumi.ComponentResource {
31
28
  const stack = pulumi.getStack();
32
29
  const passwordSecret = new aws.secretsmanager.Secret(`${this.name}-password-secret`, {
33
30
  namePrefix: `${stack}/${project}/${this.name}-`,
34
- tags: constants_1.commonTags,
31
+ tags: common_tags_1.commonTags,
35
32
  }, { parent: this });
36
33
  const passwordSecretValue = new aws.secretsmanager.SecretVersion(`${this.name}-password-secret-value`, {
37
34
  secretId: passwordSecret.id,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/prometheus/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../src/components/prometheus/queries.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAO1D,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,SAAS,GACnB,MAAM,CAUR;AAED,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,SAAS,GACnB,MAAM,CAER;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,GACb,MAAM,CAYR;AAED,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,GACb,MAAM,CAER;AAED,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,MAAM,CAKR;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAWR;AAED,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAER"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.test.d.ts","sourceRoot":"","sources":["../../../src/components/prometheus/queries.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,38 @@
1
+ import * as aws from '@pulumi/aws';
2
+ import * as pulumi from '@pulumi/pulumi';
3
+ import * as awsx from '@pulumi/awsx';
4
+ export declare namespace ElastiCacheRedis {
5
+ type Args = {
6
+ vpc: pulumi.Input<awsx.ec2.Vpc>;
7
+ /**
8
+ * Version number of the cache engine to be used
9
+ * @default '7.1'
10
+ */
11
+ engineVersion?: string;
12
+ /**
13
+ * Instance type for cache nodes
14
+ * @default 'cache.t4g.micro'
15
+ */
16
+ nodeType?: string;
17
+ /**
18
+ * The name of the parameter group to associate with this cache cluster.
19
+ * @default 'default.redis7'
20
+ */
21
+ parameterGroupName?: pulumi.Input<string>;
22
+ tags?: pulumi.Input<{
23
+ [key: string]: pulumi.Input<string>;
24
+ }>;
25
+ };
26
+ }
27
+ export declare class ElastiCacheRedis extends pulumi.ComponentResource {
28
+ name: string;
29
+ vpc: pulumi.Output<awsx.ec2.Vpc>;
30
+ cluster: aws.elasticache.Cluster;
31
+ securityGroup: aws.ec2.SecurityGroup;
32
+ subnetGroup: aws.elasticache.SubnetGroup;
33
+ constructor(name: string, args: ElastiCacheRedis.Args, opts?: pulumi.ComponentResourceOptions);
34
+ private createRedisCluster;
35
+ private createSubnetGroup;
36
+ private createSecurityGroup;
37
+ }
38
+ //# sourceMappingURL=elasticache-redis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elasticache-redis.d.ts","sourceRoot":"","sources":["../../../src/components/redis/elasticache-redis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AAIrC,yBAAiB,gBAAgB,CAAC;IAChC,KAAY,IAAI,GAAG;QACjB,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC;;;WAGG;QACH,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB;;;WAGG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB;;;WAGG;QACH,kBAAkB,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC;YAClB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SACrC,CAAC,CAAC;KACJ,CAAC;CACH;AAQD,qBAAa,gBAAiB,SAAQ,MAAM,CAAC,iBAAiB;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC;IACjC,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC;IACrC,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC;gBAGvC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,gBAAgB,CAAC,IAAI,EAC3B,IAAI,GAAE,MAAM,CAAC,wBAA6B;IAoB5C,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,mBAAmB;CAkB5B"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ElastiCacheRedis = void 0;
4
+ const aws = require("@pulumi/aws");
5
+ const pulumi = require("@pulumi/pulumi");
6
+ const common_tags_1 = require("../../shared/common-tags");
7
+ const merge_with_defaults_1 = require("../../shared/merge-with-defaults");
8
+ const defaults = {
9
+ engineVersion: '7.1',
10
+ nodeType: 'cache.t4g.micro',
11
+ parameterGroupName: 'default.redis7',
12
+ };
13
+ class ElastiCacheRedis extends pulumi.ComponentResource {
14
+ constructor(name, args, opts = {}) {
15
+ super('studion:redis:ElastiCacheRedis', name, {}, opts);
16
+ const argsWithDefaults = (0, merge_with_defaults_1.mergeWithDefaults)(defaults, args);
17
+ this.name = name;
18
+ this.vpc = pulumi.output(argsWithDefaults.vpc);
19
+ this.securityGroup = this.createSecurityGroup();
20
+ this.subnetGroup = this.createSubnetGroup();
21
+ this.cluster = this.createRedisCluster(argsWithDefaults.engineVersion, argsWithDefaults.nodeType, argsWithDefaults.parameterGroupName, argsWithDefaults.tags);
22
+ this.registerOutputs();
23
+ }
24
+ createRedisCluster(engineVersion, nodeType, parameterGroupName, tags) {
25
+ return new aws.elasticache.Cluster(`${this.name}-cluster`, {
26
+ engine: 'redis',
27
+ engineVersion: engineVersion,
28
+ nodeType: nodeType,
29
+ numCacheNodes: 1,
30
+ securityGroupIds: [this.securityGroup.id],
31
+ subnetGroupName: this.subnetGroup.name,
32
+ parameterGroupName: parameterGroupName,
33
+ port: 6379,
34
+ tags: Object.assign(Object.assign({}, common_tags_1.commonTags), tags),
35
+ }, { parent: this });
36
+ }
37
+ createSubnetGroup() {
38
+ return new aws.elasticache.SubnetGroup(`${this.name}-subnet-group`, {
39
+ subnetIds: this.vpc.isolatedSubnetIds,
40
+ tags: common_tags_1.commonTags,
41
+ }, { parent: this });
42
+ }
43
+ createSecurityGroup() {
44
+ return new aws.ec2.SecurityGroup(`${this.name}-security-group`, {
45
+ vpcId: this.vpc.vpcId,
46
+ ingress: [
47
+ {
48
+ protocol: 'tcp',
49
+ fromPort: 6379,
50
+ toPort: 6379,
51
+ cidrBlocks: [this.vpc.vpc.cidrBlock],
52
+ },
53
+ ],
54
+ tags: common_tags_1.commonTags,
55
+ }, { parent: this });
56
+ }
57
+ }
58
+ exports.ElastiCacheRedis = ElastiCacheRedis;
@@ -0,0 +1,20 @@
1
+ import * as pulumi from '@pulumi/pulumi';
2
+ import * as upstash from '@upstash/pulumi';
3
+ import { Password } from '../password';
4
+ export declare namespace UpstashRedis {
5
+ type Args = {
6
+ dbName: pulumi.Input<string>;
7
+ /**
8
+ * Primary region for the database
9
+ * @default 'us-east-1'
10
+ */
11
+ primaryRegion?: pulumi.Input<'us-east-1' | 'us-west-1' | 'us-west-2' | 'eu-central-1' | 'eu-west-1' | 'sa-east-1' | 'ap-southeast-1' | 'ap-southeast-2'>;
12
+ };
13
+ }
14
+ export declare class UpstashRedis extends pulumi.ComponentResource {
15
+ name: string;
16
+ instance: upstash.RedisDatabase;
17
+ password: Password;
18
+ constructor(name: string, args: UpstashRedis.Args, opts?: pulumi.ComponentResourceOptions);
19
+ }
20
+ //# sourceMappingURL=upstash-redis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upstash-redis.d.ts","sourceRoot":"","sources":["../../../src/components/redis/upstash-redis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,yBAAiB,YAAY,CAAC;IAC5B,KAAY,IAAI,GAAG;QACjB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7B;;;WAGG;QACH,aAAa,CAAC,EAAE,MAAM,CAAC,KAAK,CACxB,WAAW,GACX,WAAW,GACX,WAAW,GACX,cAAc,GACd,WAAW,GACX,WAAW,GACX,gBAAgB,GAChB,gBAAgB,CACnB,CAAC;KACH,CAAC;CACH;AAOD,qBAAa,YAAa,SAAQ,MAAM,CAAC,iBAAiB;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC;IAChC,QAAQ,EAAE,QAAQ,CAAC;gBAGjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,YAAY,CAAC,IAAI,EACvB,IAAI,GAAE,MAAM,CAAC,wBAA6B;CAoC7C"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UpstashRedis = void 0;
4
+ const pulumi = require("@pulumi/pulumi");
5
+ const upstash = require("@upstash/pulumi");
6
+ const password_1 = require("../password");
7
+ const merge_with_defaults_1 = require("../../shared/merge-with-defaults");
8
+ const defaults = {
9
+ region: 'global',
10
+ primaryRegion: 'us-east-1',
11
+ };
12
+ class UpstashRedis extends pulumi.ComponentResource {
13
+ constructor(name, args, opts = {}) {
14
+ super('studion:redis:UpstashRedis', name, {}, Object.assign(Object.assign({}, opts), { aliases: [...(opts.aliases || []), { type: 'studion:Redis' }] }));
15
+ const dbName = `${pulumi.getProject()}-${pulumi.getStack()}`;
16
+ const argsWithDefaults = (0, merge_with_defaults_1.mergeWithDefaults)(Object.assign(Object.assign({}, defaults), { dbName }), args);
17
+ this.name = name;
18
+ this.instance = new upstash.RedisDatabase(`${this.name}-database`, {
19
+ databaseName: argsWithDefaults.dbName,
20
+ region: argsWithDefaults.region,
21
+ primaryRegion: argsWithDefaults.primaryRegion,
22
+ eviction: true,
23
+ tls: true,
24
+ }, { parent: this });
25
+ this.password = new password_1.Password(`${this.name}-database-password`, { value: this.instance.password }, { parent: this });
26
+ this.registerOutputs();
27
+ }
28
+ }
29
+ exports.UpstashRedis = UpstashRedis;
@@ -0,0 +1,13 @@
1
+ export type CacheRuleTtl = number | keyof typeof PredefinedTtl;
2
+ export declare function parseCacheRuleTtl(ttl: CacheRuleTtl): number | undefined;
3
+ declare const PredefinedTtl: {
4
+ readonly default: undefined;
5
+ readonly off: 0;
6
+ readonly minute: 60;
7
+ readonly hour: 3600;
8
+ readonly day: 86400;
9
+ readonly week: 604800;
10
+ readonly month: 2592000;
11
+ };
12
+ export {};
13
+ //# sourceMappingURL=cache-rule-ttl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-rule-ttl.d.ts","sourceRoot":"","sources":["../../../src/components/static-site/cache-rule-ttl.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,OAAO,aAAa,CAAC;AAE/D,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAMvE;AAED,QAAA,MAAM,aAAa;;;;;;;;CAQT,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseCacheRuleTtl = parseCacheRuleTtl;
4
+ function parseCacheRuleTtl(ttl) {
5
+ if (typeof ttl === 'string') {
6
+ return PredefinedTtl[ttl];
7
+ }
8
+ return ttl;
9
+ }
10
+ const PredefinedTtl = {
11
+ default: undefined,
12
+ off: 0,
13
+ minute: 60,
14
+ hour: 3600,
15
+ day: 86400,
16
+ week: 604800,
17
+ month: 2592000,
18
+ };
@@ -0,0 +1,47 @@
1
+ import * as pulumi from '@pulumi/pulumi';
2
+ import * as aws from '@pulumi/aws';
3
+ import { CacheRuleTtl } from './cache-rule-ttl';
4
+ import { S3Assets } from './s3-assets';
5
+ import { CloudFront } from '../cloudfront';
6
+ export declare namespace StaticSite {
7
+ type CacheRule = {
8
+ pathPattern: string;
9
+ /**
10
+ * The TTL to for the path pattern.
11
+ * Available predefined options are:
12
+ * - `default` (fallback to defaults for CloudFront S3 behavior)
13
+ * - `off` (0 second)
14
+ * - `minute` (60 seconds)
15
+ * - `hour` (3600 seconds)
16
+ * - `day` (86400 seconds)
17
+ * - `week` (604800 seconds)
18
+ * - `month` (2592000 seconds)
19
+ */
20
+ ttl: CacheRuleTtl;
21
+ };
22
+ type Args = {
23
+ domain?: pulumi.Input<string>;
24
+ certificate?: pulumi.Input<aws.acm.Certificate>;
25
+ hostedZoneId: pulumi.Input<string>;
26
+ indexDocument?: pulumi.Input<string>;
27
+ errorDocument?: pulumi.Input<string>;
28
+ /**
29
+ * Caching to enforce for S3 assets. Combined with S3 bucket translates
30
+ * into CloudFront behaviors.
31
+ * The default cache rule, i.e. path pattern `*` or `/*`, must always be last.
32
+ * @see CloudFront.Args.behaviors
33
+ */
34
+ cacheRules?: CacheRule[];
35
+ tags?: pulumi.Input<{
36
+ [key: string]: pulumi.Input<string>;
37
+ }>;
38
+ };
39
+ }
40
+ export declare class StaticSite extends pulumi.ComponentResource {
41
+ name: string;
42
+ s3Assets: S3Assets;
43
+ cf: CloudFront;
44
+ constructor(name: string, args: StaticSite.Args, opts?: pulumi.ComponentResourceOptions);
45
+ private getCloudFrontBehaviors;
46
+ }
47
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/static-site/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,YAAY,EAAqB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,yBAAiB,UAAU,CAAC;IAC1B,KAAY,SAAS,GAAG;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB;;;;;;;;;;WAUG;QACH,GAAG,EAAE,YAAY,CAAC;KACnB,CAAC;IAEF,KAAY,IAAI,GAAG;QAKjB,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAK9B,WAAW,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAChD,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnC,aAAa,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,aAAa,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC;;;;;WAKG;QACH,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;QACzB,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC;YAClB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SACrC,CAAC,CAAC;KACJ,CAAC;CACH;AAED,qBAAa,UAAW,SAAQ,MAAM,CAAC,iBAAiB;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,EAAE,EAAE,UAAU,CAAC;gBAGb,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,CAAC,IAAI,EACrB,IAAI,GAAE,MAAM,CAAC,wBAA6B;IAwC5C,OAAO,CAAC,sBAAsB;CAsB/B"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StaticSite = void 0;
4
+ const pulumi = require("@pulumi/pulumi");
5
+ const cache_rule_ttl_1 = require("./cache-rule-ttl");
6
+ const s3_assets_1 = require("./s3-assets");
7
+ const cloudfront_1 = require("../cloudfront");
8
+ class StaticSite extends pulumi.ComponentResource {
9
+ constructor(name, args, opts = {}) {
10
+ super('studion:static-site:StaticSite', name, args, Object.assign(Object.assign({}, opts), { aliases: [...(opts.aliases || []), { type: 'studion:StaticSite' }] }));
11
+ const { domain, hostedZoneId, certificate, indexDocument, errorDocument, cacheRules, tags, } = args;
12
+ if (!domain && !certificate) {
13
+ throw new Error('Provide either domain or certificate, or both');
14
+ }
15
+ this.name = name;
16
+ this.s3Assets = new s3_assets_1.S3Assets(`${this.name}-s3-assets`, { indexDocument, errorDocument, tags }, { parent: this });
17
+ this.cf = new cloudfront_1.CloudFront(`${this.name}-cf`, {
18
+ behaviors: this.getCloudFrontBehaviors(cacheRules),
19
+ domain,
20
+ certificate,
21
+ hostedZoneId,
22
+ tags,
23
+ }, { parent: this });
24
+ }
25
+ getCloudFrontBehaviors(cacheRules) {
26
+ if (!cacheRules) {
27
+ return [
28
+ {
29
+ type: cloudfront_1.CloudFront.BehaviorType.S3,
30
+ pathPattern: '*',
31
+ bucket: this.s3Assets.bucket,
32
+ websiteConfig: this.s3Assets.websiteConfig,
33
+ },
34
+ ];
35
+ }
36
+ return cacheRules.map(rule => ({
37
+ type: cloudfront_1.CloudFront.BehaviorType.S3,
38
+ pathPattern: rule.pathPattern,
39
+ bucket: this.s3Assets.bucket,
40
+ websiteConfig: this.s3Assets.websiteConfig,
41
+ cacheTtl: (0, cache_rule_ttl_1.parseCacheRuleTtl)(rule.ttl),
42
+ }));
43
+ }
44
+ }
45
+ exports.StaticSite = StaticSite;
@@ -0,0 +1,20 @@
1
+ import * as pulumi from '@pulumi/pulumi';
2
+ import * as aws from '@pulumi/aws';
3
+ export declare namespace S3Assets {
4
+ type Args = {
5
+ indexDocument?: pulumi.Input<string>;
6
+ errorDocument?: pulumi.Input<string>;
7
+ tags?: pulumi.Input<{
8
+ [key: string]: pulumi.Input<string>;
9
+ }>;
10
+ };
11
+ }
12
+ export declare class S3Assets extends pulumi.ComponentResource {
13
+ name: string;
14
+ bucket: aws.s3.Bucket;
15
+ websiteConfig: aws.s3.BucketWebsiteConfiguration;
16
+ constructor(name: string, args: S3Assets.Args, opts?: pulumi.ComponentResourceOptions);
17
+ private setupWebsiteBucketAccess;
18
+ private createWebsiteBucket;
19
+ }
20
+ //# sourceMappingURL=s3-assets.d.ts.map