awscfn 1.6.0 → 1.6.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/README.md +12 -0
- package/bin/awscfn +15 -0
- package/dist/previewStack.d.ts.map +1 -1
- package/dist/previewStack.js +17 -1
- package/dist/previewStack.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -180,6 +180,18 @@ If the stack is **`ROLLBACK_COMPLETE`**, **`update-stack`** would delete and rec
|
|
|
180
180
|
|
|
181
181
|
Non-resource change-set entries (for example hooks) are counted and noted when they are not shown as table rows.
|
|
182
182
|
|
|
183
|
+
### ✅ validate-template
|
|
184
|
+
|
|
185
|
+
Validate a CloudFormation template without creating a change set.
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
awscfn validate-template -t <TEMPLATE_FILE>
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
| Flag | Description |
|
|
192
|
+
|------|-------------|
|
|
193
|
+
| `--template`, `-t` | CloudFormation template file |
|
|
194
|
+
|
|
183
195
|
### ♻️ redeploy-stack
|
|
184
196
|
|
|
185
197
|
```bash
|
package/bin/awscfn
CHANGED
|
@@ -13,6 +13,8 @@ const { inspectStack } = require('../dist/inspectStack');
|
|
|
13
13
|
const { previewStack } = require('../dist/previewStack');
|
|
14
14
|
const { redeployStack } = require('../dist/redeployStack');
|
|
15
15
|
const { updateStack } = require('../dist/updateStack');
|
|
16
|
+
const { validateTemplateOrExit } = require('../dist/cli/validateTemplate');
|
|
17
|
+
const { initCloudFormationClient } = require('../dist/lib/cfn');
|
|
16
18
|
const { getOutputConfig, setOutputConfig } = require('../dist/lib/output');
|
|
17
19
|
|
|
18
20
|
const pkg = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../package.json'), 'utf8'));
|
|
@@ -431,6 +433,19 @@ const cli = yargs
|
|
|
431
433
|
runCommand(() => previewStack(name, template, params, require('../dist/cli/parseParamOverrides').parseParamOverrides(set).overrides));
|
|
432
434
|
}
|
|
433
435
|
)
|
|
436
|
+
.command(
|
|
437
|
+
'validate-template',
|
|
438
|
+
'Validate a CloudFormation template',
|
|
439
|
+
(cmd) => cmd.options({ ...templateOpt }),
|
|
440
|
+
({ template }) => {
|
|
441
|
+
runCommand(async () => {
|
|
442
|
+
initCloudFormationClient();
|
|
443
|
+
const templateBody = fs.readFileSync(template, 'utf8');
|
|
444
|
+
await validateTemplateOrExit(templateBody);
|
|
445
|
+
console.log('template is valid');
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
)
|
|
434
449
|
.command(
|
|
435
450
|
'inspect-stack',
|
|
436
451
|
'Inspect a deployed stack in interactive panes (with fallback)',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"previewStack.d.ts","sourceRoot":"","sources":["../src/previewStack.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,wBAAsB,YAAY,CAC9B,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"previewStack.d.ts","sourceRoot":"","sources":["../src/previewStack.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,wBAAsB,YAAY,CAC9B,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC,CAqCf"}
|
package/dist/previewStack.js
CHANGED
|
@@ -56,6 +56,22 @@ async function previewStack(stackName, templatePath, paramsPath, overrides) {
|
|
|
56
56
|
await (0, validateTemplate_1.validateTemplateOrExit)(template);
|
|
57
57
|
const operation = existing ? 'UPDATE' : 'CREATE';
|
|
58
58
|
(0, output_1.info)(`${output_1.symbols.arrow} Preview ${(0, output_1.cyan)(operation)} for stack ${(0, output_1.cyan)(stackName)}`);
|
|
59
|
-
|
|
59
|
+
try {
|
|
60
|
+
await cfn.previewChangeSet(stackName, { body: template, params }, operation);
|
|
61
|
+
}
|
|
62
|
+
finally {
|
|
63
|
+
await cleanupCreatePreviewStack(existing, stackName);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
async function cleanupCreatePreviewStack(existing, stackName) {
|
|
67
|
+
if (existing)
|
|
68
|
+
return;
|
|
69
|
+
const createdForPreview = await cfn.getStackByName(stackName, true);
|
|
70
|
+
if (!createdForPreview || createdForPreview.StackStatus !== client_cloudformation_1.StackStatus.REVIEW_IN_PROGRESS) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
(0, output_1.warn)(`Preview created stack ${stackName} in REVIEW_IN_PROGRESS. `
|
|
74
|
+
+ 'Cleaning it up automatically...');
|
|
75
|
+
await cfn.deleteStack(createdForPreview);
|
|
60
76
|
}
|
|
61
77
|
//# sourceMappingURL=previewStack.js.map
|
package/dist/previewStack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"previewStack.js","sourceRoot":"","sources":["../src/previewStack.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,
|
|
1
|
+
{"version":3,"file":"previewStack.js","sourceRoot":"","sources":["../src/previewStack.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,oCA0CC;AApDD,0EAA2D;AAC3D,+CAAiC;AACjC,uEAAkE;AAClE,6DAA8D;AAC9D,yCAAuD;AAEvD;;;GAGG;AACI,KAAK,UAAU,YAAY,CAC9B,SAAiB,EACjB,YAAoB,EACpB,UAAmB,EACnB,SAAkC;IAGlC,GAAG,CAAC,wBAAwB,EAAE,CAAC;IAE/B,MAAM,EAAC,QAAQ,EAAE,MAAM,EAAC,GAAG,MAAM,IAAA,6CAAqB,EAAC,YAAY,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IAC5F,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAErD,IAAI,QAAQ,EAAE,WAAW,KAAK,mCAAW,CAAC,iBAAiB,EAAE,CAAC;QAE1D,IAAA,aAAI,EACA,SAAS,SAAS,uEAAuE;cACvF,iCAAiC,CACtC,CAAC;QAEF,MAAM,IAAI,KAAK,CACX,4GAA4G,CAC/G,CAAC;IAEN,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACtC,MAAM,IAAA,yCAAsB,EAAC,QAAQ,CAAC,CAAC;IAEvC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IAEjD,IAAA,aAAI,EAAC,GAAG,gBAAO,CAAC,KAAK,YAAY,IAAA,aAAI,EAAC,SAAS,CAAC,cAAc,IAAA,aAAI,EAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAEjF,IAAI,CAAC;QAED,MAAM,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAC,EAAE,SAAS,CAAC,CAAC;IAE/E,CAAC;YAAS,CAAC;QAEP,MAAM,yBAAyB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEzD,CAAC;AAEL,CAAC;AAED,KAAK,UAAU,yBAAyB,CACpC,QAAwD,EACxD,SAAiB;IAGjB,IAAI,QAAQ;QAAE,OAAO;IAErB,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAEpE,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,WAAW,KAAK,mCAAW,CAAC,kBAAkB,EAAE,CAAC;QAEzF,OAAO;IAEX,CAAC;IAED,IAAA,aAAI,EACA,yBAAyB,SAAS,0BAA0B;UAC1D,iCAAiC,CACtC,CAAC;IACF,MAAM,GAAG,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;AAE7C,CAAC"}
|
package/package.json
CHANGED