@intentius/chant-lexicon-aws 0.124.51 → 0.124.52
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/apply.d.ts +33 -2
- package/dist/components/apply.d.ts.map +1 -1
- package/dist/components/apply.js +241 -16
- package/dist/components/cloud-executor.d.ts +13 -0
- package/dist/components/cloud-executor.d.ts.map +1 -1
- package/dist/components/cloud-executor.js +9 -0
- package/dist/integrity.json +2 -2
- package/dist/manifest.json +1 -1
- package/package.json +2 -2
- package/src/components/apply.ts +276 -16
- package/src/components/cfn-plan-floci.e2e.test.ts +53 -0
- package/src/components/cfn-plan.test.ts +328 -9
- package/src/components/cloud-executor.ts +17 -1
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
*/
|
|
21
21
|
import type { Capability, PlannedOutputs } from "@intentius/chant/components/capability";
|
|
22
22
|
import type { ChangeSetEntry } from "@intentius/chant/change-set";
|
|
23
|
+
import { type PlanShape, type PlanShapeArtifact } from "@intentius/chant/components/covered-round";
|
|
23
24
|
import { type CfnChange, type CfnChangeSet, type CloudExecutor } from "./cloud-executor.js";
|
|
24
25
|
/**
|
|
25
26
|
* True when CloudFormation reports the change set has nothing to apply. AWS
|
|
@@ -43,7 +44,7 @@ export declare function cfnChangeReplaces(change: CfnChange): boolean;
|
|
|
43
44
|
* replace, `Remove` a delete, `Import` an import that changes nothing else,
|
|
44
45
|
* and `Dynamic` an update CloudFormation could not describe further.
|
|
45
46
|
*/
|
|
46
|
-
export declare function cfnChangeEntry(member: string, change: CfnChange): ChangeSetEntry;
|
|
47
|
+
export declare function cfnChangeEntry(member: string, change: CfnChange, unknown?: readonly string[]): ChangeSetEntry;
|
|
47
48
|
/**
|
|
48
49
|
* What a `cfn-deploy` plan hands `run` through `DeployContext.plans[stack]`
|
|
49
50
|
* (#3997): the stack and a digest over the changes the plan's change set
|
|
@@ -76,6 +77,29 @@ export declare class CfnPlanMovedError extends Error {
|
|
|
76
77
|
readonly planMoved = true;
|
|
77
78
|
constructor(stack: string, planned: string, now: string);
|
|
78
79
|
}
|
|
80
|
+
/** What a previewed member hands `run`: the shape its change set had against stand-in values. */
|
|
81
|
+
export interface CfnShapeArtifact extends PlanShapeArtifact {
|
|
82
|
+
kind: "cfn-deploy-shape";
|
|
83
|
+
}
|
|
84
|
+
/** The marker every stand-in carries, so a reader of a change set can tell it from a real value. */
|
|
85
|
+
export declare const CFN_UNKNOWN_MARK = "known-after-apply";
|
|
86
|
+
/**
|
|
87
|
+
* A stand-in for a parameter whose value is not known yet: valid for the
|
|
88
|
+
* parameter's type and recognisable. An EC2 id type gets the id's prefix
|
|
89
|
+
* (`subnet-00000000known-after-apply`), a number gets 0, anything else gets
|
|
90
|
+
* `known-after-apply`. Real CloudFormation checks the AWS-specific types
|
|
91
|
+
* against the account and refuses an id that does not exist; the preview
|
|
92
|
+
* then falls back to a hole. Floci does not check.
|
|
93
|
+
*/
|
|
94
|
+
export declare function cfnPlaceholder(type: string | undefined): string;
|
|
95
|
+
/**
|
|
96
|
+
* A change set's shape: each change's resource, action, replacement and
|
|
97
|
+
* properties, with the ones the `unknown` parameters drive marked. `unknown`
|
|
98
|
+
* is empty for the change set made against real values. `refs` are the
|
|
99
|
+
* inputs the shape names as unknown (`<component>.<output>`), the parameters
|
|
100
|
+
* themselves when nothing says better.
|
|
101
|
+
*/
|
|
102
|
+
export declare function cfnPlanShape(stack: string, changeSet: CfnChangeSet, unknown: string[], templatePath?: string, refs?: string[]): PlanShape;
|
|
79
103
|
/**
|
|
80
104
|
* The outputs a stack will have once `changes` apply (#3999), from its
|
|
81
105
|
* template and the outputs it has now. An output is known, at the value it
|
|
@@ -84,9 +108,16 @@ export declare class CfnPlanMovedError extends Error {
|
|
|
84
108
|
* `Dynamic`, no replacement, no change in a nested stack under it). One
|
|
85
109
|
* that reads a parameter, an import or a condition, one the stack does not
|
|
86
110
|
* have yet, and every output of a template this cannot read, is unknown.
|
|
111
|
+
*
|
|
112
|
+
* Two kinds of output need no standing value. An output whose `Value` is a
|
|
113
|
+
* plain string is known at that string, changed or new: the template says it.
|
|
114
|
+
* An output that is a `Ref` to a parameter the plan was given a value for is
|
|
115
|
+
* known at that value (`given`, the inputs of this plan). Both are what
|
|
116
|
+
* the stack's outputs will be, whatever they are now.
|
|
117
|
+
*
|
|
87
118
|
* `undefined` when there is no template or no standing stack to read from.
|
|
88
119
|
*/
|
|
89
|
-
export declare function cfnPlannedOutputs(template: unknown, changes: readonly CfnChange[], standing: Record<string, string> | undefined): PlannedOutputs | undefined;
|
|
120
|
+
export declare function cfnPlannedOutputs(template: unknown, changes: readonly CfnChange[], standing: Record<string, string> | undefined, given?: Record<string, string>): PlannedOutputs | undefined;
|
|
90
121
|
/**
|
|
91
122
|
* How `cfn-deploy` handles a changeset that requires resource replacement.
|
|
92
123
|
* - `block`: refuse to apply; surface the changeset for human review.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/components/apply.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAiC,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxH,OAAO,KAAK,EAAE,cAAc,EAAgC,MAAM,6BAA6B,CAAC;AAEhG,OAAO,EAAwB,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAQ/G;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAKhE;AAID;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAE5D;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/components/apply.ts"],"names":[],"mappings":"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"}
|
package/dist/components/apply.js
CHANGED
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
import { createHash } from "node:crypto";
|
|
22
22
|
import { readFileSync } from "node:fs";
|
|
23
23
|
import { computePlanDigest } from "@intentius/chant/lifecycle/plan-digest";
|
|
24
|
+
import { normalizePlanShape, PlanShapeMovedError, planShapeDifferences, planShapeDigest, } from "@intentius/chant/components/covered-round";
|
|
24
25
|
import { defaultCloudExecutor } from "./cloud-executor.js";
|
|
25
26
|
/** CloudFormation's wording when a change set has nothing to apply — the stack
|
|
26
27
|
* is already current. AWS phrases it "The submitted information didn't contain
|
|
@@ -58,8 +59,11 @@ export function cfnChangeReplaces(change) {
|
|
|
58
59
|
* replace, `Remove` a delete, `Import` an import that changes nothing else,
|
|
59
60
|
* and `Dynamic` an update CloudFormation could not describe further.
|
|
60
61
|
*/
|
|
61
|
-
export function cfnChangeEntry(member, change) {
|
|
62
|
-
|
|
62
|
+
export function cfnChangeEntry(member, change, unknown = []) {
|
|
63
|
+
// A property an unknown input drives is known after apply (#4419); one the
|
|
64
|
+
// change set did not list (a create names no properties) is added for it.
|
|
65
|
+
const paths = [...new Set([...(change.details ?? []), ...unknown])].sort();
|
|
66
|
+
const attributes = paths.map((path) => (unknown.includes(path) ? { path, unknown: true } : { path }));
|
|
63
67
|
// A change inside a nested stack (#3997) sits under the nested stacks'
|
|
64
68
|
// logical ids, the way a terraform address sits under its module.
|
|
65
69
|
const module = change.nestedStack?.length ? change.nestedStack.join("/") : undefined;
|
|
@@ -143,7 +147,9 @@ function templateDigest(path) {
|
|
|
143
147
|
* not known yet. The proposed changes are not in it; they are the member's
|
|
144
148
|
* entries, which the change-set document's digest binds (#4084).
|
|
145
149
|
*/
|
|
146
|
-
function cfnPlanDigest(ctx, stack, input, parameters, unresolved
|
|
150
|
+
function cfnPlanDigest(ctx, stack, input, parameters, unresolved,
|
|
151
|
+
/** The digest of the preview's shape (#4423), so an approval binds what the reviewer saw of a member planned before its inputs were known. */
|
|
152
|
+
preview) {
|
|
147
153
|
return computePlanDigest("cfn-deploy-plan", {
|
|
148
154
|
env: ctx.env,
|
|
149
155
|
stack,
|
|
@@ -151,6 +157,7 @@ function cfnPlanDigest(ctx, stack, input, parameters, unresolved) {
|
|
|
151
157
|
templateDigest: templateDigest(input.template),
|
|
152
158
|
parameters,
|
|
153
159
|
unresolved,
|
|
160
|
+
...(preview ? { preview } : {}),
|
|
154
161
|
});
|
|
155
162
|
}
|
|
156
163
|
/**
|
|
@@ -194,7 +201,7 @@ async function planCfnDeploy(executor, ctx, input) {
|
|
|
194
201
|
parameters[key] = typeof value === "string" ? value : JSON.stringify(value);
|
|
195
202
|
}
|
|
196
203
|
const unresolved = [...(ctx.unresolvedInputs ?? [])].sort();
|
|
197
|
-
|
|
204
|
+
let planDigest = cfnPlanDigest(ctx, stack, input, parameters, unresolved);
|
|
198
205
|
const member = (holes) => ({
|
|
199
206
|
member: stack,
|
|
200
207
|
lexicon: "aws",
|
|
@@ -204,14 +211,26 @@ async function planCfnDeploy(executor, ctx, input) {
|
|
|
204
211
|
holes,
|
|
205
212
|
});
|
|
206
213
|
if (unresolved.length > 0 || missing.length > 0) {
|
|
207
|
-
const
|
|
208
|
-
? `inputs from ${unresolved.join(", ")}; re-checked on apply`
|
|
209
|
-
: `inputs ${missing.sort().join(", ")} are known only at apply; re-checked on apply`;
|
|
210
|
-
return {
|
|
214
|
+
const hole = (why) => ({
|
|
211
215
|
member: stack,
|
|
212
216
|
planDigest,
|
|
213
|
-
changeSet: { member: member([{ address: stack, type: "AWS::CloudFormation::Stack", reason }]), entries: [] },
|
|
214
|
-
};
|
|
217
|
+
changeSet: { member: member([{ address: stack, type: "AWS::CloudFormation::Stack", reason: why }]), entries: [] },
|
|
218
|
+
});
|
|
219
|
+
const fallback = unresolved.length > 0
|
|
220
|
+
? `inputs from ${unresolved.join(", ")}; re-checked on apply`
|
|
221
|
+
: `inputs ${[...missing].sort().join(", ")} are known only at apply; re-checked on apply`;
|
|
222
|
+
// Which parameters are unknown: the inputs that hold nothing yet. When the
|
|
223
|
+
// upstream is unresolved but no input says which, nothing can be previewed.
|
|
224
|
+
if (missing.length === 0)
|
|
225
|
+
return hole(fallback);
|
|
226
|
+
const preview = await previewCfnDeploy(executor, stack, input, [...missing].sort(), unresolved.length > 0 ? unresolved : undefined);
|
|
227
|
+
if (typeof preview === "string")
|
|
228
|
+
return hole(`${fallback}; no preview: ${preview}`);
|
|
229
|
+
const { entries, shape, outputs } = preview;
|
|
230
|
+
const artifact = { kind: "cfn-deploy-shape", member: stack, shape, digest: planShapeDigest(shape) };
|
|
231
|
+
// The preview's shape enters the digest (#4423); `member` reads it when called below.
|
|
232
|
+
planDigest = cfnPlanDigest(ctx, stack, input, parameters, unresolved, artifact.digest);
|
|
233
|
+
return { member: stack, planDigest, artifact, shape, changeSet: { member: member([]), entries }, ...(outputs ? { outputs } : {}) };
|
|
215
234
|
}
|
|
216
235
|
const changeSet = await executor.cloudformation.createChangeSet({
|
|
217
236
|
stackName: stack,
|
|
@@ -234,8 +253,169 @@ async function planCfnDeploy(executor, ctx, input) {
|
|
|
234
253
|
throw new CfnReplacementBlockedError(stack, blocked);
|
|
235
254
|
const entries = changeSet.changes.map((c) => cfnChangeEntry(stack, c));
|
|
236
255
|
const artifact = { kind: "cfn-deploy-plan", stack, changesDigest: cfnChangesDigest(stack, changeSet) };
|
|
237
|
-
const outputs = changeSet.stackCreated ? undefined : await plannedStackOutputs(executor, stack, input.template, changeSet.changes);
|
|
238
|
-
|
|
256
|
+
const outputs = changeSet.stackCreated ? undefined : await plannedStackOutputs(executor, stack, input.template, changeSet.changes, knownParameters(parameters));
|
|
257
|
+
// The real change set's shape, with the replacement CloudFormation reports,
|
|
258
|
+
// for a round that checks it against a preview (#4419).
|
|
259
|
+
const shape = cfnPlanShape(stack, changeSet, []);
|
|
260
|
+
return { member: stack, planDigest, artifact, shape, changeSet: { member: member([]), entries }, ...(outputs ? { outputs } : {}) };
|
|
261
|
+
}
|
|
262
|
+
finally {
|
|
263
|
+
await cleanUpPlanChangeSet(executor, changeSet);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
function isCfnShapeArtifact(value) {
|
|
267
|
+
const v = value;
|
|
268
|
+
return v?.kind === "cfn-deploy-shape" && typeof v.digest === "string" && typeof v.shape === "object" && v.shape !== null;
|
|
269
|
+
}
|
|
270
|
+
/** The marker every stand-in carries, so a reader of a change set can tell it from a real value. */
|
|
271
|
+
export const CFN_UNKNOWN_MARK = "known-after-apply";
|
|
272
|
+
const ID_PREFIX = {
|
|
273
|
+
"AWS::EC2::Subnet::Id": "subnet",
|
|
274
|
+
"AWS::EC2::VPC::Id": "vpc",
|
|
275
|
+
"AWS::EC2::SecurityGroup::Id": "sg",
|
|
276
|
+
"AWS::EC2::Instance::Id": "i",
|
|
277
|
+
"AWS::EC2::Image::Id": "ami",
|
|
278
|
+
"AWS::EC2::Volume::Id": "vol",
|
|
279
|
+
};
|
|
280
|
+
/**
|
|
281
|
+
* A stand-in for a parameter whose value is not known yet: valid for the
|
|
282
|
+
* parameter's type and recognisable. An EC2 id type gets the id's prefix
|
|
283
|
+
* (`subnet-00000000known-after-apply`), a number gets 0, anything else gets
|
|
284
|
+
* `known-after-apply`. Real CloudFormation checks the AWS-specific types
|
|
285
|
+
* against the account and refuses an id that does not exist; the preview
|
|
286
|
+
* then falls back to a hole. Floci does not check.
|
|
287
|
+
*/
|
|
288
|
+
export function cfnPlaceholder(type) {
|
|
289
|
+
if (type && ID_PREFIX[type])
|
|
290
|
+
return `${ID_PREFIX[type]}-00000000${CFN_UNKNOWN_MARK}`;
|
|
291
|
+
if (type === "Number")
|
|
292
|
+
return "0";
|
|
293
|
+
if (type?.startsWith("AWS::SSM::Parameter::Value<"))
|
|
294
|
+
return `/${CFN_UNKNOWN_MARK}`;
|
|
295
|
+
return CFN_UNKNOWN_MARK;
|
|
296
|
+
}
|
|
297
|
+
function readsParameter(value, key) {
|
|
298
|
+
if (typeof value === "string")
|
|
299
|
+
return false;
|
|
300
|
+
if (Array.isArray(value))
|
|
301
|
+
return value.some((v) => readsParameter(v, key));
|
|
302
|
+
if (value && typeof value === "object") {
|
|
303
|
+
const obj = value;
|
|
304
|
+
if (obj.Ref === key)
|
|
305
|
+
return true;
|
|
306
|
+
const sub = obj["Fn::Sub"];
|
|
307
|
+
const text = typeof sub === "string" ? sub : Array.isArray(sub) && typeof sub[0] === "string" ? sub[0] : undefined;
|
|
308
|
+
if (text !== undefined && (text.includes("${" + key + "}") || text.includes("${" + key + ".")))
|
|
309
|
+
return true;
|
|
310
|
+
return Object.values(obj).some((v) => readsParameter(v, key));
|
|
311
|
+
}
|
|
312
|
+
return false;
|
|
313
|
+
}
|
|
314
|
+
/** The parameter types and the properties that read `keys`, from the template. A template that cannot be read gives no facts. */
|
|
315
|
+
function templateFacts(path, keys) {
|
|
316
|
+
const facts = { parameterTypes: {}, driven: new Map() };
|
|
317
|
+
try {
|
|
318
|
+
const t = JSON.parse(readFileSync(path, "utf8"));
|
|
319
|
+
for (const k of keys)
|
|
320
|
+
if (t.Parameters?.[k]?.Type)
|
|
321
|
+
facts.parameterTypes[k] = t.Parameters[k].Type;
|
|
322
|
+
for (const [id, r] of Object.entries(t.Resources ?? {})) {
|
|
323
|
+
for (const [prop, value] of Object.entries(r.Properties ?? {})) {
|
|
324
|
+
if (keys.some((k) => readsParameter(value, k)))
|
|
325
|
+
(facts.driven.get(id) ?? facts.driven.set(id, new Set()).get(id)).add(prop);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
catch {
|
|
330
|
+
/* unreadable or not JSON: the change set reports why, and no property is attributed */
|
|
331
|
+
}
|
|
332
|
+
return facts;
|
|
333
|
+
}
|
|
334
|
+
/** The properties of one change that the unknown parameters drive. */
|
|
335
|
+
function drivenProperties(change, keys, facts) {
|
|
336
|
+
const out = new Set();
|
|
337
|
+
for (const d of change.drivers ?? []) {
|
|
338
|
+
if (d.changeSource === "ParameterReference" && d.causingEntity && keys.some((k) => d.causingEntity === k || d.causingEntity.startsWith(`${k}.`))) {
|
|
339
|
+
out.add(d.property);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
const scanned = facts.driven.get(change.logicalResourceId);
|
|
343
|
+
if (scanned && change.action !== "Remove") {
|
|
344
|
+
const listed = change.details ?? [];
|
|
345
|
+
for (const p of scanned)
|
|
346
|
+
if (change.action === "Add" || listed.length === 0 || listed.includes(p))
|
|
347
|
+
out.add(p);
|
|
348
|
+
}
|
|
349
|
+
return [...out].sort();
|
|
350
|
+
}
|
|
351
|
+
function shapeReplacement(change) {
|
|
352
|
+
if (change.replacementMode === "True" || change.replacement)
|
|
353
|
+
return "true";
|
|
354
|
+
return change.replacementMode === "Conditional" ? "conditional" : "false";
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* A change set's shape: each change's resource, action, replacement and
|
|
358
|
+
* properties, with the ones the `unknown` parameters drive marked. `unknown`
|
|
359
|
+
* is empty for the change set made against real values. `refs` are the
|
|
360
|
+
* inputs the shape names as unknown (`<component>.<output>`), the parameters
|
|
361
|
+
* themselves when nothing says better.
|
|
362
|
+
*/
|
|
363
|
+
export function cfnPlanShape(stack, changeSet, unknown, templatePath, refs = unknown) {
|
|
364
|
+
const facts = unknown.length > 0 && templatePath ? templateFacts(templatePath, unknown) : { parameterTypes: {}, driven: new Map() };
|
|
365
|
+
const entries = isNoopChangeSet(changeSet)
|
|
366
|
+
? []
|
|
367
|
+
: changeSet.changes.map((c) => {
|
|
368
|
+
const e = cfnChangeEntry(stack, c);
|
|
369
|
+
return {
|
|
370
|
+
logicalId: e.address,
|
|
371
|
+
action: e.action,
|
|
372
|
+
replacement: shapeReplacement(c),
|
|
373
|
+
type: c.resourceType,
|
|
374
|
+
properties: [...new Set(c.details ?? [])],
|
|
375
|
+
unknown: drivenProperties(c, unknown, facts),
|
|
376
|
+
};
|
|
377
|
+
});
|
|
378
|
+
return normalizePlanShape({ member: stack, unknownInputs: refs, entries });
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Preview a stack whose parameters `unknown` are not known yet: create its
|
|
382
|
+
* change set with a stand-in for each, read the changes into entries that
|
|
383
|
+
* mark the properties those parameters drive as known after apply, take the
|
|
384
|
+
* shape, and delete the change set. Returns why instead when CloudFormation
|
|
385
|
+
* would not make the change set (real CloudFormation refuses an id that does
|
|
386
|
+
* not exist), so the caller plans a hole.
|
|
387
|
+
*
|
|
388
|
+
* Floci accepts a change set that real CloudFormation refuses (a missing
|
|
389
|
+
* export, an id that does not exist), reports `Parameters: null`, and says
|
|
390
|
+
* `Replacement: False` for a change that replaces. So a cross-stack value
|
|
391
|
+
* goes through a parameter here, never an export, and the replacement a
|
|
392
|
+
* preview reports is whatever the backend says; the shape check at apply
|
|
393
|
+
* compares like with like.
|
|
394
|
+
*/
|
|
395
|
+
async function previewCfnDeploy(executor, stack, input, unknown, refs = unknown) {
|
|
396
|
+
const facts = templateFacts(input.template, unknown);
|
|
397
|
+
const parameters = { ...(flattenCfnInputs(input) ?? {}) };
|
|
398
|
+
for (const k of unknown)
|
|
399
|
+
parameters[k] = cfnPlaceholder(facts.parameterTypes[k]);
|
|
400
|
+
let changeSet;
|
|
401
|
+
try {
|
|
402
|
+
changeSet = await executor.cloudformation.createChangeSet({ stackName: stack, templatePath: input.template, parameters });
|
|
403
|
+
}
|
|
404
|
+
catch (err) {
|
|
405
|
+
return `CloudFormation refused the change set with stand-in values: ${err instanceof Error ? err.message : String(err)}`;
|
|
406
|
+
}
|
|
407
|
+
try {
|
|
408
|
+
if (changeSet.status === "FAILED" && !isNoopChangeSet(changeSet)) {
|
|
409
|
+
return `CloudFormation could not create the change set with stand-in values${changeSet.statusReason ? `: ${changeSet.statusReason}` : ""}`;
|
|
410
|
+
}
|
|
411
|
+
const noop = isNoopChangeSet(changeSet);
|
|
412
|
+
const entries = noop ? [] : changeSet.changes.map((c) => cfnChangeEntry(stack, c, drivenProperties(c, unknown, facts)));
|
|
413
|
+
// What the stack's outputs will be, for the members that read them: an
|
|
414
|
+
// output that reads one of the unknown parameters is unknown, one that
|
|
415
|
+
// reads a known parameter or states its value is not (#4419).
|
|
416
|
+
const given = Object.fromEntries(Object.entries(parameters).filter(([k]) => !unknown.includes(k)));
|
|
417
|
+
const outputs = noop || changeSet.stackCreated ? undefined : await plannedStackOutputs(executor, stack, input.template, changeSet.changes, given);
|
|
418
|
+
return { entries, shape: cfnPlanShape(stack, changeSet, unknown, input.template, refs), ...(outputs ? { outputs } : {}) };
|
|
239
419
|
}
|
|
240
420
|
finally {
|
|
241
421
|
await cleanUpPlanChangeSet(executor, changeSet);
|
|
@@ -276,13 +456,13 @@ async function standingOutputs(executor, stack) {
|
|
|
276
456
|
* What the plan says of the stack's outputs once `changes` apply: none to
|
|
277
457
|
* say for a template with no `Outputs`, which needs no `DescribeStacks`.
|
|
278
458
|
*/
|
|
279
|
-
async function plannedStackOutputs(executor, stack, templatePath, changes) {
|
|
459
|
+
async function plannedStackOutputs(executor, stack, templatePath, changes, parameters = {}) {
|
|
280
460
|
const template = readTemplate(templatePath);
|
|
281
461
|
if (!template || typeof template !== "object")
|
|
282
462
|
return undefined;
|
|
283
463
|
if (Object.keys(template.Outputs ?? {}).length === 0)
|
|
284
464
|
return { known: {}, unknown: [] };
|
|
285
|
-
return cfnPlannedOutputs(template, changes, await standingOutputs(executor, stack));
|
|
465
|
+
return cfnPlannedOutputs(template, changes, await standingOutputs(executor, stack), parameters);
|
|
286
466
|
}
|
|
287
467
|
/** The template at `path` as JSON, or `undefined` when it cannot be read or parsed here. */
|
|
288
468
|
function readTemplate(path) {
|
|
@@ -364,9 +544,16 @@ function valueReads(value) {
|
|
|
364
544
|
* `Dynamic`, no replacement, no change in a nested stack under it). One
|
|
365
545
|
* that reads a parameter, an import or a condition, one the stack does not
|
|
366
546
|
* have yet, and every output of a template this cannot read, is unknown.
|
|
547
|
+
*
|
|
548
|
+
* Two kinds of output need no standing value. An output whose `Value` is a
|
|
549
|
+
* plain string is known at that string, changed or new: the template says it.
|
|
550
|
+
* An output that is a `Ref` to a parameter the plan was given a value for is
|
|
551
|
+
* known at that value (`given`, the inputs of this plan). Both are what
|
|
552
|
+
* the stack's outputs will be, whatever they are now.
|
|
553
|
+
*
|
|
367
554
|
* `undefined` when there is no template or no standing stack to read from.
|
|
368
555
|
*/
|
|
369
|
-
export function cfnPlannedOutputs(template, changes, standing) {
|
|
556
|
+
export function cfnPlannedOutputs(template, changes, standing, given = {}) {
|
|
370
557
|
if (!standing || template === null || typeof template !== "object")
|
|
371
558
|
return undefined;
|
|
372
559
|
const t = template;
|
|
@@ -381,6 +568,11 @@ export function cfnPlannedOutputs(template, changes, standing) {
|
|
|
381
568
|
const known = {};
|
|
382
569
|
const unknown = [];
|
|
383
570
|
for (const [name, output] of Object.entries(t.Outputs ?? {}).sort(([a], [b]) => a.localeCompare(b))) {
|
|
571
|
+
const stated = statedOutput(output, given, t.Parameters);
|
|
572
|
+
if (stated !== undefined) {
|
|
573
|
+
known[name] = stated;
|
|
574
|
+
continue;
|
|
575
|
+
}
|
|
384
576
|
const { ids, opaque } = valueReads(output?.Value);
|
|
385
577
|
const stays = !opaque && output?.Condition === undefined && name in standing &&
|
|
386
578
|
[...ids].every((id) => id.startsWith("AWS::") || (!parameters.has(id) && !moved.has(id)));
|
|
@@ -391,6 +583,29 @@ export function cfnPlannedOutputs(template, changes, standing) {
|
|
|
391
583
|
}
|
|
392
584
|
return { known, unknown };
|
|
393
585
|
}
|
|
586
|
+
/** The inputs a plan was given a value for: every parameter that is not null. */
|
|
587
|
+
function knownParameters(parameters) {
|
|
588
|
+
return Object.fromEntries(Object.entries(parameters).filter((e) => e[1] !== null));
|
|
589
|
+
}
|
|
590
|
+
/**
|
|
591
|
+
* What an output's `Value` says outright: a plain string, or a `Ref` to a
|
|
592
|
+
* parameter this plan has a value for. `undefined` for anything that reads a
|
|
593
|
+
* resource, an import or a condition, which the standing outputs speak for.
|
|
594
|
+
*/
|
|
595
|
+
function statedOutput(output, parameters, declared) {
|
|
596
|
+
if (output?.Condition !== undefined)
|
|
597
|
+
return undefined;
|
|
598
|
+
const value = output?.Value;
|
|
599
|
+
if (typeof value === "string")
|
|
600
|
+
return value;
|
|
601
|
+
if (value !== null && typeof value === "object") {
|
|
602
|
+
const entries = Object.entries(value);
|
|
603
|
+
const [key, arg] = entries[0] ?? [];
|
|
604
|
+
if (entries.length === 1 && key === "Ref" && typeof arg === "string" && declared && arg in declared && arg in parameters)
|
|
605
|
+
return parameters[arg];
|
|
606
|
+
}
|
|
607
|
+
return undefined;
|
|
608
|
+
}
|
|
394
609
|
/** Whether a CloudFormation error says the stack does not exist. */
|
|
395
610
|
const STACK_MISSING = /does not exist/i;
|
|
396
611
|
/**
|
|
@@ -464,7 +679,17 @@ export function createCfnDeployCapability(executor = defaultCloudExecutor()) {
|
|
|
464
679
|
// set that proposes the same changes. Anything else means the stack,
|
|
465
680
|
// the template or the parameters moved since the plan.
|
|
466
681
|
const planned = ctx.plans?.[stack];
|
|
467
|
-
if (
|
|
682
|
+
if (isCfnShapeArtifact(planned)) {
|
|
683
|
+
// A member planned before its inputs were known (#4419): the change
|
|
684
|
+
// set made now is against the real values. It must have the shape the
|
|
685
|
+
// preview had, differing only in what the unknown inputs drive.
|
|
686
|
+
const differences = planShapeDifferences(planned.shape, cfnPlanShape(stack, changeSet, []));
|
|
687
|
+
if (differences.length > 0) {
|
|
688
|
+
await cleanUpPlanChangeSet(executor, changeSet);
|
|
689
|
+
throw new PlanShapeMovedError(stack, differences);
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
else if (isCfnPlanArtifact(planned)) {
|
|
468
693
|
const now = cfnChangesDigest(stack, changeSet);
|
|
469
694
|
if (now !== planned.changesDigest) {
|
|
470
695
|
await cleanUpPlanChangeSet(executor, changeSet);
|
|
@@ -37,6 +37,17 @@ export interface CfnChange {
|
|
|
37
37
|
replacementMode?: "True" | "False" | "Conditional";
|
|
38
38
|
/** Resource-specific detail, when the executor's changeset backend provides it (e.g. property/scope). */
|
|
39
39
|
details?: string[];
|
|
40
|
+
/**
|
|
41
|
+
* What CloudFormation says drives each property change, when it says: the
|
|
42
|
+
* property, `ChangeSource` and `CausingEntity`. A property driven by a
|
|
43
|
+
* parameter reads `ParameterReference` with the parameter's name, which is
|
|
44
|
+
* how a preview marks it known after apply (#4419).
|
|
45
|
+
*/
|
|
46
|
+
drivers?: Array<{
|
|
47
|
+
property: string;
|
|
48
|
+
changeSource?: string;
|
|
49
|
+
causingEntity?: string;
|
|
50
|
+
}>;
|
|
40
51
|
/**
|
|
41
52
|
* The logical ids of the nested stacks this change sits in, outermost
|
|
42
53
|
* first (#3997). Absent for a change to the stack's own resources. Set when
|
|
@@ -420,6 +431,8 @@ export interface DescribedCfnChangeSet {
|
|
|
420
431
|
Target?: {
|
|
421
432
|
Name?: string;
|
|
422
433
|
};
|
|
434
|
+
ChangeSource?: string | null;
|
|
435
|
+
CausingEntity?: string | null;
|
|
423
436
|
}>;
|
|
424
437
|
/** Set on an `AWS::CloudFormation::Stack` change when the change set includes nested stacks: the nested change set's ARN. */
|
|
425
438
|
ChangeSetId?: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-executor.d.ts","sourceRoot":"","sources":["../../src/components/cloud-executor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cloud-executor.d.ts","sourceRoot":"","sources":["../../src/components/cloud-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -129,6 +129,15 @@ export async function readCfnChanges(described, describeNested, nestedStack = []
|
|
|
129
129
|
replacement: rc.Replacement === "True",
|
|
130
130
|
...(rc.Replacement === "True" || rc.Replacement === "False" || rc.Replacement === "Conditional" ? { replacementMode: rc.Replacement } : {}),
|
|
131
131
|
details: rc.Details?.map((d) => d.Target?.Name).filter((x) => !!x),
|
|
132
|
+
...(rc.Details?.some((d) => d.Target?.Name && (d.ChangeSource || d.CausingEntity))
|
|
133
|
+
? {
|
|
134
|
+
drivers: rc.Details.filter((d) => d.Target?.Name).map((d) => ({
|
|
135
|
+
property: d.Target.Name,
|
|
136
|
+
...(d.ChangeSource ? { changeSource: d.ChangeSource } : {}),
|
|
137
|
+
...(d.CausingEntity ? { causingEntity: d.CausingEntity } : {}),
|
|
138
|
+
})),
|
|
139
|
+
}
|
|
140
|
+
: {}),
|
|
132
141
|
...(nestedStack.length > 0 ? { nestedStack } : {}),
|
|
133
142
|
});
|
|
134
143
|
if (rc.ResourceType === "AWS::CloudFormation::Stack" && rc.ChangeSetId) {
|
package/dist/integrity.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"algorithm": "sha256",
|
|
3
3
|
"artifacts": {
|
|
4
|
-
"manifest.json": "
|
|
4
|
+
"manifest.json": "89d93cb161a38540a631c454e1910bc6946da731122a4c017d162f95e8f7dd6d",
|
|
5
5
|
"meta.json": "6f48557ed4203cbdeafdb47e7270fdf3533f6d6e6189987246301ed8e72170e9",
|
|
6
6
|
"types/index.d.ts": "8651f9ae166668f4311eea1fe61c3fe235f345947951c1d23d1df24a4fd3384f",
|
|
7
7
|
"rules/hardcoded-region.ts": "957eadcaa9f39cc17d21437565d7a94607d9b082cf28918b178fa067f07498a9",
|
|
@@ -75,5 +75,5 @@
|
|
|
75
75
|
"skills/chant-aws-eks.md": "8789255709ff004ad0a875fd5999edcdc66fc6e33d710db058d9f42703bcfdfe",
|
|
76
76
|
"skills/chant-aws-carve-terraform.md": "8780b94ce60aded935938d5ef20ea667738354051da1bf9ca6d70d9886f65d21"
|
|
77
77
|
},
|
|
78
|
-
"composite": "
|
|
78
|
+
"composite": "a28f09250fff6020001c7bf9ab2e315939530ce92656d8aef7d1b13ccc93406a"
|
|
79
79
|
}
|
package/dist/manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intentius/chant-lexicon-aws",
|
|
3
|
-
"version": "0.124.
|
|
3
|
+
"version": "0.124.52",
|
|
4
4
|
"description": "AWS CloudFormation lexicon for chant — declarative IaC in TypeScript",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://intentius.io/chant",
|
|
@@ -83,6 +83,6 @@
|
|
|
83
83
|
"typescript": "^5.9.3"
|
|
84
84
|
},
|
|
85
85
|
"peerDependencies": {
|
|
86
|
-
"@intentius/chant": "^0.124.
|
|
86
|
+
"@intentius/chant": "^0.124.52"
|
|
87
87
|
}
|
|
88
88
|
}
|