@relkit/deploy-pulumi 0.0.0
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/LICENSE +21 -0
- package/README.md +5 -0
- package/dist/aws-program-environment.d.ts +12 -0
- package/dist/aws-program-environment.d.ts.map +1 -0
- package/dist/aws-program-environment.js +73 -0
- package/dist/aws-program-environment.js.map +1 -0
- package/dist/aws-program-support.d.ts +10 -0
- package/dist/aws-program-support.d.ts.map +1 -0
- package/dist/aws-program-support.js +111 -0
- package/dist/aws-program-support.js.map +1 -0
- package/dist/aws-program.d.ts +33 -0
- package/dist/aws-program.d.ts.map +1 -0
- package/dist/aws-program.js +92 -0
- package/dist/aws-program.js.map +1 -0
- package/dist/events-report.d.ts +8 -0
- package/dist/events-report.d.ts.map +1 -0
- package/dist/events-report.js +72 -0
- package/dist/events-report.js.map +1 -0
- package/dist/events-support.d.ts +22 -0
- package/dist/events-support.d.ts.map +1 -0
- package/dist/events-support.js +105 -0
- package/dist/events-support.js.map +1 -0
- package/dist/events-types.d.ts +56 -0
- package/dist/events-types.d.ts.map +1 -0
- package/dist/events-types.js +2 -0
- package/dist/events-types.js.map +1 -0
- package/dist/events.d.ts +19 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +103 -0
- package/dist/events.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/program-support.d.ts +13 -0
- package/dist/program-support.d.ts.map +1 -0
- package/dist/program-support.js +98 -0
- package/dist/program-support.js.map +1 -0
- package/dist/program.d.ts +27 -0
- package/dist/program.d.ts.map +1 -0
- package/dist/program.js +95 -0
- package/dist/program.js.map +1 -0
- package/dist/workspace.d.ts +43 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +127 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +46 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 rel-kit
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as pulumi from "@pulumi/pulumi";
|
|
2
|
+
import type { RelkitBuckets, RelkitCaches, RelkitEventBus, RelkitJobQueues } from "@relkit/cloud-aws";
|
|
3
|
+
import type { DeploymentPlan } from "@relkit/deploy";
|
|
4
|
+
export interface ManagedEnvironmentResources {
|
|
5
|
+
readonly jobs: RelkitJobQueues;
|
|
6
|
+
readonly events: RelkitEventBus;
|
|
7
|
+
readonly buckets: RelkitBuckets;
|
|
8
|
+
readonly caches: RelkitCaches;
|
|
9
|
+
}
|
|
10
|
+
export declare function managedEnvironment(plan: DeploymentPlan, resources: ManagedEnvironmentResources, region: pulumi.Input<string>): Record<string, pulumi.Input<string>>;
|
|
11
|
+
export declare function withoutManagedCredentials(plan: DeploymentPlan, source: Record<string, pulumi.Input<string>>): Record<string, pulumi.Input<string>>;
|
|
12
|
+
//# sourceMappingURL=aws-program-environment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aws-program-environment.d.ts","sourceRoot":"","sources":["../src/aws-program-environment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,cAAc,EACd,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,cAAc,EAA0B,MAAM,gBAAgB,CAAC;AAE7E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;CAC/B;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,cAAc,EACpB,SAAS,EAAE,2BAA2B,EACtC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAC3B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CA6BtC;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAC3C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAKtC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import * as pulumi from "@pulumi/pulumi";
|
|
2
|
+
export function managedEnvironment(plan, resources, region) {
|
|
3
|
+
const environment = {};
|
|
4
|
+
for (const entry of plan.buckets) {
|
|
5
|
+
const binding = bindingFor(plan, entry.bindingId);
|
|
6
|
+
const bucket = resources.buckets.buckets.find(({ id }) => id === entry.id);
|
|
7
|
+
if (bucket === undefined)
|
|
8
|
+
continue;
|
|
9
|
+
assign(environment, reference(binding, "bucketName"), bucket.name);
|
|
10
|
+
assign(environment, reference(binding, "region"), region);
|
|
11
|
+
assign(environment, reference(binding, "endpoint"), pulumi.interpolate `https://s3.${region}.amazonaws.com`);
|
|
12
|
+
}
|
|
13
|
+
for (const entry of plan.caches) {
|
|
14
|
+
const binding = bindingFor(plan, entry.bindingId);
|
|
15
|
+
const cache = resources.caches.caches.find(({ id }) => id === entry.id);
|
|
16
|
+
if (cache !== undefined)
|
|
17
|
+
assign(environment, reference(binding, "url"), cache.url);
|
|
18
|
+
}
|
|
19
|
+
for (const entry of plan.jobs) {
|
|
20
|
+
const binding = bindingFor(plan, entry.bindingId);
|
|
21
|
+
const queue = resources.jobs.queues.find(({ id }) => id === entry.id);
|
|
22
|
+
if (queue !== undefined)
|
|
23
|
+
assign(environment, reference(binding, "queueUrl"), queue.queue.url);
|
|
24
|
+
}
|
|
25
|
+
const eventBinding = plan.providerBindings.find(({ capability }) => capability === "events");
|
|
26
|
+
if (eventBinding !== undefined) {
|
|
27
|
+
assign(environment, reference(eventBinding, "busName"), resources.events.eventBusName);
|
|
28
|
+
}
|
|
29
|
+
return environment;
|
|
30
|
+
}
|
|
31
|
+
export function withoutManagedCredentials(plan, source) {
|
|
32
|
+
const blocked = new Set();
|
|
33
|
+
for (const binding of plan.providerBindings)
|
|
34
|
+
collectCredentialReferences(binding.configuration, "", blocked);
|
|
35
|
+
return Object.fromEntries(Object.entries(source).filter(([name]) => !blocked.has(name)));
|
|
36
|
+
}
|
|
37
|
+
function bindingFor(plan, id) {
|
|
38
|
+
const binding = plan.providerBindings.find((entry) => entry.id === id);
|
|
39
|
+
if (binding === undefined)
|
|
40
|
+
throw new Error(`Managed provider binding "${id}" is absent.`);
|
|
41
|
+
return binding;
|
|
42
|
+
}
|
|
43
|
+
function reference(binding, path) {
|
|
44
|
+
let value = binding.configuration;
|
|
45
|
+
for (const part of path.split(".")) {
|
|
46
|
+
if (!record(value))
|
|
47
|
+
return undefined;
|
|
48
|
+
value = value[part];
|
|
49
|
+
}
|
|
50
|
+
return record(value) && value.kind === "env-ref" && typeof value.name === "string"
|
|
51
|
+
? value.name
|
|
52
|
+
: undefined;
|
|
53
|
+
}
|
|
54
|
+
function assign(target, name, value) {
|
|
55
|
+
if (name !== undefined)
|
|
56
|
+
target[name] = value;
|
|
57
|
+
}
|
|
58
|
+
function collectCredentialReferences(value, path, names) {
|
|
59
|
+
if (!record(value))
|
|
60
|
+
return;
|
|
61
|
+
if (value.kind === "env-ref" && typeof value.name === "string") {
|
|
62
|
+
if (/(?:credentials?|accessKeyId|secretAccessKey|sessionToken)/i.test(path))
|
|
63
|
+
names.add(value.name);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
for (const [name, item] of Object.entries(value)) {
|
|
67
|
+
collectCredentialReferences(item, path === "" ? name : `${path}.${name}`, names);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function record(value) {
|
|
71
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=aws-program-environment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aws-program-environment.js","sourceRoot":"","sources":["../src/aws-program-environment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as aws from "@pulumi/aws";
|
|
2
|
+
import * as pulumi from "@pulumi/pulumi";
|
|
3
|
+
import { type RelkitApplicationService, type RelkitBuckets, type RelkitCaches, type RelkitEventBus, type RelkitJobQueues, type RelkitEventTriggerDefinition, type RelkitJobQueueDefinition, type RelkitScheduleDefinition } from "@relkit/cloud-aws";
|
|
4
|
+
import type { DeploymentPlan } from "@relkit/deploy";
|
|
5
|
+
export declare function jobDefinition(job: DeploymentPlan["jobs"][number]): RelkitJobQueueDefinition;
|
|
6
|
+
export declare function eventTriggerDefinition(trigger: DeploymentPlan["eventTriggers"][number]): RelkitEventTriggerDefinition;
|
|
7
|
+
export declare function scheduleDefinition(schedule: DeploymentPlan["schedules"][number]): RelkitScheduleDefinition;
|
|
8
|
+
export declare function createServicePolicy(plan: DeploymentPlan, service: RelkitApplicationService, buckets: RelkitBuckets, jobs: RelkitJobQueues, events: RelkitEventBus, caches: RelkitCaches, root: pulumi.ComponentResource): aws.iam.RolePolicy | undefined;
|
|
9
|
+
export declare function imageValue(plan: DeploymentPlan): string;
|
|
10
|
+
//# sourceMappingURL=aws-program-support.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aws-program-support.d.ts","sourceRoot":"","sources":["../src/aws-program-support.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,wBAAgB,aAAa,CAAC,GAAG,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,wBAAwB,CAO3F;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,GAC/C,4BAA4B,CAQ9B;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,GAC5C,wBAAwB,CAY1B;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,wBAAwB,EACjC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,MAAM,CAAC,iBAAiB,GAC7B,GAAG,CAAC,GAAG,CAAC,UAAU,GAAG,SAAS,CA4ChC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAQvD"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import * as aws from "@pulumi/aws";
|
|
2
|
+
import * as pulumi from "@pulumi/pulumi";
|
|
3
|
+
import {} from "@relkit/cloud-aws";
|
|
4
|
+
export function jobDefinition(job) {
|
|
5
|
+
return {
|
|
6
|
+
id: job.id,
|
|
7
|
+
retry: retryPolicy(job.retry),
|
|
8
|
+
...(job.timeoutMs === undefined ? {} : { timeoutMs: job.timeoutMs }),
|
|
9
|
+
...(job.concurrency === undefined ? {} : { concurrency: job.concurrency }),
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export function eventTriggerDefinition(trigger) {
|
|
13
|
+
return {
|
|
14
|
+
id: trigger.id,
|
|
15
|
+
targetFunctionId: trigger.targetFunctionId,
|
|
16
|
+
expansion: trigger.expansion,
|
|
17
|
+
...(trigger.retry === undefined ? {} : { retry: retryPolicy(trigger.retry) }),
|
|
18
|
+
...(trigger.concurrency === undefined ? {} : { concurrency: trigger.concurrency }),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export function scheduleDefinition(schedule) {
|
|
22
|
+
const value = record(schedule.schedule);
|
|
23
|
+
const cron = text(value.cron ?? value.expression);
|
|
24
|
+
if (cron === undefined)
|
|
25
|
+
throw new TypeError(`Schedule "${schedule.id}" has no cron expression.`);
|
|
26
|
+
return {
|
|
27
|
+
id: schedule.id,
|
|
28
|
+
jobId: schedule.jobId,
|
|
29
|
+
cron,
|
|
30
|
+
timezone: text(value.timezone) ?? "UTC",
|
|
31
|
+
input: value.input ?? {},
|
|
32
|
+
overlap: value.overlap === "allow" ? "allow" : "skip",
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export function createServicePolicy(plan, service, buckets, jobs, events, caches, root) {
|
|
36
|
+
if (plan.iam.serviceRole.statements.length === 0)
|
|
37
|
+
return undefined;
|
|
38
|
+
const arns = new Map();
|
|
39
|
+
addArns(arns, plan.buckets, buckets.buckets);
|
|
40
|
+
addArns(arns, plan.jobs, jobs.queues.map(({ id, queue }) => ({ id, arn: queue.arn })));
|
|
41
|
+
addArns(arns, plan.caches, caches.caches);
|
|
42
|
+
plan.events.forEach((entry) => arns.set(entry.logicalName, events.eventBusArn));
|
|
43
|
+
addArns(arns, plan.eventTriggers.filter(({ delivery }) => delivery === "durable"), events.triggers.map(({ id, queue }) => ({ id, arn: queue.arn })));
|
|
44
|
+
const values = [];
|
|
45
|
+
const indexes = new Map();
|
|
46
|
+
const statements = plan.iam.serviceRole.statements.map((statement) => ({
|
|
47
|
+
Effect: "Allow",
|
|
48
|
+
Action: statement.actions,
|
|
49
|
+
Resource: statement.resources.map((name) => {
|
|
50
|
+
const arn = arns.get(name);
|
|
51
|
+
if (arn === undefined)
|
|
52
|
+
throw new Error(`AWS IAM resource "${name}" is not in the deployment plan.`);
|
|
53
|
+
const index = indexes.get(name) ?? values.push(arn) - 1;
|
|
54
|
+
indexes.set(name, index);
|
|
55
|
+
return index;
|
|
56
|
+
}),
|
|
57
|
+
}));
|
|
58
|
+
const policy = pulumi.all(values).apply((resolved) => JSON.stringify({
|
|
59
|
+
Version: "2012-10-17",
|
|
60
|
+
Statement: statements.map((statement) => ({
|
|
61
|
+
...statement,
|
|
62
|
+
Resource: statement.Resource.map((value) => resolved[value]),
|
|
63
|
+
})),
|
|
64
|
+
}));
|
|
65
|
+
return new aws.iam.RolePolicy("service-access", { role: service.taskRole.name, policy }, { parent: root, dependsOn: [service, buckets, jobs, events, caches] });
|
|
66
|
+
}
|
|
67
|
+
export function imageValue(plan) {
|
|
68
|
+
const image = plan.application.image;
|
|
69
|
+
if (image.digest !== undefined)
|
|
70
|
+
return `${image.name}@${image.digest}`;
|
|
71
|
+
if (image.tag !== undefined)
|
|
72
|
+
return `${image.name}:${image.tag}`;
|
|
73
|
+
const lastSegment = image.name.slice(image.name.lastIndexOf("/") + 1);
|
|
74
|
+
return lastSegment.includes(":") || image.name.includes("@")
|
|
75
|
+
? image.name
|
|
76
|
+
: `${image.name}:latest`;
|
|
77
|
+
}
|
|
78
|
+
function addArns(target, entries, resources) {
|
|
79
|
+
const byId = new Map(resources.map((resource) => [resource.id, resource.arn]));
|
|
80
|
+
entries.forEach((entry) => {
|
|
81
|
+
const arn = byId.get(entry.id);
|
|
82
|
+
if (arn === undefined)
|
|
83
|
+
throw new Error(`AWS resource "${entry.id}" is not materialized.`);
|
|
84
|
+
target.set(entry.logicalName, arn);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
function retryPolicy(value) {
|
|
88
|
+
const retry = record(value);
|
|
89
|
+
return {
|
|
90
|
+
maxAttempts: integer(retry.maxAttempts, 2),
|
|
91
|
+
initialDelayMs: integer(retry.initialDelayMs, 100),
|
|
92
|
+
maxDelayMs: integer(retry.maxDelayMs, 1_000),
|
|
93
|
+
multiplier: number(retry.multiplier, 2),
|
|
94
|
+
jitter: "none",
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function record(value) {
|
|
98
|
+
return value !== null && typeof value === "object" && !Array.isArray(value)
|
|
99
|
+
? value
|
|
100
|
+
: {};
|
|
101
|
+
}
|
|
102
|
+
function text(value) {
|
|
103
|
+
return typeof value === "string" && value.trim() !== "" ? value : undefined;
|
|
104
|
+
}
|
|
105
|
+
function integer(value, fallback) {
|
|
106
|
+
return typeof value === "number" && Number.isSafeInteger(value) && value > 0 ? value : fallback;
|
|
107
|
+
}
|
|
108
|
+
function number(value, fallback) {
|
|
109
|
+
return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : fallback;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=aws-program-support.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aws-program-support.js","sourceRoot":"","sources":["../src/aws-program-support.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as aws from "@pulumi/aws";
|
|
2
|
+
import * as pulumi from "@pulumi/pulumi";
|
|
3
|
+
import { RelkitApplicationService, RelkitBuckets, RelkitCaches, RelkitContainerRegistry, RelkitEventBus, RelkitJobQueues, RelkitNetwork, RelkitObservability } from "@relkit/cloud-aws";
|
|
4
|
+
import type { DeploymentPlan } from "@relkit/deploy";
|
|
5
|
+
export interface AwsProgramOptions {
|
|
6
|
+
readonly stackName?: string;
|
|
7
|
+
readonly region?: pulumi.Input<string>;
|
|
8
|
+
readonly tags?: pulumi.Input<Record<string, pulumi.Input<string>>>;
|
|
9
|
+
readonly forceDelete?: pulumi.Input<boolean>;
|
|
10
|
+
readonly forceDestroy?: pulumi.Input<boolean>;
|
|
11
|
+
readonly serviceEnvironment?: (resources: AwsProgramEnvironmentResources) => Record<string, pulumi.Input<string>>;
|
|
12
|
+
}
|
|
13
|
+
export interface AwsProgramEnvironmentResources {
|
|
14
|
+
readonly jobs: RelkitJobQueues;
|
|
15
|
+
readonly events: RelkitEventBus;
|
|
16
|
+
readonly buckets: RelkitBuckets;
|
|
17
|
+
readonly caches: RelkitCaches;
|
|
18
|
+
}
|
|
19
|
+
export interface AwsProgramResources {
|
|
20
|
+
readonly root: pulumi.ComponentResource;
|
|
21
|
+
readonly network: RelkitNetwork;
|
|
22
|
+
readonly registry: RelkitContainerRegistry;
|
|
23
|
+
readonly jobs: RelkitJobQueues;
|
|
24
|
+
readonly events: RelkitEventBus;
|
|
25
|
+
readonly buckets: RelkitBuckets;
|
|
26
|
+
readonly caches: RelkitCaches;
|
|
27
|
+
readonly observability?: RelkitObservability;
|
|
28
|
+
readonly service: RelkitApplicationService;
|
|
29
|
+
readonly policy?: aws.iam.RolePolicy;
|
|
30
|
+
}
|
|
31
|
+
/** Maps the provider-neutral plan to the complete AWS component topology. */
|
|
32
|
+
export declare function createAwsPulumiResources(plan: DeploymentPlan, options?: AwsProgramOptions): AwsProgramResources;
|
|
33
|
+
//# sourceMappingURL=aws-program.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aws-program.d.ts","sourceRoot":"","sources":["../src/aws-program.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,YAAY,EACZ,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,aAAa,EACb,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAUrD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAC5B,SAAS,EAAE,8BAA8B,KACtC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,iBAAiB,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,mBAAmB,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC;CACtC;AAED,6EAA6E;AAC7E,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,cAAc,EACpB,OAAO,GAAE,iBAAsB,GAC9B,mBAAmB,CAiHrB"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import * as aws from "@pulumi/aws";
|
|
2
|
+
import * as pulumi from "@pulumi/pulumi";
|
|
3
|
+
import { RelkitApplicationService, RelkitBuckets, RelkitCaches, RelkitContainerRegistry, RelkitEventBus, RelkitJobQueues, RelkitNetwork, RelkitObservability, } from "@relkit/cloud-aws";
|
|
4
|
+
import { createServicePolicy, eventTriggerDefinition, imageValue, jobDefinition, scheduleDefinition, } from "./aws-program-support.js";
|
|
5
|
+
import { managedEnvironment, withoutManagedCredentials } from "./aws-program-environment.js";
|
|
6
|
+
/** Maps the provider-neutral plan to the complete AWS component topology. */
|
|
7
|
+
export function createAwsPulumiResources(plan, options = {}) {
|
|
8
|
+
const durableEventTriggers = plan.eventTriggers.filter(({ delivery }) => delivery === "durable");
|
|
9
|
+
const root = new pulumi.ComponentResource("relkit:cloud-aws:application", plan.application.id);
|
|
10
|
+
const common = {
|
|
11
|
+
appId: plan.application.id,
|
|
12
|
+
stackName: options.stackName ?? pulumi.getStack(),
|
|
13
|
+
graphHash: plan.graphHash,
|
|
14
|
+
...(options.region === undefined ? {} : { region: options.region }),
|
|
15
|
+
...(options.tags === undefined ? {} : { tags: options.tags }),
|
|
16
|
+
};
|
|
17
|
+
const child = { parent: root };
|
|
18
|
+
const network = new RelkitNetwork("network", { ...common, natGatewayStrategy: "Single" }, child);
|
|
19
|
+
const registry = new RelkitContainerRegistry("registry", {
|
|
20
|
+
...common,
|
|
21
|
+
...(options.forceDelete === undefined ? {} : { forceDelete: options.forceDelete }),
|
|
22
|
+
}, child);
|
|
23
|
+
const jobs = new RelkitJobQueues("jobs", {
|
|
24
|
+
...common,
|
|
25
|
+
jobs: plan.jobs.map(jobDefinition),
|
|
26
|
+
schedules: plan.schedules.map(scheduleDefinition),
|
|
27
|
+
}, child);
|
|
28
|
+
const events = new RelkitEventBus("events", {
|
|
29
|
+
...common,
|
|
30
|
+
events: plan.events.map(({ id, version }) => ({ id, version })),
|
|
31
|
+
eventTriggers: durableEventTriggers.map(eventTriggerDefinition),
|
|
32
|
+
eventSource: "relkit.application",
|
|
33
|
+
}, child);
|
|
34
|
+
const buckets = new RelkitBuckets("buckets", {
|
|
35
|
+
...common,
|
|
36
|
+
buckets: plan.buckets.map(({ id, visibility }) => ({
|
|
37
|
+
id,
|
|
38
|
+
visibility,
|
|
39
|
+
...(options.forceDestroy === undefined ? {} : { forceDestroy: options.forceDestroy }),
|
|
40
|
+
})),
|
|
41
|
+
}, child);
|
|
42
|
+
const caches = new RelkitCaches("caches", {
|
|
43
|
+
...common,
|
|
44
|
+
network,
|
|
45
|
+
caches: plan.caches.map(({ id }) => ({ id })),
|
|
46
|
+
}, child);
|
|
47
|
+
const observability = plan.observability === undefined
|
|
48
|
+
? undefined
|
|
49
|
+
: new RelkitObservability("observability", { ...common, logs: plan.observability.logs, traces: plan.observability.traces }, child);
|
|
50
|
+
const environment = options.serviceEnvironment?.({ jobs, events, buckets, caches });
|
|
51
|
+
const region = options.region ?? aws.config.region ?? "us-east-1";
|
|
52
|
+
const generatedEnvironment = managedEnvironment(plan, { jobs, events, buckets, caches }, region);
|
|
53
|
+
const service = new RelkitApplicationService("service", {
|
|
54
|
+
...common,
|
|
55
|
+
network,
|
|
56
|
+
registry,
|
|
57
|
+
image: imageValue(plan),
|
|
58
|
+
containerPort: plan.application.image.health.port,
|
|
59
|
+
livenessPath: plan.application.image.health.livenessPath,
|
|
60
|
+
readinessPath: plan.application.image.health.readinessPath,
|
|
61
|
+
environment: {
|
|
62
|
+
RELKIT_APPLICATION_ID: plan.application.id,
|
|
63
|
+
...(environment === undefined ? {} : withoutManagedCredentials(plan, environment)),
|
|
64
|
+
...generatedEnvironment,
|
|
65
|
+
},
|
|
66
|
+
}, {
|
|
67
|
+
parent: root,
|
|
68
|
+
dependsOn: [
|
|
69
|
+
network,
|
|
70
|
+
registry,
|
|
71
|
+
jobs,
|
|
72
|
+
events,
|
|
73
|
+
buckets,
|
|
74
|
+
caches,
|
|
75
|
+
...(observability === undefined ? [] : [observability]),
|
|
76
|
+
],
|
|
77
|
+
});
|
|
78
|
+
const policy = createServicePolicy(plan, service, buckets, jobs, events, caches, root);
|
|
79
|
+
return {
|
|
80
|
+
root,
|
|
81
|
+
network,
|
|
82
|
+
registry,
|
|
83
|
+
jobs,
|
|
84
|
+
events,
|
|
85
|
+
buckets,
|
|
86
|
+
caches,
|
|
87
|
+
...(observability === undefined ? {} : { observability }),
|
|
88
|
+
service,
|
|
89
|
+
...(policy === undefined ? {} : { policy }),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=aws-program.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aws-program.js","sourceRoot":"","sources":["../src/aws-program.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { EngineEvent, OutputMap, PreviewResult, UpResult } from "@pulumi/pulumi/automation";
|
|
2
|
+
import type { PulumiEventLog, PulumiEventOptions, PulumiOutputReport, PulumiPreviewReport, PulumiReport, PulumiUpdateReport } from "./events-types.js";
|
|
3
|
+
export declare function formatPulumiSummary(summary: PulumiPreviewReport["summary"], operation?: string): string;
|
|
4
|
+
export declare function createPreviewReport(result: Pick<PreviewResult, "changeSummary">, events: readonly EngineEvent[], toLog: (event: EngineEvent) => PulumiEventLog | undefined): PulumiPreviewReport;
|
|
5
|
+
export declare function createUpdateReport(result: Pick<UpResult, "summary" | "outputs">, events: readonly EngineEvent[], toLog: (event: EngineEvent) => PulumiEventLog | undefined, options: PulumiEventOptions): PulumiUpdateReport;
|
|
6
|
+
export declare function createOutputReport(outputs: OutputMap, options: PulumiEventOptions): PulumiOutputReport;
|
|
7
|
+
export declare function serializePulumiReport(report: PulumiReport, options?: PulumiEventOptions): string;
|
|
8
|
+
//# sourceMappingURL=events-report.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events-report.d.ts","sourceRoot":"","sources":["../src/events-report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAEjG,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAW3B,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,EACvC,SAAS,SAAY,GACpB,MAAM,CAIR;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,eAAe,CAAC,EAC5C,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,KAAK,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,cAAc,GAAG,SAAS,GACxD,mBAAmB,CAOrB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,SAAS,CAAC,EAC7C,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,KAAK,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,cAAc,GAAG,SAAS,EACzD,OAAO,EAAE,kBAAkB,GAC1B,kBAAkB,CAcpB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,kBAAkB,GAC1B,kBAAkB,CAMpB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAeR"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { canonicalJson } from "@relkit/contracts";
|
|
2
|
+
import { PULUMI_REPORT_VERSION } from "./events-types.js";
|
|
3
|
+
import { changes, eventLogs, redactPulumiOutputs, safeFields, safeText, summarizePulumiEvents, } from "./events-support.js";
|
|
4
|
+
export function formatPulumiSummary(summary, operation = "preview") {
|
|
5
|
+
const c = summary.resourceChanges;
|
|
6
|
+
const replace = (c.replace ?? 0) + (c["create-replacement"] ?? 0) + (c["delete-replaced"] ?? 0);
|
|
7
|
+
return `Pulumi ${operation}: create=${c.create ?? 0} update=${c.update ?? 0} delete=${c.delete ?? 0} replace=${replace} same=${c.same ?? 0} diagnostics=${summary.diagnostics.error}e/${summary.diagnostics.warning}w/${summary.diagnostics.info}i`;
|
|
8
|
+
}
|
|
9
|
+
export function createPreviewReport(result, events, toLog) {
|
|
10
|
+
return Object.freeze({
|
|
11
|
+
version: PULUMI_REPORT_VERSION,
|
|
12
|
+
kind: "preview",
|
|
13
|
+
summary: { ...summarizePulumiEvents(events), resourceChanges: changes(result.changeSummary) },
|
|
14
|
+
logs: eventLogs(events, toLog),
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
export function createUpdateReport(result, events, toLog, options) {
|
|
18
|
+
const eventSummary = summarizePulumiEvents(events);
|
|
19
|
+
return Object.freeze({
|
|
20
|
+
version: PULUMI_REPORT_VERSION,
|
|
21
|
+
kind: "update",
|
|
22
|
+
summary: {
|
|
23
|
+
...eventSummary,
|
|
24
|
+
resourceChanges: changes(result.summary.resourceChanges),
|
|
25
|
+
durationSeconds: eventSummary.durationSeconds ?? 0,
|
|
26
|
+
result: result.summary.result,
|
|
27
|
+
},
|
|
28
|
+
outputs: redactPulumiOutputs(result.outputs, options),
|
|
29
|
+
logs: eventLogs(events, toLog),
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
export function createOutputReport(outputs, options) {
|
|
33
|
+
return Object.freeze({
|
|
34
|
+
version: PULUMI_REPORT_VERSION,
|
|
35
|
+
kind: "outputs",
|
|
36
|
+
outputs: redactPulumiOutputs(outputs, options),
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
export function serializePulumiReport(report, options = {}) {
|
|
40
|
+
const summary = report.kind === "outputs" ? undefined : serializeSummary(report.summary);
|
|
41
|
+
const logs = report.kind === "preview" || report.kind === "update"
|
|
42
|
+
? report.logs.map((log) => serializeLog(log, options))
|
|
43
|
+
: undefined;
|
|
44
|
+
const outputs = report.kind === "preview" ? undefined : redactPulumiOutputs(report.outputs, options);
|
|
45
|
+
return canonicalJson({
|
|
46
|
+
version: report.version,
|
|
47
|
+
kind: report.kind,
|
|
48
|
+
...(summary === undefined ? {} : { summary }),
|
|
49
|
+
...(outputs === undefined ? {} : { outputs }),
|
|
50
|
+
...(logs === undefined ? {} : { logs }),
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
function serializeSummary(summary) {
|
|
54
|
+
return {
|
|
55
|
+
resourceChanges: changes(summary.resourceChanges),
|
|
56
|
+
diagnostics: summary.diagnostics,
|
|
57
|
+
maybeCorrupt: summary.maybeCorrupt,
|
|
58
|
+
...(summary.durationSeconds === undefined ? {} : { durationSeconds: summary.durationSeconds }),
|
|
59
|
+
...(summary.result === undefined ? {} : { result: summary.result }),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function serializeLog(log, options) {
|
|
63
|
+
return {
|
|
64
|
+
sequence: log.sequence,
|
|
65
|
+
timestamp: log.timestamp,
|
|
66
|
+
kind: safeText(log.kind, options),
|
|
67
|
+
level: log.level,
|
|
68
|
+
message: safeText(log.message, options),
|
|
69
|
+
fields: safeFields(log.fields, options),
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=events-report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events-report.js","sourceRoot":"","sources":["../src/events-report.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { EngineEvent, OpMap, OpType, OutputMap } from "@pulumi/pulumi/automation";
|
|
2
|
+
import { type JsonValue } from "@relkit/contracts";
|
|
3
|
+
import type { PulumiEventLog, PulumiEventOptions, PulumiEventSummary, PulumiOutputs } from "./events-types.js";
|
|
4
|
+
export declare const OP_TYPES: readonly OpType[];
|
|
5
|
+
export declare function changes(value: OpMap | undefined): OpMap;
|
|
6
|
+
export declare function safeValue(value: unknown, options: PulumiEventOptions): JsonValue;
|
|
7
|
+
export declare function safeFields(value: object, options: PulumiEventOptions): Readonly<Record<string, JsonValue>>;
|
|
8
|
+
export declare function safeText(value: unknown, options: PulumiEventOptions): string;
|
|
9
|
+
export declare function resourceLog(base: (kind: string, level: "info" | "error", message: string, fields?: object) => PulumiEventLog, kind: string, message: string, event: {
|
|
10
|
+
readonly metadata: {
|
|
11
|
+
readonly op: OpType;
|
|
12
|
+
readonly urn: string;
|
|
13
|
+
readonly type: string;
|
|
14
|
+
readonly logical?: boolean;
|
|
15
|
+
};
|
|
16
|
+
}, extra?: object): PulumiEventLog;
|
|
17
|
+
export declare function eventLogs(events: readonly EngineEvent[], toLog: (event: EngineEvent) => PulumiEventLog | undefined): readonly PulumiEventLog[];
|
|
18
|
+
export declare function summarizePulumiEvents(events: readonly EngineEvent[]): PulumiEventSummary;
|
|
19
|
+
export declare function redactPulumiOutputs(outputs: OutputMap | PulumiOutputs, options: PulumiEventOptions): PulumiOutputs;
|
|
20
|
+
export declare function finiteNumber(value: unknown): number;
|
|
21
|
+
export declare function nonNegativeInteger(value: unknown): number;
|
|
22
|
+
//# sourceMappingURL=events-support.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events-support.d.ts","sourceRoot":"","sources":["../src/events-support.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEvF,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAElB,aAAa,EACd,MAAM,mBAAmB,CAAC;AAE3B,eAAO,MAAM,QAAQ,EAAE,SAAS,MAAM,EAgBrC,CAAC;AAEF,wBAAgB,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,CAOvD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,GAAG,SAAS,CAEhF;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,kBAAkB,GAC1B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAKrC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAG5E;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,cAAc,EACjG,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,KAAK,EAAE;IACL,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;KAC5B,CAAC;CACH,EACD,KAAK,GAAE,MAAW,GACjB,cAAc,CAQhB;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,KAAK,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,cAAc,GAAG,SAAS,GACxD,SAAS,cAAc,EAAE,CAY3B;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,kBAAkB,CA4BxF;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,GAAG,aAAa,EAClC,OAAO,EAAE,kBAAkB,GAC1B,aAAa,CAUf;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEnD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEzD"}
|