@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.
- package/dist/components/acm-certificate/index.d.ts +20 -0
- package/dist/components/acm-certificate/index.d.ts.map +1 -0
- package/dist/components/acm-certificate/index.js +40 -0
- package/dist/components/cloudfront/index.d.ts +97 -0
- package/dist/components/cloudfront/index.d.ts.map +1 -0
- package/dist/components/cloudfront/index.js +215 -0
- package/dist/components/cloudfront/lb-cache-strategy.d.ts +21 -0
- package/dist/components/cloudfront/lb-cache-strategy.d.ts.map +1 -0
- package/dist/components/cloudfront/lb-cache-strategy.js +93 -0
- package/dist/components/cloudfront/s3-cache-strategy.d.ts +22 -0
- package/dist/components/cloudfront/s3-cache-strategy.d.ts.map +1 -0
- package/dist/components/cloudfront/s3-cache-strategy.js +79 -0
- package/dist/components/cloudfront/types.d.ts +10 -0
- package/dist/components/cloudfront/types.d.ts.map +1 -0
- package/dist/components/database/builder.d.ts +32 -0
- package/dist/components/database/builder.d.ts.map +1 -0
- package/dist/components/database/builder.js +82 -0
- package/dist/components/database/database-replica.d.ts +35 -0
- package/dist/components/database/database-replica.d.ts.map +1 -0
- package/dist/components/database/database-replica.js +40 -0
- package/dist/components/database/ec2-ssm-connect.d.ts +26 -0
- package/dist/components/database/ec2-ssm-connect.d.ts.map +1 -0
- package/dist/components/{ec2-ssm-connect.js → database/ec2-ssm-connect.js} +42 -34
- package/dist/components/database/index.d.ts +67 -0
- package/dist/components/database/index.d.ts.map +1 -0
- package/dist/components/database/index.js +144 -0
- package/dist/{v2/components → components}/ecs-service/index.d.ts +4 -3
- package/dist/components/ecs-service/index.d.ts.map +1 -0
- package/dist/{v2/components → components}/ecs-service/index.js +18 -29
- package/dist/components/ecs-service/policies.d.ts.map +1 -0
- package/dist/components/ecs-service/task-size.d.ts +37 -0
- package/dist/components/ecs-service/task-size.d.ts.map +1 -0
- package/dist/{constants.js → components/ecs-service/task-size.js} +17 -7
- package/dist/components/grafana/dashboards/index.d.ts.map +1 -0
- package/dist/components/grafana/dashboards/panels.d.ts.map +1 -0
- package/dist/components/grafana/dashboards/types.d.ts.map +1 -0
- package/dist/components/grafana/dashboards/web-server-slo.d.ts.map +1 -0
- package/dist/components/grafana/index.d.ts.map +1 -0
- package/dist/components/{password.d.ts → password/index.d.ts} +7 -5
- package/dist/components/password/index.d.ts.map +1 -0
- package/dist/components/{password.js → password/index.js} +5 -8
- package/dist/components/prometheus/index.d.ts.map +1 -0
- package/dist/components/prometheus/queries.d.ts.map +1 -0
- package/dist/components/prometheus/queries.test.d.ts.map +1 -0
- package/dist/components/redis/elasticache-redis.d.ts +38 -0
- package/dist/components/redis/elasticache-redis.d.ts.map +1 -0
- package/dist/components/redis/elasticache-redis.js +58 -0
- package/dist/components/redis/upstash-redis.d.ts +20 -0
- package/dist/components/redis/upstash-redis.d.ts.map +1 -0
- package/dist/components/redis/upstash-redis.js +29 -0
- package/dist/components/static-site/cache-rule-ttl.d.ts +13 -0
- package/dist/components/static-site/cache-rule-ttl.d.ts.map +1 -0
- package/dist/components/static-site/cache-rule-ttl.js +18 -0
- package/dist/components/static-site/index.d.ts +47 -0
- package/dist/components/static-site/index.d.ts.map +1 -0
- package/dist/components/static-site/index.js +45 -0
- package/dist/components/static-site/s3-assets.d.ts +20 -0
- package/dist/components/static-site/s3-assets.d.ts.map +1 -0
- package/dist/components/static-site/s3-assets.js +63 -0
- package/dist/components/vpc/index.d.ts +20 -0
- package/dist/components/vpc/index.d.ts.map +1 -0
- package/dist/components/vpc/index.js +31 -0
- package/dist/{v2/components → components}/web-server/builder.d.ts +5 -1
- package/dist/components/web-server/builder.d.ts.map +1 -0
- package/dist/{v2/components → components}/web-server/builder.js +11 -1
- package/dist/{v2/components → components}/web-server/index.d.ts +29 -7
- package/dist/components/web-server/index.d.ts.map +1 -0
- package/dist/{v2/components → components}/web-server/index.js +48 -39
- package/dist/{v2/components → components}/web-server/load-balancer.d.ts +2 -1
- package/dist/components/web-server/load-balancer.d.ts.map +1 -0
- package/dist/{v2/components → components}/web-server/load-balancer.js +16 -13
- package/dist/index.d.ts +24 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -26
- package/dist/otel/batch-processor.d.ts.map +1 -0
- package/dist/{v2/otel → otel}/builder.d.ts +14 -1
- package/dist/otel/builder.d.ts.map +1 -0
- package/dist/{v2/otel → otel}/builder.js +47 -2
- package/dist/{v2/otel → otel}/config.d.ts +13 -1
- package/dist/otel/config.d.ts.map +1 -0
- package/dist/{v2/otel → otel}/config.js +20 -3
- package/dist/{v2/otel → otel}/index.d.ts +8 -0
- package/dist/otel/index.d.ts.map +1 -0
- package/dist/otel/memory-limiter-processor.d.ts.map +1 -0
- package/dist/otel/otlp-receiver.d.ts.map +1 -0
- package/dist/otel/prometheus-remote-write-exporter.d.ts.map +1 -0
- package/dist/shared/common-tags.d.ts +5 -0
- package/dist/shared/common-tags.d.ts.map +1 -0
- package/dist/shared/common-tags.js +8 -0
- package/dist/shared/merge-with-defaults.d.ts +2 -0
- package/dist/shared/merge-with-defaults.d.ts.map +1 -0
- package/dist/shared/merge-with-defaults.js +7 -0
- package/package.json +35 -16
- package/dist/components/acm-certificate.d.ts +0 -11
- package/dist/components/acm-certificate.d.ts.map +0 -1
- package/dist/components/acm-certificate.js +0 -30
- package/dist/components/database-replica.d.ts +0 -69
- package/dist/components/database-replica.d.ts.map +0 -1
- package/dist/components/database-replica.js +0 -40
- package/dist/components/database.d.ts +0 -99
- package/dist/components/database.d.ts.map +0 -1
- package/dist/components/database.js +0 -118
- package/dist/components/ec2-ssm-connect.d.ts +0 -22
- package/dist/components/ec2-ssm-connect.d.ts.map +0 -1
- package/dist/components/ecs-service.d.ts +0 -143
- package/dist/components/ecs-service.d.ts.map +0 -1
- package/dist/components/ecs-service.js +0 -357
- package/dist/components/mongo.d.ts +0 -39
- package/dist/components/mongo.d.ts.map +0 -1
- package/dist/components/mongo.js +0 -54
- package/dist/components/nuxt-ssr.d.ts +0 -44
- package/dist/components/nuxt-ssr.d.ts.map +0 -1
- package/dist/components/nuxt-ssr.js +0 -277
- package/dist/components/password.d.ts.map +0 -1
- package/dist/components/project.d.ts +0 -77
- package/dist/components/project.d.ts.map +0 -1
- package/dist/components/project.js +0 -171
- package/dist/components/redis.d.ts +0 -23
- package/dist/components/redis.d.ts.map +0 -1
- package/dist/components/redis.js +0 -35
- package/dist/components/static-site.d.ts +0 -36
- package/dist/components/static-site.d.ts.map +0 -1
- package/dist/components/static-site.js +0 -138
- package/dist/components/web-server.d.ts +0 -38
- package/dist/components/web-server.d.ts.map +0 -1
- package/dist/components/web-server.js +0 -185
- package/dist/constants.d.ts +0 -23
- package/dist/constants.d.ts.map +0 -1
- package/dist/types/pulumi.d.ts +0 -5
- package/dist/types/pulumi.d.ts.map +0 -1
- package/dist/types/size.d.ts +0 -8
- package/dist/types/size.d.ts.map +0 -1
- package/dist/types/size.js +0 -2
- package/dist/v2/components/ecs-service/index.d.ts.map +0 -1
- package/dist/v2/components/ecs-service/policies.d.ts.map +0 -1
- package/dist/v2/components/grafana/dashboards/index.d.ts.map +0 -1
- package/dist/v2/components/grafana/dashboards/panels.d.ts.map +0 -1
- package/dist/v2/components/grafana/dashboards/types.d.ts.map +0 -1
- package/dist/v2/components/grafana/dashboards/web-server-slo.d.ts.map +0 -1
- package/dist/v2/components/grafana/index.d.ts.map +0 -1
- package/dist/v2/components/prometheus/index.d.ts.map +0 -1
- package/dist/v2/components/prometheus/queries.d.ts.map +0 -1
- package/dist/v2/components/prometheus/queries.test.d.ts.map +0 -1
- package/dist/v2/components/web-server/builder.d.ts.map +0 -1
- package/dist/v2/components/web-server/index.d.ts.map +0 -1
- package/dist/v2/components/web-server/load-balancer.d.ts.map +0 -1
- package/dist/v2/index.d.ts +0 -13
- package/dist/v2/index.d.ts.map +0 -1
- package/dist/v2/index.js +0 -16
- package/dist/v2/otel/batch-processor.d.ts.map +0 -1
- package/dist/v2/otel/builder.d.ts.map +0 -1
- package/dist/v2/otel/config.d.ts.map +0 -1
- package/dist/v2/otel/index.d.ts.map +0 -1
- package/dist/v2/otel/memory-limiter-processor.d.ts.map +0 -1
- package/dist/v2/otel/otlp-receiver.d.ts.map +0 -1
- package/dist/v2/otel/prometheus-remote-write-exporter.d.ts.map +0 -1
- /package/dist/{v2/components/grafana/dashboards → components/cloudfront}/types.js +0 -0
- /package/dist/{v2/components → components}/ecs-service/policies.d.ts +0 -0
- /package/dist/{v2/components → components}/ecs-service/policies.js +0 -0
- /package/dist/{v2/components → components}/grafana/dashboards/index.d.ts +0 -0
- /package/dist/{v2/components → components}/grafana/dashboards/index.js +0 -0
- /package/dist/{v2/components → components}/grafana/dashboards/panels.d.ts +0 -0
- /package/dist/{v2/components → components}/grafana/dashboards/panels.js +0 -0
- /package/dist/{v2/components → components}/grafana/dashboards/types.d.ts +0 -0
- /package/dist/{types/pulumi.js → components/grafana/dashboards/types.js} +0 -0
- /package/dist/{v2/components → components}/grafana/dashboards/web-server-slo.d.ts +0 -0
- /package/dist/{v2/components → components}/grafana/dashboards/web-server-slo.js +0 -0
- /package/dist/{v2/components → components}/grafana/index.d.ts +0 -0
- /package/dist/{v2/components → components}/grafana/index.js +0 -0
- /package/dist/{v2/components → components}/prometheus/index.d.ts +0 -0
- /package/dist/{v2/components → components}/prometheus/index.js +0 -0
- /package/dist/{v2/components → components}/prometheus/queries.d.ts +0 -0
- /package/dist/{v2/components → components}/prometheus/queries.js +0 -0
- /package/dist/{v2/components → components}/prometheus/queries.test.d.ts +0 -0
- /package/dist/{v2/components → components}/prometheus/queries.test.js +0 -0
- /package/dist/{v2/otel → otel}/batch-processor.d.ts +0 -0
- /package/dist/{v2/otel → otel}/batch-processor.js +0 -0
- /package/dist/{v2/otel → otel}/index.js +0 -0
- /package/dist/{v2/otel → otel}/memory-limiter-processor.d.ts +0 -0
- /package/dist/{v2/otel → otel}/memory-limiter-processor.js +0 -0
- /package/dist/{v2/otel → otel}/otlp-receiver.d.ts +0 -0
- /package/dist/{v2/otel → otel}/otlp-receiver.js +0 -0
- /package/dist/{v2/otel → otel}/prometheus-remote-write-exporter.d.ts +0 -0
- /package/dist/{v2/otel → otel}/prometheus-remote-write-exporter.js +0 -0
package/dist/index.js
CHANGED
|
@@ -1,28 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
3
|
+
exports.prometheus = exports.grafana = exports.openTelemetry = exports.S3Assets = exports.StaticSite = exports.CloudFront = exports.Password = exports.AcmCertificate = exports.Ec2SSMConnect = exports.DatabaseReplica = exports.DatabaseBuilder = exports.Database = exports.Vpc = exports.UpstashRedis = exports.ElastiCacheRedis = exports.WebServerLoadBalancer = exports.WebServerBuilder = exports.WebServer = exports.EcsService = void 0;
|
|
4
|
+
var ecs_service_1 = require("./components/ecs-service");
|
|
5
|
+
Object.defineProperty(exports, "EcsService", { enumerable: true, get: function () { return ecs_service_1.EcsService; } });
|
|
6
|
+
var web_server_1 = require("./components/web-server");
|
|
7
|
+
Object.defineProperty(exports, "WebServer", { enumerable: true, get: function () { return web_server_1.WebServer; } });
|
|
8
|
+
var builder_1 = require("./components/web-server/builder");
|
|
9
|
+
Object.defineProperty(exports, "WebServerBuilder", { enumerable: true, get: function () { return builder_1.WebServerBuilder; } });
|
|
10
|
+
var load_balancer_1 = require("./components/web-server/load-balancer");
|
|
11
|
+
Object.defineProperty(exports, "WebServerLoadBalancer", { enumerable: true, get: function () { return load_balancer_1.WebServerLoadBalancer; } });
|
|
12
|
+
var elasticache_redis_1 = require("./components/redis/elasticache-redis");
|
|
13
|
+
Object.defineProperty(exports, "ElastiCacheRedis", { enumerable: true, get: function () { return elasticache_redis_1.ElastiCacheRedis; } });
|
|
14
|
+
var upstash_redis_1 = require("./components/redis/upstash-redis");
|
|
15
|
+
Object.defineProperty(exports, "UpstashRedis", { enumerable: true, get: function () { return upstash_redis_1.UpstashRedis; } });
|
|
16
|
+
var vpc_1 = require("./components/vpc");
|
|
17
|
+
Object.defineProperty(exports, "Vpc", { enumerable: true, get: function () { return vpc_1.Vpc; } });
|
|
18
|
+
var database_1 = require("./components/database");
|
|
19
|
+
Object.defineProperty(exports, "Database", { enumerable: true, get: function () { return database_1.Database; } });
|
|
20
|
+
var builder_2 = require("./components/database/builder");
|
|
21
|
+
Object.defineProperty(exports, "DatabaseBuilder", { enumerable: true, get: function () { return builder_2.DatabaseBuilder; } });
|
|
22
|
+
var database_replica_1 = require("./components/database/database-replica");
|
|
23
|
+
Object.defineProperty(exports, "DatabaseReplica", { enumerable: true, get: function () { return database_replica_1.DatabaseReplica; } });
|
|
24
|
+
var ec2_ssm_connect_1 = require("./components/database/ec2-ssm-connect");
|
|
25
|
+
Object.defineProperty(exports, "Ec2SSMConnect", { enumerable: true, get: function () { return ec2_ssm_connect_1.Ec2SSMConnect; } });
|
|
26
|
+
var acm_certificate_1 = require("./components/acm-certificate");
|
|
27
|
+
Object.defineProperty(exports, "AcmCertificate", { enumerable: true, get: function () { return acm_certificate_1.AcmCertificate; } });
|
|
28
|
+
var password_1 = require("./components/password");
|
|
29
|
+
Object.defineProperty(exports, "Password", { enumerable: true, get: function () { return password_1.Password; } });
|
|
30
|
+
var cloudfront_1 = require("./components/cloudfront");
|
|
31
|
+
Object.defineProperty(exports, "CloudFront", { enumerable: true, get: function () { return cloudfront_1.CloudFront; } });
|
|
32
|
+
var static_site_1 = require("./components/static-site");
|
|
33
|
+
Object.defineProperty(exports, "StaticSite", { enumerable: true, get: function () { return static_site_1.StaticSite; } });
|
|
34
|
+
var s3_assets_1 = require("./components/static-site/s3-assets");
|
|
35
|
+
Object.defineProperty(exports, "S3Assets", { enumerable: true, get: function () { return s3_assets_1.S3Assets; } });
|
|
36
|
+
const builder_3 = require("./otel/builder");
|
|
37
|
+
const otel_1 = require("./otel");
|
|
38
|
+
exports.openTelemetry = { OtelCollector: otel_1.OtelCollector, OtelCollectorBuilder: builder_3.OtelCollectorBuilder };
|
|
39
|
+
exports.grafana = require("./components/grafana");
|
|
40
|
+
exports.prometheus = require("./components/prometheus");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-processor.d.ts","sourceRoot":"","sources":["../../src/otel/batch-processor.ts"],"names":[],"mappings":"AAAA,yBAAiB,cAAc,CAAC;IAC9B,KAAY,MAAM,GAAG;QACnB,eAAe,EAAE,MAAM,CAAC;QACxB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,eAAO,MAAM,QAAQ;;;;;CAKpB,CAAC"}
|
|
@@ -2,6 +2,16 @@ import * as pulumi from '@pulumi/pulumi';
|
|
|
2
2
|
import * as aws from '@pulumi/aws';
|
|
3
3
|
import { OtelCollector } from '.';
|
|
4
4
|
import { OTLPReceiver } from './otlp-receiver';
|
|
5
|
+
import { PrometheusRemoteWriteExporter } from './prometheus-remote-write-exporter';
|
|
6
|
+
export declare namespace OtelCollectorBuilder {
|
|
7
|
+
type WithDefaultArgs = {
|
|
8
|
+
prometheusNamespace: PrometheusRemoteWriteExporter.Config['namespace'];
|
|
9
|
+
prometheusWorkspace: aws.amp.Workspace;
|
|
10
|
+
region: string;
|
|
11
|
+
logGroupName: OtelCollector.AwsCloudWatchLogsExporterConfig['log_group_name'];
|
|
12
|
+
logStreamName: OtelCollector.AwsCloudWatchLogsExporterConfig['log_stream_name'];
|
|
13
|
+
};
|
|
14
|
+
}
|
|
5
15
|
export declare class OtelCollectorBuilder {
|
|
6
16
|
private readonly _serviceName;
|
|
7
17
|
private readonly _env;
|
|
@@ -12,6 +22,7 @@ export declare class OtelCollectorBuilder {
|
|
|
12
22
|
withBatchProcessor(name?: string, size?: number, maxSize?: number, timeout?: string): this;
|
|
13
23
|
withMemoryLimiterProcessor(checkInterval?: string, limitPercentage?: number, spikeLimitPercentage?: number): this;
|
|
14
24
|
withAWSXRayExporter(region: string): this;
|
|
25
|
+
withCloudWatchLogsExporter(region: OtelCollector.AwsCloudWatchLogsExporterConfig['region'], logGroupName: OtelCollector.AwsCloudWatchLogsExporterConfig['log_group_name'], logStreamName: OtelCollector.AwsCloudWatchLogsExporterConfig['log_stream_name'], logRetention?: OtelCollector.AwsCloudWatchLogsExporterConfig['log_retention']): this;
|
|
15
26
|
withHealthCheckExtension(endpoint?: string): this;
|
|
16
27
|
withPprofExtension(endpoint?: string): this;
|
|
17
28
|
withAPS(namespace: pulumi.Input<string>, workspace: aws.amp.Workspace, region: string): this;
|
|
@@ -19,9 +30,11 @@ export declare class OtelCollectorBuilder {
|
|
|
19
30
|
withTelemetry(logLevel?: 'debug' | 'warn' | 'error', metricsVerbosity?: 'basic' | 'normal' | 'detailed'): this;
|
|
20
31
|
withMetricsPipeline(receivers: OtelCollector.ReceiverType[], processors: OtelCollector.ProcessorType[], exporters: OtelCollector.ExporterType[]): this;
|
|
21
32
|
withTracesPipeline(receivers: OtelCollector.ReceiverType[], processors: OtelCollector.ProcessorType[], exporters: OtelCollector.ExporterType[]): this;
|
|
22
|
-
|
|
33
|
+
withLogsPipeline(receivers: OtelCollector.ReceiverType[], processors: OtelCollector.ProcessorType[], exporters: OtelCollector.ExporterType[]): this;
|
|
34
|
+
withDefault({ prometheusNamespace, prometheusWorkspace, region, logGroupName, logStreamName, }: OtelCollectorBuilder.WithDefaultArgs): this;
|
|
23
35
|
build(): OtelCollector;
|
|
24
36
|
private createAPSInlinePolicy;
|
|
25
37
|
private createAWSXRayPolicy;
|
|
38
|
+
private createCloudWatchLogsPolicy;
|
|
26
39
|
}
|
|
27
40
|
//# sourceMappingURL=builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/otel/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,11 @@ class OtelCollectorBuilder {
|
|
|
30
30
|
this.createAWSXRayPolicy();
|
|
31
31
|
return this;
|
|
32
32
|
}
|
|
33
|
+
withCloudWatchLogsExporter(region, logGroupName, logStreamName, logRetention) {
|
|
34
|
+
this._configBuilder.withCloudWatchLogsExporter(region, logGroupName, logStreamName, logRetention);
|
|
35
|
+
this.createCloudWatchLogsPolicy(logGroupName);
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
33
38
|
withHealthCheckExtension(endpoint = '0.0.0.0:13133') {
|
|
34
39
|
this._configBuilder.withHealthCheckExtension(endpoint);
|
|
35
40
|
return this;
|
|
@@ -59,10 +64,21 @@ class OtelCollectorBuilder {
|
|
|
59
64
|
this._configBuilder.withTracesPipeline(receivers, processors, exporters);
|
|
60
65
|
return this;
|
|
61
66
|
}
|
|
62
|
-
|
|
63
|
-
this._configBuilder.
|
|
67
|
+
withLogsPipeline(receivers, processors, exporters) {
|
|
68
|
+
this._configBuilder.withLogsPipeline(receivers, processors, exporters);
|
|
69
|
+
return this;
|
|
70
|
+
}
|
|
71
|
+
withDefault({ prometheusNamespace, prometheusWorkspace, region, logGroupName, logStreamName, }) {
|
|
72
|
+
this._configBuilder.withDefault({
|
|
73
|
+
prometheusNamespace,
|
|
74
|
+
prometheusEndpoint: pulumi.interpolate `${prometheusWorkspace.prometheusEndpoint}api/v1/remote_write`,
|
|
75
|
+
region,
|
|
76
|
+
logGroupName,
|
|
77
|
+
logStreamName,
|
|
78
|
+
});
|
|
64
79
|
this.createAPSInlinePolicy(prometheusWorkspace);
|
|
65
80
|
this.createAWSXRayPolicy();
|
|
81
|
+
this.createCloudWatchLogsPolicy(logGroupName);
|
|
66
82
|
return this;
|
|
67
83
|
}
|
|
68
84
|
build() {
|
|
@@ -108,5 +124,34 @@ class OtelCollectorBuilder {
|
|
|
108
124
|
}));
|
|
109
125
|
this._taskRoleInlinePolicies.push(policy);
|
|
110
126
|
}
|
|
127
|
+
createCloudWatchLogsPolicy(logGroupName) {
|
|
128
|
+
const policy = pulumi
|
|
129
|
+
.all([this._serviceName, logGroupName])
|
|
130
|
+
.apply(([serviceName, logGroupName]) => {
|
|
131
|
+
return {
|
|
132
|
+
name: `${serviceName}-task-role-cloudwatch-logs`,
|
|
133
|
+
policy: JSON.stringify({
|
|
134
|
+
Version: '2012-10-17',
|
|
135
|
+
Statement: [
|
|
136
|
+
{
|
|
137
|
+
Effect: 'Allow',
|
|
138
|
+
Action: ['logs:CreateLogGroup', 'logs:PutRetentionPolicy'],
|
|
139
|
+
Resource: '*',
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
Effect: 'Allow',
|
|
143
|
+
Action: [
|
|
144
|
+
'logs:CreateLogStream',
|
|
145
|
+
'logs:DescribeLogStreams',
|
|
146
|
+
'logs:PutLogEvents',
|
|
147
|
+
],
|
|
148
|
+
Resource: `arn:aws:logs:*:*:log-group:${logGroupName}:*`,
|
|
149
|
+
},
|
|
150
|
+
],
|
|
151
|
+
}),
|
|
152
|
+
};
|
|
153
|
+
});
|
|
154
|
+
this._taskRoleInlinePolicies.push(policy);
|
|
155
|
+
}
|
|
111
156
|
}
|
|
112
157
|
exports.OtelCollectorBuilder = OtelCollectorBuilder;
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import * as pulumi from '@pulumi/pulumi';
|
|
2
2
|
import { OTLPReceiver } from './otlp-receiver';
|
|
3
3
|
import type { OtelCollector } from '.';
|
|
4
|
+
import type { PrometheusRemoteWriteExporter } from './prometheus-remote-write-exporter';
|
|
5
|
+
export declare namespace OtelCollectorConfigBuilder {
|
|
6
|
+
type WithDefaultArgs = {
|
|
7
|
+
prometheusNamespace: PrometheusRemoteWriteExporter.Config['namespace'];
|
|
8
|
+
prometheusEndpoint: PrometheusRemoteWriteExporter.Config['endpoint'];
|
|
9
|
+
region: string;
|
|
10
|
+
logGroupName: OtelCollector.AwsCloudWatchLogsExporterConfig['log_group_name'];
|
|
11
|
+
logStreamName: OtelCollector.AwsCloudWatchLogsExporterConfig['log_stream_name'];
|
|
12
|
+
};
|
|
13
|
+
}
|
|
4
14
|
export declare class OtelCollectorConfigBuilder {
|
|
5
15
|
private readonly _receivers;
|
|
6
16
|
private readonly _processors;
|
|
@@ -11,6 +21,7 @@ export declare class OtelCollectorConfigBuilder {
|
|
|
11
21
|
withBatchProcessor(name?: string, size?: number, maxSize?: number, timeout?: string): this;
|
|
12
22
|
withMemoryLimiterProcessor(checkInterval?: string, limitPercentage?: number, spikeLimitPercentage?: number): this;
|
|
13
23
|
withAWSXRayExporter(region: string): this;
|
|
24
|
+
withCloudWatchLogsExporter(region: OtelCollector.AwsCloudWatchLogsExporterConfig['region'], logGroupName: OtelCollector.AwsCloudWatchLogsExporterConfig['log_group_name'], logStreamName: OtelCollector.AwsCloudWatchLogsExporterConfig['log_stream_name'], logRetention?: OtelCollector.AwsCloudWatchLogsExporterConfig['log_retention']): this;
|
|
14
25
|
withHealthCheckExtension(endpoint?: string): this;
|
|
15
26
|
withPprofExtension(endpoint?: string): this;
|
|
16
27
|
withAPS(namespace: pulumi.Input<string>, endpoint: pulumi.Input<string>, region: string): this;
|
|
@@ -18,7 +29,8 @@ export declare class OtelCollectorConfigBuilder {
|
|
|
18
29
|
withTelemetry(logLevel?: 'debug' | 'warn' | 'error', metricsVerbosity?: 'basic' | 'normal' | 'detailed'): this;
|
|
19
30
|
withMetricsPipeline(receivers: OtelCollector.ReceiverType[], processors: OtelCollector.ProcessorType[], exporters: OtelCollector.ExporterType[]): this;
|
|
20
31
|
withTracesPipeline(receivers: OtelCollector.ReceiverType[], processors: OtelCollector.ProcessorType[], exporters: OtelCollector.ExporterType[]): this;
|
|
21
|
-
|
|
32
|
+
withLogsPipeline(receivers: OtelCollector.ReceiverType[], processors: OtelCollector.ProcessorType[], exporters: OtelCollector.ExporterType[]): this;
|
|
33
|
+
withDefault({ prometheusNamespace, prometheusEndpoint, region, logGroupName, logStreamName, }: OtelCollectorConfigBuilder.WithDefaultArgs): this;
|
|
22
34
|
build(): OtelCollector.Config;
|
|
23
35
|
private validatePipelineProcessorOrder;
|
|
24
36
|
private validatePipelineComponents;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/otel/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,10 @@ class OtelCollectorConfigBuilder {
|
|
|
46
46
|
this._exporters.awsxray = { region };
|
|
47
47
|
return this;
|
|
48
48
|
}
|
|
49
|
+
withCloudWatchLogsExporter(region, logGroupName, logStreamName, logRetention) {
|
|
50
|
+
this._exporters.awscloudwatchlogs = Object.assign({ region, log_group_name: logGroupName, log_stream_name: logStreamName }, (logRetention && { log_retention: logRetention }));
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
49
53
|
withHealthCheckExtension(endpoint = '0.0.0.0:13133') {
|
|
50
54
|
this._extensions.health_check = { endpoint };
|
|
51
55
|
return this;
|
|
@@ -95,23 +99,36 @@ class OtelCollectorConfigBuilder {
|
|
|
95
99
|
};
|
|
96
100
|
return this;
|
|
97
101
|
}
|
|
98
|
-
|
|
102
|
+
withLogsPipeline(receivers, processors, exporters) {
|
|
103
|
+
this._service.pipelines.logs = {
|
|
104
|
+
receivers,
|
|
105
|
+
processors,
|
|
106
|
+
exporters,
|
|
107
|
+
};
|
|
108
|
+
return this;
|
|
109
|
+
}
|
|
110
|
+
withDefault({ prometheusNamespace, prometheusEndpoint, region, logGroupName, logStreamName, }) {
|
|
99
111
|
return this.withOTLPReceiver(['http'])
|
|
100
112
|
.withMemoryLimiterProcessor()
|
|
101
113
|
.withBatchProcessor('batch/metrics')
|
|
102
114
|
.withBatchProcessor('batch/traces', 2000, 5000, '2s')
|
|
103
|
-
.
|
|
104
|
-
.
|
|
115
|
+
.withBatchProcessor('batch/logs', 1024, 5000, '2s')
|
|
116
|
+
.withAPS(prometheusNamespace, prometheusEndpoint, region)
|
|
117
|
+
.withAWSXRayExporter(region)
|
|
118
|
+
.withCloudWatchLogsExporter(region, logGroupName, logStreamName)
|
|
105
119
|
.withHealthCheckExtension()
|
|
106
120
|
.withMetricsPipeline(['otlp'], ['memory_limiter', 'batch/metrics'], ['prometheusremotewrite'])
|
|
107
121
|
.withTracesPipeline(['otlp'], ['memory_limiter', 'batch/traces'], ['awsxray'])
|
|
122
|
+
.withLogsPipeline(['otlp'], ['memory_limiter', 'batch/logs'], ['awscloudwatchlogs'])
|
|
108
123
|
.withTelemetry();
|
|
109
124
|
}
|
|
110
125
|
build() {
|
|
111
126
|
this.validatePipelineComponents('metrics');
|
|
112
127
|
this.validatePipelineComponents('traces');
|
|
128
|
+
this.validatePipelineComponents('logs');
|
|
113
129
|
this.validatePipelineProcessorOrder('metrics');
|
|
114
130
|
this.validatePipelineProcessorOrder('traces');
|
|
131
|
+
this.validatePipelineProcessorOrder('logs');
|
|
115
132
|
// FIX: Fix type inference
|
|
116
133
|
const extensions = Object.keys(this._extensions);
|
|
117
134
|
if (extensions.length) {
|
|
@@ -20,6 +20,12 @@ export declare namespace OtelCollector {
|
|
|
20
20
|
region: string;
|
|
21
21
|
endpoint?: string;
|
|
22
22
|
};
|
|
23
|
+
type AwsCloudWatchLogsExporterConfig = {
|
|
24
|
+
region: string;
|
|
25
|
+
log_group_name: pulumi.Input<string>;
|
|
26
|
+
log_stream_name: pulumi.Input<string>;
|
|
27
|
+
log_retention?: number;
|
|
28
|
+
};
|
|
23
29
|
type DebugExportedConfig = {
|
|
24
30
|
verbosity: string;
|
|
25
31
|
};
|
|
@@ -27,6 +33,7 @@ export declare namespace OtelCollector {
|
|
|
27
33
|
prometheusremotewrite?: PrometheusRemoteWriteExporter.Config;
|
|
28
34
|
awsxray?: AwsXRayExporterConfig;
|
|
29
35
|
debug?: DebugExportedConfig;
|
|
36
|
+
awscloudwatchlogs?: AwsCloudWatchLogsExporterConfig;
|
|
30
37
|
};
|
|
31
38
|
type ExporterType = keyof Exporter;
|
|
32
39
|
type SigV4AuthExtensionConfig = {
|
|
@@ -62,6 +69,7 @@ export declare namespace OtelCollector {
|
|
|
62
69
|
pipelines: {
|
|
63
70
|
metrics?: PipelineConfig;
|
|
64
71
|
traces?: PipelineConfig;
|
|
72
|
+
logs?: PipelineConfig;
|
|
65
73
|
};
|
|
66
74
|
extensions?: ExtensionType[];
|
|
67
75
|
telemetry?: TelemetryConfig;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/otel/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AAGzC,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAEnF,yBAAiB,aAAa,CAAC;IAC7B,KAAY,QAAQ,GAAG;QACrB,IAAI,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC;KAC5B,CAAC;IACF,KAAY,YAAY,GAAG,MAAM,QAAQ,CAAC;IAE1C,KAAY,SAAS,GAAG;QACtB,KAAK,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC;QAC9B,cAAc,CAAC,EAAE,sBAAsB,CAAC,MAAM,CAAC;KAChD,GAAG;QACF,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;KACvC,CAAC;IACF,KAAY,aAAa,GAAG,MAAM,SAAS,CAAC;IAE5C,KAAY,qBAAqB,GAAG;QAClC,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF,KAAY,+BAA+B,GAAG;QAC5C,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtC,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IAEF,KAAY,mBAAmB,GAAG;QAChC,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF,KAAY,QAAQ,GAAG;QACrB,qBAAqB,CAAC,EAAE,6BAA6B,CAAC,MAAM,CAAC;QAC7D,OAAO,CAAC,EAAE,qBAAqB,CAAC;QAChC,KAAK,CAAC,EAAE,mBAAmB,CAAC;QAC5B,iBAAiB,CAAC,EAAE,+BAA+B,CAAC;KACrD,CAAC;IACF,KAAY,YAAY,GAAG,MAAM,QAAQ,CAAC;IAE1C,KAAY,wBAAwB,GAAG;QACrC,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAEF,KAAY,0BAA0B,GAAG;QACvC,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF,KAAY,oBAAoB,GAAG;QACjC,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF,KAAY,SAAS,GAAG;QACtB,SAAS,CAAC,EAAE,wBAAwB,CAAC;QACrC,YAAY,CAAC,EAAE,0BAA0B,CAAC;QAC1C,KAAK,CAAC,EAAE,oBAAoB,CAAC;KAC9B,CAAC;IACF,KAAY,aAAa,GAAG,MAAM,SAAS,CAAC;IAE5C,KAAY,cAAc,GAAG;QAC3B,SAAS,EAAE,YAAY,EAAE,CAAC;QAC1B,UAAU,EAAE,aAAa,EAAE,CAAC;QAC5B,SAAS,EAAE,YAAY,EAAE,CAAC;KAC3B,CAAC;IAEF,KAAY,eAAe,GAAG;QAC5B,IAAI,CAAC,EAAE;YACL,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;QACF,OAAO,CAAC,EAAE;YACR,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;KACH,CAAC;IAEF,KAAY,OAAO,GAAG;QACpB,SAAS,EAAE;YACT,OAAO,CAAC,EAAE,cAAc,CAAC;YACzB,MAAM,CAAC,EAAE,cAAc,CAAC;YACxB,IAAI,CAAC,EAAE,cAAc,CAAC;SACvB,CAAC;QACF,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;QAC7B,SAAS,CAAC,EAAE,eAAe,CAAC;KAC7B,CAAC;IAEF,KAAY,MAAM,GAAG;QACnB,SAAS,EAAE,QAAQ,CAAC;QACpB,UAAU,EAAE,SAAS,CAAC;QACtB,SAAS,EAAE,QAAQ,CAAC;QACpB,UAAU,EAAE,SAAS,CAAC;QACtB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IAEF,KAAY,IAAI,GAAG;QACjB,aAAa,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACxC,sBAAsB,CAAC,EAAE,MAAM,CAAC,KAAK,CACnC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAC5C,CAAC;KACH,CAAC;CACH;AAED,qBAAa,aAAa;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC/C,eAAe,EAAE,UAAU,CAAC,SAAS,CAAC;IACtC,sBAAsB,EAAE,aAAa,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBAGnE,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EACjC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EACzB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAC1C,IAAI,GAAE,aAAa,CAAC,IAAS;IAuB/B,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,wBAAwB;IAmBhC,OAAO,CAAC,qBAAqB;CAqB9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-limiter-processor.d.ts","sourceRoot":"","sources":["../../src/otel/memory-limiter-processor.ts"],"names":[],"mappings":"AAAA,yBAAiB,sBAAsB,CAAC;IACtC,KAAY,MAAM,GAAG;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;QACzB,sBAAsB,EAAE,MAAM,CAAC;KAChC,CAAC;CACH;AAED,eAAO,MAAM,QAAQ;;;;CAIpB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otlp-receiver.d.ts","sourceRoot":"","sources":["../../src/otel/otlp-receiver.ts"],"names":[],"mappings":"AAAA,yBAAiB,YAAY,CAAC;IAC5B,KAAY,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACvC,KAAY,MAAM,GAAG;QACnB,SAAS,EAAE;aACR,CAAC,IAAI,QAAQ,CAAC,CAAC,EAAE;gBAChB,QAAQ,EAAE,MAAM,CAAC;aAClB;SACF,CAAC;KACH,CAAC;CACH;AAED,eAAO,MAAM,QAAQ;;;;;;;CAOpB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prometheus-remote-write-exporter.d.ts","sourceRoot":"","sources":["../../src/otel/prometheus-remote-write-exporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AAEzC,yBAAiB,6BAA6B,CAAC;IAC7C,KAAY,MAAM,GAAG;QACnB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAChC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,EAAE;YACL,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SACrC,CAAC;KACH,CAAC;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common-tags.d.ts","sourceRoot":"","sources":["../../src/shared/common-tags.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU;;;CAGtB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-with-defaults.d.ts","sourceRoot":"","sources":["../../src/shared/merge-with-defaults.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAC/B,CAAC,SAAS,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,EACtC,CAAC,SAAS,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,EACtC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAM7B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mergeWithDefaults = mergeWithDefaults;
|
|
4
|
+
function mergeWithDefaults(defaults, args) {
|
|
5
|
+
const argsWithoutUndefined = Object.fromEntries(Object.entries(args).filter(([, value]) => value !== undefined));
|
|
6
|
+
return Object.assign({}, defaults, argsWithoutUndefined);
|
|
7
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@studion/infra-code-blocks",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "2.0.0-alpha.1",
|
|
4
4
|
"description": "Studion common infra components",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"infrastructure",
|
|
@@ -29,46 +29,65 @@
|
|
|
29
29
|
"build": "npm run clean && tsc -b src",
|
|
30
30
|
"format": "prettier -w .",
|
|
31
31
|
"release": "release-it --only-version",
|
|
32
|
-
"test": "
|
|
32
|
+
"test": "tsx --tsconfig tests/tsconfig.json tests/run.ts",
|
|
33
33
|
"test:build": "npm run build && tstyche build",
|
|
34
34
|
"prepare": "husky"
|
|
35
35
|
},
|
|
36
36
|
"prettier": "@studion/prettier-config",
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@pulumi/aws": "^
|
|
39
|
-
"@pulumi/
|
|
38
|
+
"@pulumi/aws": "^7.15.0",
|
|
39
|
+
"@pulumi/aws-native": "^1.38.0",
|
|
40
|
+
"@pulumi/awsx": "^3.1.0",
|
|
40
41
|
"@pulumi/pulumi": "^3.146.0",
|
|
41
42
|
"@pulumi/random": "^4.17.0",
|
|
42
43
|
"@pulumiverse/grafana": "^0.16.3",
|
|
43
|
-
"@upstash/pulumi": "^0.
|
|
44
|
+
"@upstash/pulumi": "^0.5.0",
|
|
44
45
|
"yaml": "^2.7.1"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|
|
47
|
-
"@aws-sdk/client-acm": "^3.
|
|
48
|
-
"@aws-sdk/client-application-auto-scaling": "^3.
|
|
49
|
-
"@aws-sdk/client-
|
|
50
|
-
"@aws-sdk/client-
|
|
51
|
-
"@aws-sdk/client-
|
|
52
|
-
"@aws-sdk/client-
|
|
53
|
-
"@aws-sdk/client-
|
|
54
|
-
"@aws-sdk/client-
|
|
55
|
-
"@aws-sdk/client-
|
|
48
|
+
"@aws-sdk/client-acm": "^3.973.5",
|
|
49
|
+
"@aws-sdk/client-application-auto-scaling": "^3.973.5",
|
|
50
|
+
"@aws-sdk/client-cloudfront": "^3.973.5",
|
|
51
|
+
"@aws-sdk/client-cloudwatch-logs": "^3.973.5",
|
|
52
|
+
"@aws-sdk/client-ec2": "^3.973.5",
|
|
53
|
+
"@aws-sdk/client-ecs": "^3.973.5",
|
|
54
|
+
"@aws-sdk/client-efs": "^3.973.5",
|
|
55
|
+
"@aws-sdk/client-elastic-load-balancing-v2": "^3.764.5",
|
|
56
|
+
"@aws-sdk/client-elasticache": "^3.901.5",
|
|
57
|
+
"@aws-sdk/client-iam": "^3.973.5",
|
|
58
|
+
"@aws-sdk/client-kms": "^3.973.5",
|
|
59
|
+
"@aws-sdk/client-rds": "^3.973.5",
|
|
60
|
+
"@aws-sdk/client-route-53": "^3.973.5",
|
|
61
|
+
"@aws-sdk/client-s3": "^3.982.0",
|
|
62
|
+
"@aws-sdk/client-secrets-manager": "^3.973.5",
|
|
63
|
+
"@aws-sdk/client-servicediscovery": "^3.973.5",
|
|
64
|
+
"@aws-sdk/client-ssm": "^3.986.0",
|
|
56
65
|
"@studion/prettier-config": "^0.1.0",
|
|
57
66
|
"@types/node": "^22",
|
|
58
67
|
"exponential-backoff": "^3.1.2",
|
|
59
68
|
"http-status": "^2.1.0",
|
|
60
69
|
"husky": "^9.1.7",
|
|
70
|
+
"ioredis": "^5.8.1",
|
|
61
71
|
"lint-staged": "^16.1.2",
|
|
72
|
+
"mime": "^4.1.0",
|
|
62
73
|
"nanospinner": "^1.2.2",
|
|
63
74
|
"pathe": "^2.0.3",
|
|
64
75
|
"prettier": "^3.4.2",
|
|
65
76
|
"release-it": "^18.1.1",
|
|
66
|
-
"ts-node": "^10.9.2",
|
|
67
|
-
"tsconfig-paths": "^4.2.0",
|
|
68
77
|
"tstyche": "^4.0.0-beta.9",
|
|
78
|
+
"tsx": "^4.21.0",
|
|
69
79
|
"typescript": "^5.7.3",
|
|
70
80
|
"undici": "^6.21.2"
|
|
71
81
|
},
|
|
82
|
+
"overrides": {
|
|
83
|
+
"@pulumi/pulumi": {
|
|
84
|
+
"glob": "10.5.0",
|
|
85
|
+
"tar": "7.5.9"
|
|
86
|
+
},
|
|
87
|
+
"@aws-sdk/core": {
|
|
88
|
+
"fast-xml-parser": "5.3.6"
|
|
89
|
+
}
|
|
90
|
+
},
|
|
72
91
|
"publishConfig": {
|
|
73
92
|
"access": "public"
|
|
74
93
|
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import * as pulumi from '@pulumi/pulumi';
|
|
2
|
-
import * as aws from '@pulumi/aws';
|
|
3
|
-
export type AcmCertificateArgs = {
|
|
4
|
-
domain: pulumi.Input<string>;
|
|
5
|
-
hostedZoneId: pulumi.Input<string>;
|
|
6
|
-
};
|
|
7
|
-
export declare class AcmCertificate extends pulumi.ComponentResource {
|
|
8
|
-
certificate: aws.acm.Certificate;
|
|
9
|
-
constructor(name: string, args: AcmCertificateArgs, opts?: pulumi.ComponentResourceOptions);
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=acm-certificate.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acm-certificate.d.ts","sourceRoot":"","sources":["../../src/components/acm-certificate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AAGnC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;CACpC,CAAC;AAEF,qBAAa,cAAe,SAAQ,MAAM,CAAC,iBAAiB;IAC1D,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC;gBAG/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,kBAAkB,EACxB,IAAI,GAAE,MAAM,CAAC,wBAA6B;CAsC7C"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AcmCertificate = void 0;
|
|
4
|
-
const pulumi = require("@pulumi/pulumi");
|
|
5
|
-
const aws = require("@pulumi/aws");
|
|
6
|
-
const constants_1 = require("../constants");
|
|
7
|
-
class AcmCertificate extends pulumi.ComponentResource {
|
|
8
|
-
constructor(name, args, opts = {}) {
|
|
9
|
-
super('studion:acm:Certificate', name, {}, opts);
|
|
10
|
-
this.certificate = new aws.acm.Certificate(`${args.domain}-certificate`, { domainName: args.domain, validationMethod: 'DNS', tags: constants_1.commonTags }, { parent: this });
|
|
11
|
-
const certificateValidationDomain = new aws.route53.Record(`${args.domain}-cert-validation-domain`, {
|
|
12
|
-
name: this.certificate.domainValidationOptions[0].resourceRecordName,
|
|
13
|
-
type: this.certificate.domainValidationOptions[0].resourceRecordType,
|
|
14
|
-
zoneId: args.hostedZoneId,
|
|
15
|
-
records: [
|
|
16
|
-
this.certificate.domainValidationOptions[0].resourceRecordValue,
|
|
17
|
-
],
|
|
18
|
-
ttl: 600,
|
|
19
|
-
}, {
|
|
20
|
-
parent: this,
|
|
21
|
-
deleteBeforeReplace: true,
|
|
22
|
-
});
|
|
23
|
-
const certificateValidation = new aws.acm.CertificateValidation(`${args.domain}-cert-validation`, {
|
|
24
|
-
certificateArn: this.certificate.arn,
|
|
25
|
-
validationRecordFqdns: [certificateValidationDomain.fqdn],
|
|
26
|
-
}, { parent: this });
|
|
27
|
-
this.registerOutputs();
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
exports.AcmCertificate = AcmCertificate;
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import * as aws from '@pulumi/aws';
|
|
2
|
-
import * as pulumi from '@pulumi/pulumi';
|
|
3
|
-
export type DatabaseReplicaArgs = {
|
|
4
|
-
/**
|
|
5
|
-
* ARN of the primary DB that we want to replicate.
|
|
6
|
-
*/
|
|
7
|
-
replicateSourceDb: pulumi.Input<string>;
|
|
8
|
-
/**
|
|
9
|
-
* DB subnet group name. Should be the same as primary instance.
|
|
10
|
-
* * If primary DB is instance of studion:Database, it can be accessed as
|
|
11
|
-
* `db.dbSubnetGroup.name`.
|
|
12
|
-
*/
|
|
13
|
-
dbSubnetGroupName?: pulumi.Input<string>;
|
|
14
|
-
/**
|
|
15
|
-
* DB security group ID. Should be the same as primary instance.
|
|
16
|
-
* If primary DB is instance of studion:Database, it can be accessed as
|
|
17
|
-
* `db.dbSecurityGroup.id`.
|
|
18
|
-
*/
|
|
19
|
-
dbSecurityGroupId: pulumi.Input<string>;
|
|
20
|
-
/**
|
|
21
|
-
* IAM Monitoring role. Should be the same as primary instance.
|
|
22
|
-
*/
|
|
23
|
-
monitoringRole?: aws.iam.Role;
|
|
24
|
-
/**
|
|
25
|
-
* Specifies if the RDS instance is multi-AZ. Defaults to false.
|
|
26
|
-
*/
|
|
27
|
-
multiAz?: pulumi.Input<boolean>;
|
|
28
|
-
/**
|
|
29
|
-
* Specifies whether any database modifications are applied immediately,
|
|
30
|
-
* or during the next maintenance window. Default is false.
|
|
31
|
-
*/
|
|
32
|
-
applyImmediately?: pulumi.Input<boolean>;
|
|
33
|
-
/**
|
|
34
|
-
* The allocated storage in gibibytes. Defaults to 20GB.
|
|
35
|
-
*/
|
|
36
|
-
allocatedStorage?: pulumi.Input<number>;
|
|
37
|
-
/**
|
|
38
|
-
* The upper limit to which Amazon RDS can automatically scale
|
|
39
|
-
* the storage of the DB instance. Defaults to 100GB.
|
|
40
|
-
*/
|
|
41
|
-
maxAllocatedStorage?: pulumi.Input<number>;
|
|
42
|
-
/**
|
|
43
|
-
* The instance type of the RDS instance. Defaults to 'db.t4g.micro'.
|
|
44
|
-
*/
|
|
45
|
-
instanceClass?: pulumi.Input<string>;
|
|
46
|
-
/**
|
|
47
|
-
* The name of custom aws.rds.ParameterGroup. Setting this param will apply custom
|
|
48
|
-
* DB parameters to this instance.
|
|
49
|
-
*/
|
|
50
|
-
parameterGroupName?: pulumi.Input<string>;
|
|
51
|
-
/**
|
|
52
|
-
* The DB engine version. Defaults to '17.2'.
|
|
53
|
-
*/
|
|
54
|
-
engineVersion?: pulumi.Input<string>;
|
|
55
|
-
/**
|
|
56
|
-
* A map of tags to assign to the resource.
|
|
57
|
-
*/
|
|
58
|
-
tags?: pulumi.Input<{
|
|
59
|
-
[key: string]: pulumi.Input<string>;
|
|
60
|
-
}>;
|
|
61
|
-
};
|
|
62
|
-
export declare class DatabaseReplica extends pulumi.ComponentResource {
|
|
63
|
-
name: string;
|
|
64
|
-
instance: aws.rds.Instance;
|
|
65
|
-
monitoringRole?: aws.iam.Role;
|
|
66
|
-
constructor(name: string, args: DatabaseReplicaArgs, opts?: pulumi.ComponentResourceOptions);
|
|
67
|
-
private createDatabaseInstance;
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=database-replica.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"database-replica.d.ts","sourceRoot":"","sources":["../../src/components/database-replica.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AAGzC,MAAM,MAAM,mBAAmB,GAAG;IAChC;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC;;OAEG;IACH,cAAc,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAChC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzC;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3C;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1C;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC;;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;AAYF,qBAAa,eAAgB,SAAQ,MAAM,CAAC,iBAAiB;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC3B,cAAc,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;gBAG5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,mBAAmB,EACzB,IAAI,GAAE,MAAM,CAAC,wBAA6B;IAa5C,OAAO,CAAC,sBAAsB;CAyC/B"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DatabaseReplica = void 0;
|
|
4
|
-
const aws = require("@pulumi/aws");
|
|
5
|
-
const pulumi = require("@pulumi/pulumi");
|
|
6
|
-
const constants_1 = require("../constants");
|
|
7
|
-
const defaults = {
|
|
8
|
-
multiAz: false,
|
|
9
|
-
applyImmediately: false,
|
|
10
|
-
allocatedStorage: 20,
|
|
11
|
-
maxAllocatedStorage: 100,
|
|
12
|
-
instanceClass: 'db.t4g.micro',
|
|
13
|
-
enableMonitoring: false,
|
|
14
|
-
engineVersion: '17.2',
|
|
15
|
-
};
|
|
16
|
-
class DatabaseReplica extends pulumi.ComponentResource {
|
|
17
|
-
constructor(name, args, opts = {}) {
|
|
18
|
-
super('studion:DatabaseReplica', name, {}, opts);
|
|
19
|
-
this.name = name;
|
|
20
|
-
const argsWithDefaults = Object.assign({}, defaults, args);
|
|
21
|
-
this.monitoringRole = argsWithDefaults.monitoringRole;
|
|
22
|
-
this.instance = this.createDatabaseInstance(args);
|
|
23
|
-
this.registerOutputs();
|
|
24
|
-
}
|
|
25
|
-
createDatabaseInstance(args) {
|
|
26
|
-
const argsWithDefaults = Object.assign({}, defaults, args);
|
|
27
|
-
const stack = pulumi.getStack();
|
|
28
|
-
const monitoringOptions = argsWithDefaults.enableMonitoring && this.monitoringRole
|
|
29
|
-
? {
|
|
30
|
-
monitoringInterval: 60,
|
|
31
|
-
monitoringRoleArn: this.monitoringRole.arn,
|
|
32
|
-
performanceInsightsEnabled: true,
|
|
33
|
-
performanceInsightsRetentionPeriod: 7,
|
|
34
|
-
}
|
|
35
|
-
: {};
|
|
36
|
-
const instance = new aws.rds.Instance(`${this.name}-rds`, Object.assign(Object.assign({ identifierPrefix: `${this.name}-`, engine: 'postgres', engineVersion: argsWithDefaults.engineVersion, allocatedStorage: argsWithDefaults.allocatedStorage, maxAllocatedStorage: argsWithDefaults.maxAllocatedStorage, instanceClass: argsWithDefaults.instanceClass, dbSubnetGroupName: argsWithDefaults.dbSubnetGroupName, vpcSecurityGroupIds: [argsWithDefaults.dbSecurityGroupId], storageEncrypted: true, multiAz: argsWithDefaults.multiAz, publiclyAccessible: false, applyImmediately: argsWithDefaults.applyImmediately, autoMinorVersionUpgrade: true, maintenanceWindow: 'Mon:07:00-Mon:07:30', replicateSourceDb: argsWithDefaults.replicateSourceDb, parameterGroupName: argsWithDefaults.parameterGroupName, skipFinalSnapshot: true }, monitoringOptions), { tags: Object.assign(Object.assign({}, constants_1.commonTags), argsWithDefaults.tags) }), { parent: this });
|
|
37
|
-
return instance;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
exports.DatabaseReplica = DatabaseReplica;
|