@studion/infra-code-blocks 0.8.0-next.0 → 0.8.0-next.2
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.
- package/README.md +7 -5
- package/dist/components/ecs-service.d.ts.map +1 -1
- package/dist/components/ecs-service.js +4 -5
- package/dist/components/mongo.d.ts.map +1 -1
- package/dist/components/mongo.js +5 -3
- package/dist/v2/components/ecs-service/index.d.ts +6 -1
- package/dist/v2/components/ecs-service/index.d.ts.map +1 -1
- package/dist/v2/components/ecs-service/index.js +49 -45
- package/dist/v2/components/grafana/dashboards/index.d.ts +1 -1
- package/dist/v2/components/grafana/dashboards/panels.d.ts.map +1 -1
- package/dist/v2/components/grafana/dashboards/panels.js +38 -28
- package/dist/v2/components/grafana/dashboards/types.d.ts.map +1 -1
- package/dist/v2/components/grafana/dashboards/web-server-slo.d.ts.map +1 -1
- package/dist/v2/components/grafana/dashboards/web-server-slo.js +13 -16
- package/dist/v2/components/prometheus/queries.d.ts.map +1 -1
- package/dist/v2/components/web-server/builder.d.ts.map +1 -1
- package/dist/v2/components/web-server/builder.js +1 -0
- package/dist/v2/components/web-server/index.d.ts +1 -1
- package/dist/v2/components/web-server/index.d.ts.map +1 -1
- package/dist/v2/components/web-server/index.js +42 -30
- package/dist/v2/components/web-server/load-balancer.d.ts.map +1 -1
- package/dist/v2/components/web-server/load-balancer.js +23 -13
- package/dist/v2/otel/batch-processor.js +1 -1
- package/dist/v2/otel/builder.d.ts.map +1 -1
- package/dist/v2/otel/builder.js +12 -10
- package/dist/v2/otel/config.d.ts.map +1 -1
- package/dist/v2/otel/config.js +13 -14
- package/dist/v2/otel/memory-limiter-processor.js +1 -1
- package/dist/v2/otel/otlp-receiver.js +3 -3
- package/package.json +6 -11
package/README.md
CHANGED
|
@@ -103,11 +103,11 @@ type ProjectArgs = {
|
|
|
103
103
|
};
|
|
104
104
|
```
|
|
105
105
|
|
|
106
|
-
| Argument
|
|
107
|
-
|
|
|
108
|
-
| services \*
|
|
109
|
-
| enableSSMConnect
|
|
110
|
-
| numberOfAvailabilityZones |
|
|
106
|
+
| Argument | Description |
|
|
107
|
+
| :------------------------ | :-----------------------------------------------------------------------------------------------------------------------------------------------------------: |
|
|
108
|
+
| services \* | Service list. |
|
|
109
|
+
| enableSSMConnect | Set up ec2 instance and SSM in order to connect to the database in the private subnet. Please refer to the [SSM Connect](#ssm-connect) section for more info. |
|
|
110
|
+
| numberOfAvailabilityZones | Default is 2 which is recommended. If building a dev server, we can reduce to 1 availability zone to reduce hosting cost. |
|
|
111
111
|
|
|
112
112
|
```ts
|
|
113
113
|
type DatabaseServiceOptions = {
|
|
@@ -481,9 +481,11 @@ type DatabaseReplicaArgs = {
|
|
|
481
481
|
}>;
|
|
482
482
|
};
|
|
483
483
|
```
|
|
484
|
+
|
|
484
485
|
Database replica requires primary DB instance to exist. If the replica is in the same
|
|
485
486
|
region as primary instance, we should not set `dbSubnetGroupNameParam`.
|
|
486
487
|
The `replicateSourceDb` param is referenced like this:
|
|
488
|
+
|
|
487
489
|
```javascript
|
|
488
490
|
const primaryDb = new studion.Database(...);
|
|
489
491
|
const replica = new studion.DatabaseReplica('replica', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ecs-service.d.ts","sourceRoot":"","sources":["../../src/components/ecs-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,EAAc,IAAI,EAAE,MAAM,eAAe,CAAC;AAKjD,eAAO,MAAM,SAAS,QAA2B,CAAC;AAElD,eAAO,MAAM,gBAAgB,EAAE,GAAG,CAAC,GAAG,CAAC,cAYtC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAAE,IAAI,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ecs-service.d.ts","sourceRoot":"","sources":["../../src/components/ecs-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,EAAc,IAAI,EAAE,MAAM,eAAe,CAAC;AAKjD,eAAO,MAAM,SAAS,QAA2B,CAAC;AAElD,eAAO,MAAM,gBAAgB,EAAE,GAAG,CAAC,GAAG,CAAC,cAYtC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,uBAAuB,EAAE,CAAC;IACnC,WAAW,EAAE,2BAA2B,EAAE,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnC;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAChD;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpC;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE1B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;IACnD;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC;;;OAGG;IACH,0BAA0B,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClD;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAChE;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC;QACzB;;WAEG;QACH,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B;;WAEG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAChC;;WAEG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KACjC,CAAC,CAAC;IACH,gBAAgB,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC7C;;;OAGG;IACH,aAAa,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC;IACtC;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvC,+BAA+B,CAAC,EAAE,MAAM,CAAC,KAAK,CAC5C,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CACjC,CAAC;IACF,sBAAsB,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACxE;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC;QAClB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KACrC,CAAC,CAAC;CACJ,CAAC;AAgCF,qBAAa,UAAW,SAAQ,MAAM,CAAC,iBAAiB;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC;IAClC,cAAc,EAAE,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC;IACvC,uBAAuB,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC;IACvD,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;gBAGvB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,cAAc,EACpB,IAAI,GAAE,MAAM,CAAC,wBAA6B;IA8B5C,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,uBAAuB;IA6D/B,OAAO,CAAC,oBAAoB;IAqM5B,OAAO,CAAC,sBAAsB;IA+B9B,OAAO,CAAC,gBAAgB;IAwExB,OAAO,CAAC,iBAAiB;CAkD1B"}
|
|
@@ -29,7 +29,7 @@ const STANDARD_DIRECTORY_PERMISSIONS = '0755';
|
|
|
29
29
|
const FIRST_POSIX_NON_ROOT_USER = {
|
|
30
30
|
userId: 1000,
|
|
31
31
|
groupId: 1000,
|
|
32
|
-
permissions: STANDARD_DIRECTORY_PERMISSIONS
|
|
32
|
+
permissions: STANDARD_DIRECTORY_PERMISSIONS,
|
|
33
33
|
};
|
|
34
34
|
const defaults = {
|
|
35
35
|
desiredCount: 1,
|
|
@@ -224,6 +224,7 @@ class EcsService extends pulumi.ComponentResource {
|
|
|
224
224
|
readOnly: (_a = mountPoint.readOnly) !== null && _a !== void 0 ? _a : false,
|
|
225
225
|
});
|
|
226
226
|
}),
|
|
227
|
+
user: `${FIRST_POSIX_NON_ROOT_USER.userId}:${FIRST_POSIX_NON_ROOT_USER.groupId}`,
|
|
227
228
|
})), { logConfiguration: {
|
|
228
229
|
logDriver: 'awslogs',
|
|
229
230
|
options: {
|
|
@@ -236,9 +237,7 @@ class EcsService extends pulumi.ComponentResource {
|
|
|
236
237
|
secrets }),
|
|
237
238
|
]);
|
|
238
239
|
}) }, (argsWithDefaults.persistentStorageConfig && {
|
|
239
|
-
volumes: argsWithDefaults.persistentStorageConfig
|
|
240
|
-
.volumes
|
|
241
|
-
.map(volume => ({
|
|
240
|
+
volumes: argsWithDefaults.persistentStorageConfig.volumes.map(volume => ({
|
|
242
241
|
name: volume.name,
|
|
243
242
|
efsVolumeConfiguration: {
|
|
244
243
|
fileSystemId,
|
|
@@ -247,7 +246,7 @@ class EcsService extends pulumi.ComponentResource {
|
|
|
247
246
|
accessPointId: accessPoint.id,
|
|
248
247
|
iam: 'ENABLED',
|
|
249
248
|
},
|
|
250
|
-
}
|
|
249
|
+
},
|
|
251
250
|
})),
|
|
252
251
|
})), { tags: Object.assign(Object.assign({}, constants_1.commonTags), argsWithDefaults.tags) }), { parent: this });
|
|
253
252
|
return taskDefinition;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongo.d.ts","sourceRoot":"","sources":["../../src/components/mongo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,MAAM,SAAS,GAAG,IAAI,CAC1B,cAAc,EACd,MAAM,GAAG,WAAW,GAAG,aAAa,GAAG,OAAO,GAAG,cAAc,GAAG,MAAM,CACzE,GAAG;IACF,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACvD;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,cAAc,CAAC,yBAAyB,CAAC,CAAC;CACrE,CAAC;AAEF,qBAAa,KAAM,SAAQ,MAAM,CAAC,iBAAiB;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBAG1B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,EACf,IAAI,GAAE,MAAM,CAAC,wBAA6B;
|
|
1
|
+
{"version":3,"file":"mongo.d.ts","sourceRoot":"","sources":["../../src/components/mongo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,MAAM,SAAS,GAAG,IAAI,CAC1B,cAAc,EACd,MAAM,GAAG,WAAW,GAAG,aAAa,GAAG,OAAO,GAAG,cAAc,GAAG,MAAM,CACzE,GAAG;IACF,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACvD;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,cAAc,CAAC,yBAAyB,CAAC,CAAC;CACrE,CAAC;AAEF,qBAAa,KAAM,SAAQ,MAAM,CAAC,iBAAiB;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBAG1B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,EACf,IAAI,GAAE,MAAM,CAAC,wBAA6B;CA8D7C"}
|
package/dist/components/mongo.js
CHANGED
|
@@ -23,10 +23,12 @@ class Mongo extends pulumi.ComponentResource {
|
|
|
23
23
|
const port = args.port || 27017;
|
|
24
24
|
const persistentStorageConfig = args.persistentStorageConfig || {
|
|
25
25
|
volumes: [{ name: 'mongo' }],
|
|
26
|
-
mountPoints: [
|
|
26
|
+
mountPoints: [
|
|
27
|
+
{
|
|
27
28
|
sourceVolume: 'mongo',
|
|
28
|
-
containerPath: '/data/db'
|
|
29
|
-
}
|
|
29
|
+
containerPath: '/data/db',
|
|
30
|
+
},
|
|
31
|
+
],
|
|
30
32
|
};
|
|
31
33
|
const { username, password, privateSubnetIds } = args, ecsServiceArgs = __rest(args, ["username", "password", "privateSubnetIds"]);
|
|
32
34
|
this.name = name;
|
|
@@ -68,6 +68,11 @@ export declare namespace EcsService {
|
|
|
68
68
|
containers: EcsService.Container[];
|
|
69
69
|
loadBalancers?: pulumi.Input<LoadBalancerConfig[]>;
|
|
70
70
|
volumes?: pulumi.Input<pulumi.Input<EcsService.PersistentStorageVolume>[]>;
|
|
71
|
+
/**
|
|
72
|
+
* Type of deployment controller to use.
|
|
73
|
+
* @default "ECS"
|
|
74
|
+
*/
|
|
75
|
+
deploymentController?: 'ECS' | 'CODE_DEPLOY' | 'EXTERNAL';
|
|
71
76
|
/**
|
|
72
77
|
* Number of instances of the task definition to place and keep running.
|
|
73
78
|
* @default 1
|
|
@@ -144,7 +149,7 @@ export declare class EcsService extends pulumi.ComponentResource {
|
|
|
144
149
|
private createContainerDefinition;
|
|
145
150
|
private createTaskExecutionRole;
|
|
146
151
|
private createTaskRole;
|
|
147
|
-
addSecurityGroup(securityGroup:
|
|
152
|
+
addSecurityGroup(securityGroup: aws.ec2.SecurityGroup): void;
|
|
148
153
|
private createDefaultSecurityGroup;
|
|
149
154
|
private createEcsService;
|
|
150
155
|
private createServiceDiscovery;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/v2/components/ecs-service/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AACrC,OAAO,EAAc,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAOvD,KAAK,iBAAiB,GAAG;IACvB,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC;IAC/B,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/v2/components/ecs-service/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,9 +17,10 @@ const STANDARD_DIRECTORY_PERMISSIONS = '0755';
|
|
|
17
17
|
const FIRST_POSIX_NON_ROOT_USER = {
|
|
18
18
|
userId: 1000,
|
|
19
19
|
groupId: 1000,
|
|
20
|
-
permissions: STANDARD_DIRECTORY_PERMISSIONS
|
|
20
|
+
permissions: STANDARD_DIRECTORY_PERMISSIONS,
|
|
21
21
|
};
|
|
22
22
|
const defaults = {
|
|
23
|
+
deploymentController: 'ECS',
|
|
23
24
|
desiredCount: 1,
|
|
24
25
|
size: 'small',
|
|
25
26
|
environment: [],
|
|
@@ -39,7 +40,8 @@ class EcsService extends pulumi.ComponentResource {
|
|
|
39
40
|
constructor(name, args, opts = {}) {
|
|
40
41
|
super('studion:ecs:Service', name, {}, opts);
|
|
41
42
|
const argsWithDefaults = Object.assign({}, defaults, args);
|
|
42
|
-
const taskExecutionRoleInlinePolicies = pulumi.output(args.taskExecutionRoleInlinePolicies ||
|
|
43
|
+
const taskExecutionRoleInlinePolicies = pulumi.output(args.taskExecutionRoleInlinePolicies ||
|
|
44
|
+
defaults.taskExecutionRoleInlinePolicies);
|
|
43
45
|
const taskRoleInlinePolicies = pulumi.output(args.taskRoleInlinePolicies || defaults.taskRoleInlinePolicies);
|
|
44
46
|
this.name = name;
|
|
45
47
|
this.securityGroups = [];
|
|
@@ -47,9 +49,11 @@ class EcsService extends pulumi.ComponentResource {
|
|
|
47
49
|
this.logGroup = this.createLogGroup();
|
|
48
50
|
this.taskExecutionRole = this.createTaskExecutionRole(taskExecutionRoleInlinePolicies);
|
|
49
51
|
this.taskRole = this.createTaskRole(taskRoleInlinePolicies);
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
52
|
+
pulumi.output(argsWithDefaults.volumes).apply(volume => {
|
|
53
|
+
if (volume.length) {
|
|
54
|
+
this.persistentStorage = this.createPersistentStorage(this.vpc);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
53
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));
|
|
54
58
|
if (argsWithDefaults.enableServiceAutoDiscovery) {
|
|
55
59
|
this.serviceDiscoveryService = this.createServiceDiscovery();
|
|
@@ -64,7 +68,7 @@ class EcsService extends pulumi.ComponentResource {
|
|
|
64
68
|
return {
|
|
65
69
|
containerPort: port,
|
|
66
70
|
hostPort: port,
|
|
67
|
-
protocol: 'tcp'
|
|
71
|
+
protocol: 'tcp',
|
|
68
72
|
};
|
|
69
73
|
}
|
|
70
74
|
createLogGroup() {
|
|
@@ -102,22 +106,24 @@ class EcsService extends pulumi.ComponentResource {
|
|
|
102
106
|
accessPointId: this.persistentStorage.accessPoint.id,
|
|
103
107
|
iam: 'ENABLED',
|
|
104
108
|
},
|
|
105
|
-
}
|
|
109
|
+
},
|
|
106
110
|
}));
|
|
107
111
|
});
|
|
108
112
|
}
|
|
109
113
|
createContainerDefinition(container) {
|
|
110
|
-
return this.logGroup.name.apply(logGroupName => (Object.assign(Object.assign(Object.assign(Object.assign({}, container), { readonlyRootFilesystem: false }), container.mountPoints && {
|
|
111
|
-
mountPoints: container.mountPoints.map(mountPoint => pulumi
|
|
114
|
+
return this.logGroup.name.apply(logGroupName => (Object.assign(Object.assign(Object.assign(Object.assign({}, container), { readonlyRootFilesystem: false }), (container.mountPoints && {
|
|
115
|
+
mountPoints: container.mountPoints.map(mountPoint => pulumi
|
|
116
|
+
.all([
|
|
112
117
|
mountPoint.sourceVolume,
|
|
113
118
|
mountPoint.containerPath,
|
|
114
|
-
mountPoint.readOnly
|
|
115
|
-
])
|
|
119
|
+
mountPoint.readOnly,
|
|
120
|
+
])
|
|
121
|
+
.apply(([sourceVolume, containerPath, readOnly]) => ({
|
|
116
122
|
containerPath,
|
|
117
123
|
sourceVolume,
|
|
118
124
|
readOnly: readOnly !== null && readOnly !== void 0 ? readOnly : false,
|
|
119
|
-
})))
|
|
120
|
-
}), { logConfiguration: {
|
|
125
|
+
}))),
|
|
126
|
+
})), { logConfiguration: {
|
|
121
127
|
logDriver: 'awslogs',
|
|
122
128
|
options: {
|
|
123
129
|
'awslogs-group': logGroupName,
|
|
@@ -187,35 +193,29 @@ class EcsService extends pulumi.ComponentResource {
|
|
|
187
193
|
}, { parent: this });
|
|
188
194
|
}
|
|
189
195
|
addSecurityGroup(securityGroup) {
|
|
190
|
-
this.securityGroups.push(securityGroup);
|
|
196
|
+
this.securityGroups.push(pulumi.output(securityGroup));
|
|
191
197
|
}
|
|
192
198
|
createDefaultSecurityGroup() {
|
|
193
|
-
const securityGroup =
|
|
194
|
-
this.vpc,
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
cidrBlocks: ['0.0.0.0/0'],
|
|
214
|
-
},
|
|
215
|
-
],
|
|
216
|
-
tags: constants_1.commonTags,
|
|
217
|
-
}, { parent: this, dependsOn: [vpc] });
|
|
218
|
-
});
|
|
199
|
+
const securityGroup = new aws.ec2.SecurityGroup(`${this.name}-service-security-group`, {
|
|
200
|
+
vpcId: this.vpc.vpcId,
|
|
201
|
+
ingress: [
|
|
202
|
+
{
|
|
203
|
+
fromPort: 0,
|
|
204
|
+
toPort: 0,
|
|
205
|
+
protocol: '-1',
|
|
206
|
+
cidrBlocks: [this.vpc.vpc.cidrBlock],
|
|
207
|
+
},
|
|
208
|
+
],
|
|
209
|
+
egress: [
|
|
210
|
+
{
|
|
211
|
+
fromPort: 0,
|
|
212
|
+
toPort: 0,
|
|
213
|
+
protocol: '-1',
|
|
214
|
+
cidrBlocks: ['0.0.0.0/0'],
|
|
215
|
+
},
|
|
216
|
+
],
|
|
217
|
+
tags: constants_1.commonTags,
|
|
218
|
+
}, { parent: this });
|
|
219
219
|
this.addSecurityGroup(securityGroup);
|
|
220
220
|
}
|
|
221
221
|
createEcsService(ecsServiceArgs) {
|
|
@@ -223,16 +223,20 @@ class EcsService extends pulumi.ComponentResource {
|
|
|
223
223
|
this.createDefaultSecurityGroup();
|
|
224
224
|
const networkConfiguration = {
|
|
225
225
|
assignPublicIp: ecsServiceArgs.assignPublicIp,
|
|
226
|
-
subnets: ecsServiceArgs.assignPublicIp
|
|
226
|
+
subnets: ecsServiceArgs.assignPublicIp
|
|
227
|
+
? this.vpc.publicSubnetIds
|
|
228
|
+
: this.vpc.privateSubnetIds,
|
|
227
229
|
securityGroups: pulumi
|
|
228
230
|
.all(this.securityGroups)
|
|
229
231
|
.apply(groups => groups.map(it => it.id)),
|
|
230
232
|
};
|
|
231
|
-
return new aws.ecs.Service(`${this.name}-service`, Object.assign(Object.assign(Object.assign({ name: this.name, cluster: pulumi.output(ecsServiceArgs.cluster).id, launchType: 'FARGATE', desiredCount: ecsServiceArgs.desiredCount, taskDefinition: this.taskDefinition.arn, enableExecuteCommand: true, networkConfiguration }, ecsServiceArgs.loadBalancers && {
|
|
233
|
+
return new aws.ecs.Service(`${this.name}-service`, Object.assign(Object.assign(Object.assign({ name: this.name, cluster: pulumi.output(ecsServiceArgs.cluster).id, launchType: 'FARGATE', deploymentController: { type: ecsServiceArgs.deploymentController }, desiredCount: ecsServiceArgs.desiredCount, taskDefinition: this.taskDefinition.arn, enableExecuteCommand: true, networkConfiguration }, (ecsServiceArgs.loadBalancers && {
|
|
234
|
+
loadBalancers: ecsServiceArgs.loadBalancers,
|
|
235
|
+
})), (this.serviceDiscoveryService && {
|
|
232
236
|
serviceRegistries: {
|
|
233
237
|
registryArn: this.serviceDiscoveryService.arn,
|
|
234
238
|
},
|
|
235
|
-
}), { tags: Object.assign(Object.assign({}, constants_1.commonTags), ecsServiceArgs.tags) }), { parent: this
|
|
239
|
+
})), { tags: Object.assign(Object.assign({}, constants_1.commonTags), ecsServiceArgs.tags) }), { parent: this });
|
|
236
240
|
}
|
|
237
241
|
createServiceDiscovery() {
|
|
238
242
|
const privateDnsNamespace = this.createPrivateDnsNameSpace();
|
|
@@ -319,7 +323,7 @@ class EcsService extends pulumi.ComponentResource {
|
|
|
319
323
|
],
|
|
320
324
|
tags: constants_1.commonTags,
|
|
321
325
|
}, { parent: this });
|
|
322
|
-
this.vpc.privateSubnetIds.apply(
|
|
326
|
+
this.vpc.privateSubnetIds.apply(subnetIds => {
|
|
323
327
|
subnetIds.forEach(subnetId => {
|
|
324
328
|
const mountTarget = new aws.efs.MountTarget(`${this.name}-mount-target-${subnetId}`, {
|
|
325
329
|
fileSystemId: efs.id,
|
|
@@ -342,7 +346,7 @@ class EcsService extends pulumi.ComponentResource {
|
|
|
342
346
|
permissions: FIRST_POSIX_NON_ROOT_USER.permissions,
|
|
343
347
|
},
|
|
344
348
|
},
|
|
345
|
-
});
|
|
349
|
+
}, { parent: this });
|
|
346
350
|
return { fileSystem: efs, accessPoint };
|
|
347
351
|
}
|
|
348
352
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panels.d.ts","sourceRoot":"","sources":["../../../../../src/v2/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,
|
|
1
|
+
{"version":3,"file":"panels.d.ts","sourceRoot":"","sources":["../../../../../src/v2/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"}
|
|
@@ -7,7 +7,7 @@ exports.createBurnRatePanel = createBurnRatePanel;
|
|
|
7
7
|
const percentageFieldConfig = {
|
|
8
8
|
unit: 'percent',
|
|
9
9
|
min: 0,
|
|
10
|
-
max: 100
|
|
10
|
+
max: 100,
|
|
11
11
|
};
|
|
12
12
|
function createStatPercentagePanel(title, position, dataSource, metric) {
|
|
13
13
|
return {
|
|
@@ -15,18 +15,22 @@ function createStatPercentagePanel(title, position, dataSource, metric) {
|
|
|
15
15
|
gridPos: position,
|
|
16
16
|
type: 'stat',
|
|
17
17
|
datasource: dataSource,
|
|
18
|
-
targets: [
|
|
18
|
+
targets: [
|
|
19
|
+
{
|
|
19
20
|
expr: metric.query,
|
|
20
|
-
legendFormat: metric.label
|
|
21
|
-
}
|
|
21
|
+
legendFormat: metric.label,
|
|
22
|
+
},
|
|
23
|
+
],
|
|
22
24
|
fieldConfig: {
|
|
23
|
-
defaults: Object.assign(Object.assign({}, percentageFieldConfig), (metric.thresholds
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
defaults: Object.assign(Object.assign({}, percentageFieldConfig), (metric.thresholds
|
|
26
|
+
? {
|
|
27
|
+
thresholds: {
|
|
28
|
+
mode: 'absolute',
|
|
29
|
+
steps: metric.thresholds,
|
|
30
|
+
},
|
|
27
31
|
}
|
|
28
|
-
|
|
29
|
-
}
|
|
32
|
+
: {})),
|
|
33
|
+
},
|
|
30
34
|
};
|
|
31
35
|
}
|
|
32
36
|
function createTimeSeriesPercentagePanel(title, position, dataSource, metric) {
|
|
@@ -38,20 +42,24 @@ function createTimeSeriesPanel(title, position, dataSource, metric, unit, min, m
|
|
|
38
42
|
type: 'timeseries',
|
|
39
43
|
datasource: dataSource,
|
|
40
44
|
gridPos: position,
|
|
41
|
-
targets: [
|
|
45
|
+
targets: [
|
|
46
|
+
{
|
|
42
47
|
expr: metric.query,
|
|
43
|
-
legendFormat: metric.label
|
|
44
|
-
}
|
|
48
|
+
legendFormat: metric.label,
|
|
49
|
+
},
|
|
50
|
+
],
|
|
45
51
|
fieldConfig: {
|
|
46
52
|
defaults: Object.assign({ unit,
|
|
47
53
|
min,
|
|
48
|
-
max }, (metric.thresholds
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
54
|
+
max }, (metric.thresholds
|
|
55
|
+
? {
|
|
56
|
+
thresholds: {
|
|
57
|
+
mode: 'absolute',
|
|
58
|
+
steps: metric.thresholds,
|
|
59
|
+
},
|
|
52
60
|
}
|
|
53
|
-
|
|
54
|
-
}
|
|
61
|
+
: {})),
|
|
62
|
+
},
|
|
55
63
|
};
|
|
56
64
|
}
|
|
57
65
|
function createBurnRatePanel(title, position, dataSource, metric) {
|
|
@@ -60,19 +68,21 @@ function createBurnRatePanel(title, position, dataSource, metric) {
|
|
|
60
68
|
title,
|
|
61
69
|
gridPos: position,
|
|
62
70
|
datasource: dataSource,
|
|
63
|
-
targets: [
|
|
71
|
+
targets: [
|
|
72
|
+
{
|
|
64
73
|
expr: metric.query,
|
|
65
|
-
legendFormat: metric.label
|
|
66
|
-
}
|
|
74
|
+
legendFormat: metric.label,
|
|
75
|
+
},
|
|
76
|
+
],
|
|
67
77
|
options: {
|
|
68
78
|
reduceOptions: {
|
|
69
79
|
calcs: ['last'],
|
|
70
80
|
fields: '',
|
|
71
|
-
values: false
|
|
81
|
+
values: false,
|
|
72
82
|
},
|
|
73
83
|
colorMode: 'value',
|
|
74
84
|
graphMode: 'none',
|
|
75
|
-
textMode: 'value'
|
|
85
|
+
textMode: 'value',
|
|
76
86
|
},
|
|
77
87
|
fieldConfig: {
|
|
78
88
|
defaults: {
|
|
@@ -82,10 +92,10 @@ function createBurnRatePanel(title, position, dataSource, metric) {
|
|
|
82
92
|
steps: [
|
|
83
93
|
{ color: 'green', value: null },
|
|
84
94
|
{ color: 'orange', value: 1 },
|
|
85
|
-
{ color: 'red', value: 2 }
|
|
86
|
-
]
|
|
87
|
-
}
|
|
88
|
-
}
|
|
95
|
+
{ color: 'red', value: 2 },
|
|
96
|
+
],
|
|
97
|
+
},
|
|
98
|
+
},
|
|
89
99
|
},
|
|
90
100
|
};
|
|
91
101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/v2/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,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/v2/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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-server-slo.d.ts","sourceRoot":"","sources":["../../../../../src/v2/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,
|
|
1
|
+
{"version":3,"file":"web-server-slo.d.ts","sourceRoot":"","sources":["../../../../../src/v2/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"}
|
|
@@ -16,12 +16,12 @@ class WebServerSloDashboardBuilder {
|
|
|
16
16
|
const availabilitySloPanel = (0, panels_1.createStatPercentagePanel)('Availability', { x: 0, y: 0, w: 8, h: 8 }, dataSource, {
|
|
17
17
|
label: 'Availability',
|
|
18
18
|
query: availabilityPercentage,
|
|
19
|
-
thresholds: []
|
|
19
|
+
thresholds: [],
|
|
20
20
|
});
|
|
21
21
|
const availabilityBurnRatePanel = (0, panels_1.createBurnRatePanel)('Availability Burn Rate', { x: 0, y: 8, w: 8, h: 4 }, dataSource, {
|
|
22
22
|
label: 'Burn Rate',
|
|
23
23
|
query: availabilityBurnRate,
|
|
24
|
-
thresholds: []
|
|
24
|
+
thresholds: [],
|
|
25
25
|
});
|
|
26
26
|
this.panels.push(availabilitySloPanel, availabilityBurnRatePanel);
|
|
27
27
|
return this;
|
|
@@ -33,17 +33,17 @@ class WebServerSloDashboardBuilder {
|
|
|
33
33
|
const successRateSloPanel = (0, panels_1.createStatPercentagePanel)('Success Rate', { x: 8, y: 0, w: 8, h: 8 }, dataSource, {
|
|
34
34
|
label: 'Success Rate',
|
|
35
35
|
query: successRateSlo,
|
|
36
|
-
thresholds: []
|
|
36
|
+
thresholds: [],
|
|
37
37
|
});
|
|
38
38
|
const successRatePanel = (0, panels_1.createTimeSeriesPercentagePanel)('HTTP Request Success Rate', { x: 0, y: 16, w: 12, h: 8 }, dataSource, {
|
|
39
39
|
label: 'Success Rate',
|
|
40
40
|
query: successRate,
|
|
41
|
-
thresholds: []
|
|
41
|
+
thresholds: [],
|
|
42
42
|
});
|
|
43
43
|
const successRateBurnRatePanel = (0, panels_1.createBurnRatePanel)('Success Rate Burn Rate', { x: 8, y: 8, w: 8, h: 4 }, dataSource, {
|
|
44
44
|
label: 'Burn Rate',
|
|
45
45
|
query: successRateBurnRate,
|
|
46
|
-
thresholds: []
|
|
46
|
+
thresholds: [],
|
|
47
47
|
});
|
|
48
48
|
this.panels.push(successRateSloPanel, successRatePanel, successRateBurnRatePanel);
|
|
49
49
|
return this;
|
|
@@ -56,33 +56,30 @@ class WebServerSloDashboardBuilder {
|
|
|
56
56
|
const latencySloPanel = (0, panels_1.createStatPercentagePanel)('Request % below 250ms', { x: 16, y: 0, w: 8, h: 8 }, dataSource, {
|
|
57
57
|
label: 'Request % below 250ms',
|
|
58
58
|
query: latencySlo,
|
|
59
|
-
thresholds: []
|
|
59
|
+
thresholds: [],
|
|
60
60
|
});
|
|
61
61
|
const percentileLatencyPanel = (0, panels_1.createTimeSeriesPanel)('99th Percentile Latency', { x: 12, y: 16, w: 12, h: 8 }, dataSource, {
|
|
62
62
|
label: '99th Percentile Latency',
|
|
63
63
|
query: percentileLatency,
|
|
64
|
-
thresholds: []
|
|
64
|
+
thresholds: [],
|
|
65
65
|
}, 'ms');
|
|
66
66
|
const latencyPercentagePanel = (0, panels_1.createTimeSeriesPercentagePanel)('Request percentage below 250ms', { x: 0, y: 24, w: 12, h: 8 }, dataSource, {
|
|
67
67
|
label: 'Request percentage below 250ms',
|
|
68
68
|
query: latencyBelowThreshold,
|
|
69
|
-
thresholds: []
|
|
69
|
+
thresholds: [],
|
|
70
70
|
});
|
|
71
71
|
const latencyBurnRatePanel = (0, panels_1.createBurnRatePanel)('Latency Burn Rate', { x: 16, y: 8, w: 8, h: 4 }, dataSource, {
|
|
72
72
|
label: 'Burn Rate',
|
|
73
73
|
query: latencyBurnRate,
|
|
74
|
-
thresholds: []
|
|
74
|
+
thresholds: [],
|
|
75
75
|
});
|
|
76
76
|
this.panels.push(latencySloPanel, percentileLatencyPanel, latencyPercentagePanel, latencyBurnRatePanel);
|
|
77
77
|
return this;
|
|
78
78
|
}
|
|
79
79
|
build(provider) {
|
|
80
|
-
return pulumi
|
|
81
|
-
this.title,
|
|
82
|
-
|
|
83
|
-
provider,
|
|
84
|
-
this.tags
|
|
85
|
-
]).apply(([title, panels, provider, tags]) => {
|
|
80
|
+
return pulumi
|
|
81
|
+
.all([this.title, this.panels, provider, this.tags])
|
|
82
|
+
.apply(([title, panels, provider, tags]) => {
|
|
86
83
|
return new grafana.oss.Dashboard(this.name, {
|
|
87
84
|
configJson: JSON.stringify({
|
|
88
85
|
title,
|
|
@@ -90,7 +87,7 @@ class WebServerSloDashboardBuilder {
|
|
|
90
87
|
timezone: 'browser',
|
|
91
88
|
refresh: '10s',
|
|
92
89
|
panels,
|
|
93
|
-
})
|
|
90
|
+
}),
|
|
94
91
|
}, { provider });
|
|
95
92
|
});
|
|
96
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../../src/v2/components/prometheus/queries.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAO1D,wBAAgB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../../src/v2/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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../../src/v2/components/web-server/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,yBAAiB,gBAAgB,CAAC;IAChC,KAAY,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC;IAErE,KAAY,IAAI,GAAG,IAAI,CACrB,SAAS,CAAC,IAAI,EACZ,KAAK,GACL,iBAAiB,GACjB,SAAS,GACT,SAAS,GACT,QAAQ,GACR,cAAc,GACd,qBAAqB,CACxB,
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../../src/v2/components/web-server/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,yBAAiB,gBAAgB,CAAC;IAChC,KAAY,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC;IAErE,KAAY,IAAI,GAAG,IAAI,CACrB,SAAS,CAAC,IAAI,EACZ,KAAK,GACL,iBAAiB,GACjB,SAAS,GACT,SAAS,GACT,QAAQ,GACR,cAAc,GACd,qBAAqB,CACxB,CAAC;CACH;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,UAAU,CAAC,CAAsB;IACzC,OAAO,CAAC,IAAI,CAAC,CAA8B;IAC3C,OAAO,CAAC,UAAU,CAAC,CAA6B;IAChD,OAAO,CAAC,OAAO,CAAC,CAAuB;IACvC,OAAO,CAAC,aAAa,CAAC,CAAuB;IAC7C,OAAO,CAAC,gBAAgB,CAAC,CAAuB;IAChD,OAAO,CAAC,cAAc,CAAC,CAA8B;IACrD,OAAO,CAAC,eAAe,CAA+C;IACtE,OAAO,CAAC,kBAAkB,CAAkD;IAC5E,OAAO,CAAC,QAAQ,CAA4C;gBAEhD,IAAI,EAAE,MAAM;IAIjB,kBAAkB,CACvB,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,EACnC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,EACjC,MAAM,GAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,CAAM,GACvD,IAAI;IAUA,YAAY,CAAC,MAAM,EAAE,gBAAgB,CAAC,SAAS,GAAG,IAAI;IAetD,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI;IAM9C,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,uBAAuB,GAAG,IAAI;IAM5D,gBAAgB,CACrB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAC5B,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GACjC,IAAI;IAOA,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,aAAa,GAAG,IAAI;IAM3D,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC,gBAAgB,GAAG,IAAI;IAMjE,iBAAiB,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI;IAMjD,yBAAyB,CAC9B,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,GACtC,IAAI;IAMA,KAAK,CAAC,IAAI,GAAE,MAAM,CAAC,wBAA6B,GAAG,SAAS;CAmCpE"}
|
|
@@ -8,7 +8,7 @@ export declare namespace WebServer {
|
|
|
8
8
|
type Container = Pick<EcsService.Container, 'image' | 'environment' | 'secrets' | 'mountPoints'> & {
|
|
9
9
|
port: pulumi.Input<number>;
|
|
10
10
|
};
|
|
11
|
-
type EcsConfig = Pick<EcsService.Args, 'cluster' | 'vpc' | 'volumes' | 'desiredCount' | 'autoscaling' | 'size' | 'taskExecutionRoleInlinePolicies' | 'taskRoleInlinePolicies' | 'tags'>;
|
|
11
|
+
type EcsConfig = Pick<EcsService.Args, 'cluster' | 'vpc' | 'volumes' | 'deploymentController' | 'desiredCount' | 'autoscaling' | 'size' | 'taskExecutionRoleInlinePolicies' | 'taskRoleInlinePolicies' | 'tags'>;
|
|
12
12
|
type InitContainer = Omit<EcsService.Container, 'essential'>;
|
|
13
13
|
type SidecarContainer = Omit<EcsService.Container, 'essential' | 'healthCheck'> & Required<Pick<EcsService.Container, 'healthCheck'>>;
|
|
14
14
|
type Args = EcsConfig & Container & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/v2/components/web-server/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AAGnC,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,yBAAiB,SAAS,CAAC;IACzB,KAAY,SAAS,GAAG,IAAI,CAC1B,UAAU,CAAC,SAAS,EACpB,OAAO,GAAG,aAAa,GAAG,SAAS,GAAG,aAAa,CACpD,GAAG;QACF,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KAC5B,CAAC;IAEF,KAAY,SAAS,GAAG,IAAI,CAC1B,UAAU,CAAC,IAAI,EACb,SAAS,GACT,KAAK,GACL,SAAS,GACT,cAAc,GACd,aAAa,GACb,MAAM,GACN,iCAAiC,GACjC,wBAAwB,GACxB,MAAM,CACT,CAAC;IAEF,KAAY,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACpE,KAAY,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/v2/components/web-server/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,8 +24,8 @@ class WebServer extends pulumi.ComponentResource {
|
|
|
24
24
|
vpc,
|
|
25
25
|
port: args.port,
|
|
26
26
|
certificate: (_a = this.certificate) === null || _a === void 0 ? void 0 : _a.certificate,
|
|
27
|
-
healthCheckPath: args.healthCheckPath
|
|
28
|
-
});
|
|
27
|
+
healthCheckPath: args.healthCheckPath,
|
|
28
|
+
}, { parent: this });
|
|
29
29
|
this.serviceSecurityGroup = this.createSecurityGroup(vpc);
|
|
30
30
|
this.initContainers = this.getInitContainers(args);
|
|
31
31
|
this.sidecarContainers = this.getSidecarContainers(args);
|
|
@@ -33,10 +33,9 @@ class WebServer extends pulumi.ComponentResource {
|
|
|
33
33
|
this.ecsConfig = this.createEcsConfig(args);
|
|
34
34
|
this.volumes = this.getVolumes(args);
|
|
35
35
|
// TODO: Move output mapping to createEcsService
|
|
36
|
-
this.service = pulumi
|
|
37
|
-
this.initContainers,
|
|
38
|
-
|
|
39
|
-
]).apply(([initContainers, sidecarContainers,]) => {
|
|
36
|
+
this.service = pulumi
|
|
37
|
+
.all([this.initContainers, this.sidecarContainers])
|
|
38
|
+
.apply(([initContainers, sidecarContainers]) => {
|
|
40
39
|
return this.createEcsService(this.container, this.lb, this.ecsConfig, this.volumes, [...initContainers, ...sidecarContainers]);
|
|
41
40
|
});
|
|
42
41
|
if (hasCustomDomain) {
|
|
@@ -45,10 +44,9 @@ class WebServer extends pulumi.ComponentResource {
|
|
|
45
44
|
this.registerOutputs();
|
|
46
45
|
}
|
|
47
46
|
getVolumes(args) {
|
|
48
|
-
return pulumi
|
|
49
|
-
pulumi.output(args.volumes),
|
|
50
|
-
|
|
51
|
-
]).apply(([passedVolumes, otelCollector]) => {
|
|
47
|
+
return pulumi
|
|
48
|
+
.all([pulumi.output(args.volumes), args.otelCollector])
|
|
49
|
+
.apply(([passedVolumes, otelCollector]) => {
|
|
52
50
|
const volumes = [];
|
|
53
51
|
if (passedVolumes)
|
|
54
52
|
volumes.push(...passedVolumes);
|
|
@@ -58,10 +56,9 @@ class WebServer extends pulumi.ComponentResource {
|
|
|
58
56
|
});
|
|
59
57
|
}
|
|
60
58
|
getInitContainers(args) {
|
|
61
|
-
return pulumi
|
|
62
|
-
pulumi.output(args.initContainers),
|
|
63
|
-
|
|
64
|
-
]).apply(([passedInits, otelCollector]) => {
|
|
59
|
+
return pulumi
|
|
60
|
+
.all([pulumi.output(args.initContainers), args.otelCollector])
|
|
61
|
+
.apply(([passedInits, otelCollector]) => {
|
|
65
62
|
const containers = [];
|
|
66
63
|
if (passedInits)
|
|
67
64
|
containers.push(...passedInits);
|
|
@@ -71,10 +68,9 @@ class WebServer extends pulumi.ComponentResource {
|
|
|
71
68
|
});
|
|
72
69
|
}
|
|
73
70
|
getSidecarContainers(args) {
|
|
74
|
-
return pulumi
|
|
75
|
-
pulumi.output(args.sidecarContainers),
|
|
76
|
-
|
|
77
|
-
]).apply(([passedSidecars, otelCollector]) => {
|
|
71
|
+
return pulumi
|
|
72
|
+
.all([pulumi.output(args.sidecarContainers), args.otelCollector])
|
|
73
|
+
.apply(([passedSidecars, otelCollector]) => {
|
|
78
74
|
const containers = [];
|
|
79
75
|
if (passedSidecars)
|
|
80
76
|
containers.push(...passedSidecars);
|
|
@@ -84,10 +80,12 @@ class WebServer extends pulumi.ComponentResource {
|
|
|
84
80
|
});
|
|
85
81
|
}
|
|
86
82
|
getTaskRoleInlinePolicies(args) {
|
|
87
|
-
return pulumi
|
|
83
|
+
return pulumi
|
|
84
|
+
.all([
|
|
88
85
|
pulumi.output(args.taskExecutionRoleInlinePolicies),
|
|
89
|
-
args.otelCollector
|
|
90
|
-
])
|
|
86
|
+
args.otelCollector,
|
|
87
|
+
])
|
|
88
|
+
.apply(([passedTaskRoleInlinePolicies, otelCollector]) => {
|
|
91
89
|
const inlinePolicies = [];
|
|
92
90
|
if (passedTaskRoleInlinePolicies)
|
|
93
91
|
inlinePolicies.push(...passedTaskRoleInlinePolicies);
|
|
@@ -101,6 +99,7 @@ class WebServer extends pulumi.ComponentResource {
|
|
|
101
99
|
return {
|
|
102
100
|
vpc: args.vpc,
|
|
103
101
|
cluster: args.cluster,
|
|
102
|
+
deploymentController: args.deploymentController,
|
|
104
103
|
desiredCount: args.desiredCount,
|
|
105
104
|
autoscaling: args.autoscaling,
|
|
106
105
|
size: args.size,
|
|
@@ -115,7 +114,7 @@ class WebServer extends pulumi.ComponentResource {
|
|
|
115
114
|
mountPoints: args.mountPoints,
|
|
116
115
|
environment: args.environment,
|
|
117
116
|
secrets: args.secrets,
|
|
118
|
-
port: args.port
|
|
117
|
+
port: args.port,
|
|
119
118
|
};
|
|
120
119
|
}
|
|
121
120
|
createTlsCertificate({ domain, hostedZoneId, }) {
|
|
@@ -128,27 +127,38 @@ class WebServer extends pulumi.ComponentResource {
|
|
|
128
127
|
const vpcId = pulumi.output(vpc).vpcId;
|
|
129
128
|
return new aws.ec2.SecurityGroup(`${this.name}-security-group`, {
|
|
130
129
|
vpcId,
|
|
131
|
-
ingress: [
|
|
130
|
+
ingress: [
|
|
131
|
+
{
|
|
132
132
|
fromPort: 0,
|
|
133
133
|
toPort: 0,
|
|
134
134
|
protocol: '-1',
|
|
135
135
|
securityGroups: [this.lb.securityGroup.id],
|
|
136
|
-
}
|
|
137
|
-
|
|
136
|
+
},
|
|
137
|
+
],
|
|
138
|
+
egress: [
|
|
139
|
+
{
|
|
138
140
|
fromPort: 0,
|
|
139
141
|
toPort: 0,
|
|
140
142
|
protocol: '-1',
|
|
141
143
|
cidrBlocks: ['0.0.0.0/0'],
|
|
142
|
-
}
|
|
144
|
+
},
|
|
145
|
+
],
|
|
143
146
|
tags: constants_1.commonTags,
|
|
144
147
|
}, { parent: this });
|
|
145
148
|
}
|
|
146
149
|
createEcsService(webServerContainer, lb, ecsConfig, volumes, containers) {
|
|
147
|
-
return new ecs_service_1.EcsService(`${this.name}-ecs`, Object.assign(Object.assign({}, ecsConfig), { volumes, containers: [
|
|
150
|
+
return new ecs_service_1.EcsService(`${this.name}-ecs`, Object.assign(Object.assign({}, ecsConfig), { volumes, containers: [
|
|
151
|
+
Object.assign(Object.assign({}, webServerContainer), { name: this.name, portMappings: [
|
|
152
|
+
ecs_service_1.EcsService.createTcpPortMapping(webServerContainer.port),
|
|
153
|
+
], essential: true }),
|
|
154
|
+
...(containers || []),
|
|
155
|
+
], enableServiceAutoDiscovery: false, loadBalancers: [
|
|
156
|
+
{
|
|
148
157
|
containerName: this.name,
|
|
149
158
|
containerPort: webServerContainer.port,
|
|
150
159
|
targetGroupArn: lb.targetGroup.arn,
|
|
151
|
-
}
|
|
160
|
+
},
|
|
161
|
+
], assignPublicIp: true, securityGroup: this.serviceSecurityGroup }), {
|
|
152
162
|
parent: this,
|
|
153
163
|
dependsOn: [lb, lb.targetGroup],
|
|
154
164
|
});
|
|
@@ -158,11 +168,13 @@ class WebServer extends pulumi.ComponentResource {
|
|
|
158
168
|
type: 'A',
|
|
159
169
|
name: domain,
|
|
160
170
|
zoneId: hostedZoneId,
|
|
161
|
-
aliases: [
|
|
171
|
+
aliases: [
|
|
172
|
+
{
|
|
162
173
|
name: this.lb.lb.dnsName,
|
|
163
174
|
zoneId: this.lb.lb.zoneId,
|
|
164
175
|
evaluateTargetHealth: true,
|
|
165
|
-
}
|
|
176
|
+
},
|
|
177
|
+
],
|
|
166
178
|
}, { parent: this });
|
|
167
179
|
}
|
|
168
180
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-balancer.d.ts","sourceRoot":"","sources":["../../../../src/v2/components/web-server/load-balancer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AAGrC,yBAAiB,qBAAqB,CAAC;IACrC,KAAY,IAAI,GAAG;QACjB,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,WAAW,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC;QAClC,eAAe,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KACxC,CAAC;CACH;
|
|
1
|
+
{"version":3,"file":"load-balancer.d.ts","sourceRoot":"","sources":["../../../../src/v2/components/web-server/load-balancer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AAGrC,yBAAiB,qBAAqB,CAAC;IACrC,KAAY,IAAI,GAAG;QACjB,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,WAAW,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC;QAClC,eAAe,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KACxC,CAAC;CACH;AA+BD,qBAAa,qBAAsB,SAAQ,MAAM,CAAC,iBAAiB;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC;IACxB,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC;IAChC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC;IAC9B,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,QAAQ,GAAG,SAAS,CAAC;IACzC,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC;gBAGnC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,qBAAqB,CAAC,IAAI,EAChC,IAAI,GAAE,MAAM,CAAC,wBAA6B;IAyC5C,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,oBAAoB;IAgC5B,OAAO,CAAC,mBAAmB;IA0B3B,OAAO,CAAC,qBAAqB;CAa9B"}
|
|
@@ -5,23 +5,28 @@ const pulumi = require("@pulumi/pulumi");
|
|
|
5
5
|
const aws = require("@pulumi/aws");
|
|
6
6
|
const constants_1 = require("../../../constants");
|
|
7
7
|
const webServerLoadBalancerNetworkConfig = {
|
|
8
|
-
ingress: [
|
|
8
|
+
ingress: [
|
|
9
|
+
{
|
|
9
10
|
protocol: 'tcp',
|
|
10
11
|
fromPort: 80,
|
|
11
12
|
toPort: 80,
|
|
12
13
|
cidrBlocks: ['0.0.0.0/0'],
|
|
13
|
-
},
|
|
14
|
+
},
|
|
15
|
+
{
|
|
14
16
|
protocol: 'tcp',
|
|
15
17
|
fromPort: 443,
|
|
16
18
|
toPort: 443,
|
|
17
19
|
cidrBlocks: ['0.0.0.0/0'],
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
egress: [
|
|
23
|
+
{
|
|
20
24
|
fromPort: 0,
|
|
21
25
|
toPort: 0,
|
|
22
26
|
protocol: '-1',
|
|
23
27
|
cidrBlocks: ['0.0.0.0/0'],
|
|
24
|
-
}
|
|
28
|
+
},
|
|
29
|
+
],
|
|
25
30
|
};
|
|
26
31
|
const defaults = {
|
|
27
32
|
healthCheckPath: '/healthcheck',
|
|
@@ -44,8 +49,9 @@ class WebServerLoadBalancer extends pulumi.ComponentResource {
|
|
|
44
49
|
}, { parent: this });
|
|
45
50
|
this.targetGroup = this.createLbTargetGroup(port, vpc.vpcId, healthCheckPath);
|
|
46
51
|
this.httpListener = this.createLbHttpListener(this.lb, this.targetGroup, !!certificate);
|
|
47
|
-
this.tlsListener =
|
|
48
|
-
|
|
52
|
+
this.tlsListener =
|
|
53
|
+
certificate &&
|
|
54
|
+
this.createLbTlsListener(this.lb, this.targetGroup, certificate);
|
|
49
55
|
this.registerOutputs();
|
|
50
56
|
}
|
|
51
57
|
createLbTlsListener(lb, lbTargetGroup, certificate) {
|
|
@@ -55,10 +61,12 @@ class WebServerLoadBalancer extends pulumi.ComponentResource {
|
|
|
55
61
|
protocol: 'HTTPS',
|
|
56
62
|
sslPolicy: 'ELBSecurityPolicy-2016-08',
|
|
57
63
|
certificateArn: certificate.arn,
|
|
58
|
-
defaultActions: [
|
|
64
|
+
defaultActions: [
|
|
65
|
+
{
|
|
59
66
|
type: 'forward',
|
|
60
67
|
targetGroupArn: lbTargetGroup.arn,
|
|
61
|
-
}
|
|
68
|
+
},
|
|
69
|
+
],
|
|
62
70
|
tags: constants_1.commonTags,
|
|
63
71
|
}, { parent: this, dependsOn: [certificate] });
|
|
64
72
|
}
|
|
@@ -71,10 +79,12 @@ class WebServerLoadBalancer extends pulumi.ComponentResource {
|
|
|
71
79
|
statusCode: 'HTTP_301',
|
|
72
80
|
},
|
|
73
81
|
};
|
|
74
|
-
const defaultAction = redirectToHttps
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
82
|
+
const defaultAction = redirectToHttps
|
|
83
|
+
? httpsRedirectAction
|
|
84
|
+
: {
|
|
85
|
+
type: 'forward',
|
|
86
|
+
targetGroupArn: lbTargetGroup.arn,
|
|
87
|
+
};
|
|
78
88
|
return new aws.lb.Listener(`${this.name}-listener-80`, {
|
|
79
89
|
loadBalancerArn: lb.arn,
|
|
80
90
|
port: 80,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/v2/otel/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AAGnC,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,CAAC;AAGlC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;IACrD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;IAC7C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6B;IAC5D,OAAO,CAAC,uBAAuB,
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/v2/otel/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AAGnC,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,CAAC;AAGlC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;IACrD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;IAC7C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6B;IAC5D,OAAO,CAAC,uBAAuB,CAC1B;gBAEO,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;IAMxE,gBAAgB,CAAC,SAAS,GAAE,YAAY,CAAC,QAAQ,EAAa,GAAG,IAAI;IAMrE,kBAAkB,CAChB,IAAI,SAA+B,EACnC,IAAI,SAA+B,EACnC,OAAO,SAAkC,EACzC,OAAO,SAAkC,GACxC,IAAI;IAMP,0BAA0B,CACxB,aAAa,SAAgD,EAC7D,eAAe,SAAkD,EACjE,oBAAoB,SAAuD,GAC1E,IAAI;IAUP,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOzC,wBAAwB,CAAC,QAAQ,SAAkB,GAAG,IAAI;IAM1D,kBAAkB,CAAC,QAAQ,SAAiB,GAAG,IAAI;IAMnD,OAAO,CACL,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAC/B,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS,EAC5B,MAAM,EAAE,MAAM,GACb,IAAI;IAWP,SAAS,CAAC,SAAS,GAAE,QAAQ,GAAG,OAAO,GAAG,UAAuB,GAAG,IAAI;IAMxE,aAAa,CACX,QAAQ,GAAE,OAAO,GAAG,MAAM,GAAG,OAAiB,EAC9C,gBAAgB,GAAE,OAAO,GAAG,QAAQ,GAAG,UAAoB,GAC1D,IAAI;IAMP,mBAAmB,CACjB,SAAS,EAAE,aAAa,CAAC,YAAY,EAAE,EACvC,UAAU,EAAE,aAAa,CAAC,aAAa,EAAE,EACzC,SAAS,EAAE,aAAa,CAAC,YAAY,EAAE,GACtC,IAAI;IAMP,kBAAkB,CAChB,SAAS,EAAE,aAAa,CAAC,YAAY,EAAE,EACvC,UAAU,EAAE,aAAa,CAAC,aAAa,EAAE,EACzC,SAAS,EAAE,aAAa,CAAC,YAAY,EAAE,GACtC,IAAI;IAMP,WAAW,CACT,mBAAmB,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EACzC,mBAAmB,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS,EACtC,SAAS,EAAE,MAAM,GAChB,IAAI;IAYP,KAAK,IAAI,aAAa;IAStB,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,mBAAmB;CAwB5B"}
|
package/dist/v2/otel/builder.js
CHANGED
|
@@ -69,29 +69,30 @@ class OtelCollectorBuilder {
|
|
|
69
69
|
return new _1.OtelCollector(this._serviceName, this._env, this._configBuilder.build(), { taskRoleInlinePolicies: this._taskRoleInlinePolicies });
|
|
70
70
|
}
|
|
71
71
|
createAPSInlinePolicy(workspace) {
|
|
72
|
-
const policy = pulumi
|
|
73
|
-
this._serviceName,
|
|
74
|
-
|
|
75
|
-
])).apply(([serviceName, workspaceArn]) => ({
|
|
72
|
+
const policy = pulumi
|
|
73
|
+
.all([this._serviceName, workspace.arn])
|
|
74
|
+
.apply(([serviceName, workspaceArn]) => ({
|
|
76
75
|
name: `${serviceName}-task-role-aps-write`,
|
|
77
76
|
policy: JSON.stringify({
|
|
78
77
|
Version: '2012-10-17',
|
|
79
|
-
Statement: [
|
|
78
|
+
Statement: [
|
|
79
|
+
{
|
|
80
80
|
Effect: 'Allow',
|
|
81
81
|
Action: ['aps:RemoteWrite'],
|
|
82
82
|
Resource: workspaceArn,
|
|
83
|
-
}
|
|
83
|
+
},
|
|
84
|
+
],
|
|
84
85
|
}),
|
|
85
86
|
}));
|
|
86
87
|
this._taskRoleInlinePolicies.push(policy);
|
|
87
88
|
}
|
|
88
89
|
createAWSXRayPolicy() {
|
|
89
|
-
const policy = this._serviceName
|
|
90
|
-
.apply(serviceName => ({
|
|
90
|
+
const policy = this._serviceName.apply(serviceName => ({
|
|
91
91
|
name: `${serviceName}-task-role-xray`,
|
|
92
92
|
policy: JSON.stringify({
|
|
93
93
|
Version: '2012-10-17',
|
|
94
|
-
Statement: [
|
|
94
|
+
Statement: [
|
|
95
|
+
{
|
|
95
96
|
Effect: 'Allow',
|
|
96
97
|
Action: [
|
|
97
98
|
'xray:PutTraceSegments',
|
|
@@ -101,7 +102,8 @@ class OtelCollectorBuilder {
|
|
|
101
102
|
'xray:GetSamplingStatisticSummaries',
|
|
102
103
|
],
|
|
103
104
|
Resource: '*',
|
|
104
|
-
}
|
|
105
|
+
},
|
|
106
|
+
],
|
|
105
107
|
}),
|
|
106
108
|
}));
|
|
107
109
|
this._taskRoleInlinePolicies.push(policy);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/v2/otel/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAY,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,GAAG,CAAC;AAEvC,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAEvB;IAEF,gBAAgB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/v2/otel/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAY,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,GAAG,CAAC;AAEvC,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAEvB;IAEF,gBAAgB,CAAC,SAAS,GAAE,YAAY,CAAC,QAAQ,EAAa,GAAG,IAAI;IAmBrE,kBAAkB,CAChB,IAAI,SAAU,EACd,IAAI,SAAO,EACX,OAAO,SAAQ,EACf,OAAO,SAAO,GACb,IAAI;IAUP,0BAA0B,CACxB,aAAa,SAAO,EACpB,eAAe,SAAK,EACpB,oBAAoB,SAAK,GACxB,IAAI;IAUP,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAMzC,wBAAwB,CAAC,QAAQ,SAAkB,GAAG,IAAI;IAM1D,kBAAkB,CAAC,QAAQ,SAAiB,GAAG,IAAI;IAMnD,OAAO,CACL,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAC/B,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAC9B,MAAM,EAAE,MAAM,GACb,IAAI;IAiBP,SAAS,CAAC,SAAS,GAAE,QAAQ,GAAG,OAAO,GAAG,UAAuB,GAAG,IAAI;IAMxE,aAAa,CACX,QAAQ,GAAE,OAAO,GAAG,MAAM,GAAG,OAAiB,EAC9C,gBAAgB,GAAE,OAAO,GAAG,QAAQ,GAAG,UAAoB,GAC1D,IAAI;IASP,mBAAmB,CACjB,SAAS,EAAE,aAAa,CAAC,YAAY,EAAE,EACvC,UAAU,EAAE,aAAa,CAAC,aAAa,EAAE,EACzC,SAAS,EAAE,aAAa,CAAC,YAAY,EAAE,GACtC,IAAI;IAUP,kBAAkB,CAChB,SAAS,EAAE,aAAa,CAAC,YAAY,EAAE,EACvC,UAAU,EAAE,aAAa,CAAC,aAAa,EAAE,EACzC,SAAS,EAAE,aAAa,CAAC,YAAY,EAAE,GACtC,IAAI;IAUP,WAAW,CACT,mBAAmB,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EACzC,uBAAuB,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAC7C,SAAS,EAAE,MAAM,GAChB,IAAI;IAqBP,KAAK,IAAI,aAAa,CAAC,MAAM;IAwB7B,OAAO,CAAC,8BAA8B;IAiBtC,OAAO,CAAC,0BAA0B;CAyBnC"}
|
package/dist/v2/otel/config.js
CHANGED
|
@@ -9,7 +9,7 @@ class OtelCollectorConfigBuilder {
|
|
|
9
9
|
this._exporters = {};
|
|
10
10
|
this._extensions = {};
|
|
11
11
|
this._service = {
|
|
12
|
-
pipelines: {}
|
|
12
|
+
pipelines: {},
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
15
|
withOTLPReceiver(protocols = ['http']) {
|
|
@@ -28,9 +28,9 @@ class OtelCollectorConfigBuilder {
|
|
|
28
28
|
}
|
|
29
29
|
withBatchProcessor(name = 'batch', size = 8192, maxSize = 10000, timeout = '5s') {
|
|
30
30
|
this._processors[name] = {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
timeout
|
|
31
|
+
send_batch_size: size,
|
|
32
|
+
send_batch_max_size: maxSize,
|
|
33
|
+
timeout,
|
|
34
34
|
};
|
|
35
35
|
return this;
|
|
36
36
|
}
|
|
@@ -38,7 +38,7 @@ class OtelCollectorConfigBuilder {
|
|
|
38
38
|
this._processors.memory_limiter = {
|
|
39
39
|
check_interval: checkInterval,
|
|
40
40
|
limit_percentage: limitPercentage,
|
|
41
|
-
spike_limit_percentage: spikeLimitPercentage
|
|
41
|
+
spike_limit_percentage: spikeLimitPercentage,
|
|
42
42
|
};
|
|
43
43
|
return this;
|
|
44
44
|
}
|
|
@@ -59,12 +59,12 @@ class OtelCollectorConfigBuilder {
|
|
|
59
59
|
endpoint,
|
|
60
60
|
namespace,
|
|
61
61
|
auth: {
|
|
62
|
-
authenticator: 'sigv4auth'
|
|
63
|
-
}
|
|
62
|
+
authenticator: 'sigv4auth',
|
|
63
|
+
},
|
|
64
64
|
};
|
|
65
65
|
this._extensions.sigv4auth = {
|
|
66
66
|
region,
|
|
67
|
-
service: 'aps'
|
|
67
|
+
service: 'aps',
|
|
68
68
|
};
|
|
69
69
|
return this;
|
|
70
70
|
}
|
|
@@ -75,7 +75,7 @@ class OtelCollectorConfigBuilder {
|
|
|
75
75
|
withTelemetry(logLevel = 'error', metricsVerbosity = 'basic') {
|
|
76
76
|
this._service.telemetry = {
|
|
77
77
|
logs: { level: logLevel },
|
|
78
|
-
metrics: { level: metricsVerbosity }
|
|
78
|
+
metrics: { level: metricsVerbosity },
|
|
79
79
|
};
|
|
80
80
|
return this;
|
|
81
81
|
}
|
|
@@ -83,7 +83,7 @@ class OtelCollectorConfigBuilder {
|
|
|
83
83
|
this._service.pipelines.metrics = {
|
|
84
84
|
receivers,
|
|
85
85
|
processors,
|
|
86
|
-
exporters
|
|
86
|
+
exporters,
|
|
87
87
|
};
|
|
88
88
|
return this;
|
|
89
89
|
}
|
|
@@ -91,7 +91,7 @@ class OtelCollectorConfigBuilder {
|
|
|
91
91
|
this._service.pipelines.traces = {
|
|
92
92
|
receivers,
|
|
93
93
|
processors,
|
|
94
|
-
exporters
|
|
94
|
+
exporters,
|
|
95
95
|
};
|
|
96
96
|
return this;
|
|
97
97
|
}
|
|
@@ -123,7 +123,7 @@ class OtelCollectorConfigBuilder {
|
|
|
123
123
|
processors: this._processors,
|
|
124
124
|
exporters: this._exporters,
|
|
125
125
|
extensions: this._extensions,
|
|
126
|
-
service: this._service
|
|
126
|
+
service: this._service,
|
|
127
127
|
};
|
|
128
128
|
}
|
|
129
129
|
validatePipelineProcessorOrder(pipelineType) {
|
|
@@ -131,8 +131,7 @@ class OtelCollectorConfigBuilder {
|
|
|
131
131
|
if (!pipeline)
|
|
132
132
|
return;
|
|
133
133
|
const { processors } = pipeline;
|
|
134
|
-
const memoryLimiterIndex = processors
|
|
135
|
-
.findIndex(processor => processor === 'memory_limiter');
|
|
134
|
+
const memoryLimiterIndex = processors.findIndex(processor => processor === 'memory_limiter');
|
|
136
135
|
if (memoryLimiterIndex > 0) {
|
|
137
136
|
throw new Error(`memory_limiter processor is not the first processor in the ${pipelineType} pipeline.`);
|
|
138
137
|
}
|
|
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Protocol = void 0;
|
|
4
4
|
exports.Protocol = {
|
|
5
5
|
grpc: {
|
|
6
|
-
endpoint: '0.0.0.0:4317'
|
|
6
|
+
endpoint: '0.0.0.0:4317',
|
|
7
7
|
},
|
|
8
8
|
http: {
|
|
9
|
-
endpoint: '0.0.0.0:4318'
|
|
10
|
-
}
|
|
9
|
+
endpoint: '0.0.0.0:4318',
|
|
10
|
+
},
|
|
11
11
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@studion/infra-code-blocks",
|
|
3
|
-
"version": "0.8.0-next.
|
|
3
|
+
"version": "0.8.0-next.2",
|
|
4
4
|
"description": "Studion common infra components",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"infrastructure",
|
|
@@ -28,9 +28,10 @@
|
|
|
28
28
|
"clean": "rm -rf dist",
|
|
29
29
|
"build": "npm run clean && tsc -b src",
|
|
30
30
|
"format": "prettier -w .",
|
|
31
|
-
"release": "
|
|
31
|
+
"release": "release-it --only-version",
|
|
32
32
|
"test": "TS_NODE_PROJECT=tests node --test --test-concurrency=none -r ts-node/register tests/**[!build]/index.test.ts",
|
|
33
|
-
"test:build": "npm run build && tstyche build"
|
|
33
|
+
"test:build": "npm run build && tstyche build",
|
|
34
|
+
"prepare": "husky"
|
|
34
35
|
},
|
|
35
36
|
"prettier": "@studion/prettier-config",
|
|
36
37
|
"dependencies": {
|
|
@@ -56,6 +57,8 @@
|
|
|
56
57
|
"@types/node": "^22",
|
|
57
58
|
"exponential-backoff": "^3.1.2",
|
|
58
59
|
"http-status": "^2.1.0",
|
|
60
|
+
"husky": "^9.1.7",
|
|
61
|
+
"lint-staged": "^16.1.2",
|
|
59
62
|
"nanospinner": "^1.2.2",
|
|
60
63
|
"pathe": "^2.0.3",
|
|
61
64
|
"prettier": "^3.4.2",
|
|
@@ -68,13 +71,5 @@
|
|
|
68
71
|
},
|
|
69
72
|
"publishConfig": {
|
|
70
73
|
"access": "public"
|
|
71
|
-
},
|
|
72
|
-
"release-it": {
|
|
73
|
-
"git": {
|
|
74
|
-
"commitMessage": "chore: release ${version}"
|
|
75
|
-
},
|
|
76
|
-
"github": {
|
|
77
|
-
"release": true
|
|
78
|
-
}
|
|
79
74
|
}
|
|
80
75
|
}
|