@intentius/chant-lexicon-aws 0.49.0 → 0.50.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/dist/codegen/generate-lexicon.d.ts +5 -0
- package/dist/codegen/generate-lexicon.d.ts.map +1 -1
- package/dist/components/host-delivery.d.ts +4 -3
- package/dist/components/host-delivery.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/integrity.json +9 -4
- package/dist/lint/audit-catalog.d.ts.map +1 -1
- package/dist/lint/post-synth/index.d.ts.map +1 -1
- package/dist/lint/post-synth/waw016.d.ts +10 -2
- package/dist/lint/post-synth/waw016.d.ts.map +1 -1
- package/dist/lint/post-synth/waw064.d.ts +17 -0
- package/dist/lint/post-synth/waw064.d.ts.map +1 -0
- package/dist/lint/post-synth/waw065.d.ts +23 -0
- package/dist/lint/post-synth/waw065.d.ts.map +1 -0
- package/dist/lint/post-synth/waw066.d.ts +25 -0
- package/dist/lint/post-synth/waw066.d.ts.map +1 -0
- package/dist/lint/post-synth/waw067.d.ts +24 -0
- package/dist/lint/post-synth/waw067.d.ts.map +1 -0
- package/dist/lint/post-synth/waw068.d.ts +20 -0
- package/dist/lint/post-synth/waw068.d.ts.map +1 -0
- package/dist/manifest.json +1 -1
- package/dist/meta.json +34 -0
- package/dist/okf/index.md +5 -0
- package/dist/okf/rules/WAW064.md +18 -0
- package/dist/okf/rules/WAW065.md +25 -0
- package/dist/okf/rules/WAW066.md +22 -0
- package/dist/okf/rules/WAW067.md +20 -0
- package/dist/okf/rules/WAW068.md +19 -0
- package/dist/okf/types/EC2Route.md +2 -0
- package/dist/okf/types/InternetGateway.md +4 -0
- package/dist/okf/types/Map.md +4 -0
- package/dist/okf/types/NatGateway.md +4 -0
- package/dist/okf/types/RouteTable.md +4 -0
- package/dist/okf/types/Subnet.md +2 -0
- package/dist/okf/types/SubnetRouteTableAssociation.md +5 -0
- package/dist/okf/types/Table.md +3 -0
- package/dist/okf/types/TransitGateway.md +6 -0
- package/dist/okf/types/TransitGatewayAttachment.md +4 -0
- package/dist/okf/types/TransitGatewayPeeringAttachment.md +4 -0
- package/dist/okf/types/TransitGatewayRoute.md +5 -0
- package/dist/okf/types/TransitGatewayRouteTable.md +4 -0
- package/dist/okf/types/TransitGatewayRouteTableAssociation.md +4 -0
- package/dist/okf/types/TransitGatewayRouteTablePropagation.md +4 -0
- package/dist/okf/types/TransitGatewayVpcAttachment.md +4 -0
- package/dist/okf/types/Type.md +5 -0
- package/dist/okf/types/VPNConnection.md +4 -0
- package/dist/okf/types/VPNGateway.md +4 -0
- package/dist/op/builders.d.ts +47 -0
- package/dist/op/builders.d.ts.map +1 -0
- package/dist/rules/waw016.ts +37 -16
- package/dist/rules/waw064.ts +52 -0
- package/dist/rules/waw065.ts +110 -0
- package/dist/rules/waw066.ts +155 -0
- package/dist/rules/waw067.ts +114 -0
- package/dist/rules/waw068.ts +78 -0
- package/dist/spec/parse.d.ts +7 -0
- package/dist/spec/parse.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/codegen/fallback.ts +1 -0
- package/src/codegen/generate-lexicon.ts +6 -0
- package/src/codegen/sam.ts +9 -0
- package/src/components/host-delivery.ts +4 -3
- package/src/generated/lexicon-aws.json +34 -0
- package/src/index.ts +8 -0
- package/src/lint/audit-catalog.ts +10 -0
- package/src/lint/post-synth/index.ts +10 -0
- package/src/lint/post-synth/waw016.test.ts +61 -4
- package/src/lint/post-synth/waw016.ts +37 -16
- package/src/lint/post-synth/waw064.test.ts +79 -0
- package/src/lint/post-synth/waw064.ts +52 -0
- package/src/lint/post-synth/waw065.test.ts +90 -0
- package/src/lint/post-synth/waw065.ts +110 -0
- package/src/lint/post-synth/waw066.test.ts +108 -0
- package/src/lint/post-synth/waw066.ts +155 -0
- package/src/lint/post-synth/waw067.test.ts +79 -0
- package/src/lint/post-synth/waw067.ts +114 -0
- package/src/lint/post-synth/waw068.test.ts +74 -0
- package/src/lint/post-synth/waw068.ts +78 -0
- package/src/lsp/hover.ts +17 -2
- package/src/op/builders.test.ts +61 -0
- package/src/op/builders.ts +72 -0
- package/src/spec/parse.test.ts +74 -0
- package/src/spec/parse.ts +26 -6
|
@@ -18,6 +18,11 @@ export interface LexiconEntry {
|
|
|
18
18
|
writeOnly?: string[];
|
|
19
19
|
primaryIdentifier?: string[];
|
|
20
20
|
deprecatedProperties?: string[];
|
|
21
|
+
/**
|
|
22
|
+
* Subset of `deprecatedProperties` that only a regex over the property
|
|
23
|
+
* description supports; the rest is declared by the Registry schema (#1701).
|
|
24
|
+
*/
|
|
25
|
+
inferredDeprecations?: string[];
|
|
21
26
|
conditionalCreateOnly?: string[];
|
|
22
27
|
replacementStrategy?: "delete_then_create" | "create_then_delete";
|
|
23
28
|
tagging?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-lexicon.d.ts","sourceRoot":"","sources":["../../src/codegen/generate-lexicon.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAOhF,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;IAC9B,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,WAAW,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACpC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC1D,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,mBAAmB,CAAC,EAAE,oBAAoB,GAAG,oBAAoB,CAAC;IAClE,OAAO,CAAC,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IAC7E,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,iBAAiB,EAAE,EAC5B,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,EAC/C,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GACjD,MAAM,
|
|
1
|
+
{"version":3,"file":"generate-lexicon.d.ts","sourceRoot":"","sources":["../../src/codegen/generate-lexicon.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAOhF,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;IAC9B,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,WAAW,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACpC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC1D,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,mBAAmB,CAAC,EAAE,oBAAoB,GAAG,oBAAoB,CAAC;IAClE,OAAO,CAAC,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IAC7E,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,iBAAiB,EAAE,EAC5B,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,EAC/C,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GACjD,MAAM,CA+CR;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYlE"}
|
|
@@ -54,9 +54,10 @@ export interface CodeDeployOutput {
|
|
|
54
54
|
* Deploy a revision to a host (fleet) via AWS CodeDeploy: create the
|
|
55
55
|
* deployment, then wait for a terminal status. Rollback re-invokes
|
|
56
56
|
* `stopAndRollback` against the deployment id this step created (captured in
|
|
57
|
-
* a closure-scoped map keyed by application/deploymentGroup
|
|
58
|
-
*
|
|
59
|
-
*
|
|
57
|
+
* a closure-scoped map keyed by application/deploymentGroup; the driver now
|
|
58
|
+
* also passes `run`'s output as `rollback`'s optional third arg (#1944), but
|
|
59
|
+
* this capability's input-derived key needs neither channel to resolve
|
|
60
|
+
* identity) — riding CodeDeploy's own native automatic rollback to the
|
|
60
61
|
* last known-good revision rather than a chant-scripted compensation, the
|
|
61
62
|
* "auto" rollback style the Neo4j pilot's docs comment contrasts with the
|
|
62
63
|
* ALB/ECS pilot's component-declared one.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-delivery.d.ts","sourceRoot":"","sources":["../../src/components/host-delivery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAI5E,MAAM,WAAW,eAAe;IAC9B,oKAAoK;IACpK,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4HAA4H;IAC5H,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,QAAQ,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC;IAC1G,gDAAgD;IAChD,QAAQ,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACrC,oLAAoL;IACpL,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;CAChB;AAsBD
|
|
1
|
+
{"version":3,"file":"host-delivery.d.ts","sourceRoot":"","sources":["../../src/components/host-delivery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAI5E,MAAM,WAAW,eAAe;IAC9B,oKAAoK;IACpK,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4HAA4H;IAC5H,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,QAAQ,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC;IAC1G,gDAAgD;IAChD,QAAQ,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACrC,oLAAoL;IACpL,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;CAChB;AAsBD;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,GAAE,aAAsC,GAC/C,UAAU,CAAC,eAAe,EAAE,gBAAgB,CAAC,CA2B/C;AAED,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,eAAe,EAAE,gBAAgB,CAAgC,CAAC;AAIhH,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAC/B,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,GAAE,aAAsC,GAAG,UAAU,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAY1I;AAED,6EAA6E;AAC7E,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,eAAe,EAAE,gBAAgB,CAAgC,CAAC;AAIhH,MAAM,WAAW,eAAe;IAC9B,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,GAAE,aAAsC,GAAG,UAAU,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAW1I;AAED,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,eAAe,EAAE,gBAAgB,CAAgC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export { EffectReceipt, receiptParameterName, AWS_EFFECT_RECEIPT_ENTITY_TYPE, EF
|
|
|
7
7
|
export type { AwsEffectReceiptDeclaration } from "./effect-receipt-row.js";
|
|
8
8
|
export { awsReceiptStore, observeReceiptRows, ssmGetParameter, ssmPutParameter } from "./receipt-store.js";
|
|
9
9
|
export type { AwsReceiptStoreOptions, ReceiptRowObservation } from "./receipt-store.js";
|
|
10
|
+
export { awsApply, awsDelete, flociUp, flociDown } from "./op/builders.js";
|
|
10
11
|
export { awsSerializer } from "./serializer.js";
|
|
11
12
|
export { nestedStack, isNestedStackInstance, NestedStackOutputRef, isNestedStackOutputRef, NESTED_STACK_MARKER } from "./nested-stack.js";
|
|
12
13
|
export type { NestedStackOptions, NestedStackInstance } from "./nested-stack.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACjF,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACzG,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAK9D,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,8BAA8B,EAC9B,4BAA4B,EAC5B,mBAAmB,EACnB,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACxG,YAAY,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/integrity.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"algorithm": "sha256",
|
|
3
3
|
"artifacts": {
|
|
4
|
-
"manifest.json": "
|
|
5
|
-
"meta.json": "
|
|
4
|
+
"manifest.json": "4ed3c883e89ff20517d344e836a3fdd6c35e52e8ea0276cb02c3157710823bba",
|
|
5
|
+
"meta.json": "e7c751a09a871dc5a16e9aeea0b0a149513a7a2a051c923e9a5acf193dc2aef8",
|
|
6
6
|
"types/index.d.ts": "6d6b37bd14a9b40fb3ff5c66e1cb49be1ae1032de47a4e167cf5f411c943b7f5",
|
|
7
7
|
"rules/hardcoded-region.ts": "5a0eaf7ab391231fe6cd51426ece29539cb4b36f31c8dd060956638fed55722a",
|
|
8
8
|
"rules/iam-wildcard.ts": "135d7217d278fef50939e605c5da32603ba35674b8c4b5c4d66a06c77903e945",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"rules/waw013.ts": "f9b37b955917415a2eb5f4aed7f28b76aff0a6abdb05228dcbb8bc77bc67672a",
|
|
16
16
|
"rules/waw014.ts": "889f1b06899b50f98941d05b029954cf375ac8a130933b98c9586079096216aa",
|
|
17
17
|
"rules/waw015.ts": "071c940fb6432cd8b42a44d083921e9491d5063417839109c10b2bd13dd2032e",
|
|
18
|
-
"rules/waw016.ts": "
|
|
18
|
+
"rules/waw016.ts": "5d6b614bcdf3e26d87dd6c4ec67d7c5e698b3bf05db82dc05d8e006da1e0e488",
|
|
19
19
|
"rules/waw017.ts": "658554008954f71036e23b514dece7063142198fbdca125f11d09026f1d21ab2",
|
|
20
20
|
"rules/waw018.ts": "a4aa83a25104f039a6c5e0f3e1f5b8b65e493b0ba162c985988190a726b90d2f",
|
|
21
21
|
"rules/waw019.ts": "f14ebf024a3cce7005d54c762e4e0979537d6a854fb123344107d40d92a94b5c",
|
|
@@ -63,9 +63,14 @@
|
|
|
63
63
|
"rules/waw061.ts": "5e25d1cd07c5ff0c918d84995cf37a8fa22294242de6b421c1eef37f4fb6521d",
|
|
64
64
|
"rules/waw062.ts": "8051ac5cbc3e53fc1e664bb8e6ffd54a75fac0b6e9e802bd0d244dfec59d82a0",
|
|
65
65
|
"rules/waw063.ts": "c64f86e7cea5363c42d6aa59c06c4343b7c6cad20aeb9fbf4fec69de5e63ee87",
|
|
66
|
+
"rules/waw064.ts": "46c0cda1b777002f3412b507fcb4715cc630deb31d5306443234bfa3b74e77d1",
|
|
67
|
+
"rules/waw065.ts": "73b4c85428880bd633442f5e1eb7b228526423313ecc3b5b8950f206f33d2057",
|
|
68
|
+
"rules/waw066.ts": "f30e4996fdeb1703f24e1152ffe0698b6a55d140a341dcd9528199206abb18c0",
|
|
69
|
+
"rules/waw067.ts": "8e66f3512569c106c4c6868786bb870af1b3b05d3542118ca6bb5c61c57314e7",
|
|
70
|
+
"rules/waw068.ts": "adbfe84e9b3cdafc072346d87a5df81a97ab07bc5171f3d4abb824c29e9a66a0",
|
|
66
71
|
"skills/chant-aws.md": "4d65eb160e001f2af42eb7c622a5b498c2fd1f5afbd6c8155615c010fb265c63",
|
|
67
72
|
"skills/chant-aws-eks.md": "8789255709ff004ad0a875fd5999edcdc66fc6e33d710db058d9f42703bcfdfe",
|
|
68
73
|
"skills/chant-aws-carve-terraform.md": "0ae4376590db47979be144d3ac6cdcfd56c9640d0536421aacf7330459d38e52"
|
|
69
74
|
},
|
|
70
|
-
"composite": "
|
|
75
|
+
"composite": "ba342596e044edf730f75709ef8b4f5bd2c614b6d2eba0e9f457c20f039bb70a"
|
|
71
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-catalog.d.ts","sourceRoot":"","sources":["../../src/lint/audit-catalog.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAa,KAAK,QAAQ,EAAkB,MAAM,gCAAgC,CAAC;AAQ1F,6CAA6C;AAC7C,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"audit-catalog.d.ts","sourceRoot":"","sources":["../../src/lint/audit-catalog.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAa,KAAK,QAAQ,EAAkB,MAAM,gCAAgC,CAAC;AAQ1F,6CAA6C;AAC7C,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CA0EpD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AA8DvE,eAAO,MAAM,eAAe,EAAE,cAAc,EA6D3C,CAAC"}
|
|
@@ -2,12 +2,20 @@
|
|
|
2
2
|
* WAW016: Deprecated Property Usage
|
|
3
3
|
*
|
|
4
4
|
* Flags properties marked as deprecated in the CloudFormation Registry.
|
|
5
|
-
*
|
|
5
|
+
*
|
|
6
|
+
* Two bases feed this, and the finding says which one it stands on (#1701).
|
|
7
|
+
* A `declared` name comes from the Registry schema's own `deprecatedProperties`
|
|
8
|
+
* array. An `inferred` name comes from a regex over the property description,
|
|
9
|
+
* which also matches descriptions that mention the deprecation of a sibling
|
|
10
|
+
* property, an enum value, or the thing the property configures. Declared is a
|
|
11
|
+
* warning; inferred is reported at info and worded as a guess.
|
|
6
12
|
*/
|
|
7
13
|
import type { PostSynthCheck, PostSynthContext, PostSynthDiagnostic } from "@intentius/chant/lint/post-synth";
|
|
14
|
+
/** What a deprecation classification rests on. */
|
|
15
|
+
export type DeprecationBasis = "declared" | "inferred";
|
|
8
16
|
/**
|
|
9
17
|
* Core detection logic — exported for direct testing with synthetic data.
|
|
10
18
|
*/
|
|
11
|
-
export declare function checkDeprecatedProperties(ctx: PostSynthContext, deprecated: Map<string,
|
|
19
|
+
export declare function checkDeprecatedProperties(ctx: PostSynthContext, deprecated: Map<string, Map<string, DeprecationBasis>>): PostSynthDiagnostic[];
|
|
12
20
|
export declare const waw016: PostSynthCheck;
|
|
13
21
|
//# sourceMappingURL=waw016.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"waw016.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/waw016.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"waw016.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/waw016.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAG9G,kDAAkD;AAClD,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,UAAU,CAAC;AAuCvD;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,gBAAgB,EACrB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,GACrD,mBAAmB,EAAE,CAiCvB;AAED,eAAO,MAAM,MAAM,EAAE,cAOpB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WAW064: Transit Gateway Route Table Declares A Blackhole Route
|
|
3
|
+
*
|
|
4
|
+
* `AWS::EC2::TransitGatewayRoute` with `Blackhole: true` silently drops any
|
|
5
|
+
* traffic matching its destination CIDR instead of forwarding it —
|
|
6
|
+
* CloudFormation deploys this without complaint, and the packet loss only
|
|
7
|
+
* surfaces downstream as unreachable hosts or a timeout nobody can explain
|
|
8
|
+
* from the template alone. A blackhole route is sometimes deliberate — an
|
|
9
|
+
* explicit deny for a CIDR range, or a placeholder pending real
|
|
10
|
+
* infrastructure — but it is also exactly what a copy-pasted route table or
|
|
11
|
+
* a forgotten cleanup step leaves behind. Warn so it stays a conscious
|
|
12
|
+
* choice rather than a silent accident.
|
|
13
|
+
*/
|
|
14
|
+
import type { PostSynthCheck, PostSynthContext, PostSynthDiagnostic } from "@intentius/chant/lint/post-synth";
|
|
15
|
+
export declare function checkTgwBlackholeRoute(ctx: PostSynthContext): PostSynthDiagnostic[];
|
|
16
|
+
export declare const waw064: PostSynthCheck;
|
|
17
|
+
//# sourceMappingURL=waw064.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waw064.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/waw064.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAG9G,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,gBAAgB,GAAG,mBAAmB,EAAE,CAyBnF;AAED,eAAO,MAAM,MAAM,EAAE,cAOpB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WAW065: Transit Gateway Route Table Wiring Is Incomplete
|
|
3
|
+
*
|
|
4
|
+
* A Transit Gateway route table only does anything once two independent
|
|
5
|
+
* pieces are both wired up: an `AWS::EC2::TransitGatewayRouteTableAssociation`
|
|
6
|
+
* (which attachment's traffic is evaluated against this table) and an
|
|
7
|
+
* `AWS::EC2::TransitGatewayRouteTablePropagation` (which attachments' routes
|
|
8
|
+
* populate it). CloudFormation is happy to deploy a route table with one but
|
|
9
|
+
* not the other — the stack succeeds, and the gap only shows up as traffic
|
|
10
|
+
* that can't find a route. Two patterns, both "declared but half-wired":
|
|
11
|
+
*
|
|
12
|
+
* - a route table has one or more associations but zero propagations — the
|
|
13
|
+
* associated attachment's traffic is evaluated against this table, but
|
|
14
|
+
* nothing ever populates it with routes;
|
|
15
|
+
* - a declared attachment (VPC/VPN/peering, or the generic
|
|
16
|
+
* TransitGatewayAttachment) is referenced by neither an association nor
|
|
17
|
+
* a propagation anywhere in the template — it hangs off the transit
|
|
18
|
+
* gateway with no route table wiring at all.
|
|
19
|
+
*/
|
|
20
|
+
import type { PostSynthCheck, PostSynthContext, PostSynthDiagnostic } from "@intentius/chant/lint/post-synth";
|
|
21
|
+
export declare function checkTgwRouteTableWiring(ctx: PostSynthContext): PostSynthDiagnostic[];
|
|
22
|
+
export declare const waw065: PostSynthCheck;
|
|
23
|
+
//# sourceMappingURL=waw065.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waw065.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/waw065.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAU9G,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,gBAAgB,GAAG,mBAAmB,EAAE,CAsErF;AAED,eAAO,MAAM,MAAM,EAAE,cAOpB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WAW066: Private Subnet Route Table Has No Working Default Route
|
|
3
|
+
*
|
|
4
|
+
* Cross-resource join: a subnet's outbound path depends on a chain of three
|
|
5
|
+
* independently-declared resources — the `AWS::EC2::SubnetRouteTableAssociation`
|
|
6
|
+
* that pins it to a route table, the `AWS::EC2::Route` on that table for
|
|
7
|
+
* `0.0.0.0/0`, and the gateway that route names. CloudFormation validates
|
|
8
|
+
* none of this end-to-end: a subnet can be wired to a route table with no
|
|
9
|
+
* default route at all, or with a default route whose NAT gateway / Transit
|
|
10
|
+
* Gateway target was renamed or removed elsewhere in the template, and the
|
|
11
|
+
* stack still deploys clean. The subnet is black-holed — every deploy
|
|
12
|
+
* succeeds, and the only symptom is a workload with no outbound connectivity.
|
|
13
|
+
*
|
|
14
|
+
* A route table with a default route to an `AWS::EC2::InternetGateway` is
|
|
15
|
+
* treated as a public subnet and is out of scope for this check — this rule
|
|
16
|
+
* only flags the private case: no default route, or one whose target
|
|
17
|
+
* (`NatGatewayId` / `TransitGatewayId` / etc.) does not resolve to a
|
|
18
|
+
* resource declared in the same template. A route naming a target that
|
|
19
|
+
* exists in the template resolves cleanly and is never flagged, per the
|
|
20
|
+
* cross-resource contract.
|
|
21
|
+
*/
|
|
22
|
+
import type { PostSynthCheck, PostSynthContext, PostSynthDiagnostic } from "@intentius/chant/lint/post-synth";
|
|
23
|
+
export declare function checkPrivateSubnetDefaultRoute(ctx: PostSynthContext): PostSynthDiagnostic[];
|
|
24
|
+
export declare const waw066: PostSynthCheck;
|
|
25
|
+
//# sourceMappingURL=waw066.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waw066.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/waw066.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAgD9G,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,gBAAgB,GAAG,mBAAmB,EAAE,CA2E3F;AAED,eAAO,MAAM,MAAM,EAAE,cAOpB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WAW067: Single-AZ NAT Gateway Serves Multi-AZ Private Subnets
|
|
3
|
+
*
|
|
4
|
+
* Cross-resource join across four resource kinds: a NAT gateway lives in one
|
|
5
|
+
* subnet, which lives in one Availability Zone; a route table's default
|
|
6
|
+
* route names the NAT gateway it forwards to; a subnet is pinned to a route
|
|
7
|
+
* table by an `AWS::EC2::SubnetRouteTableAssociation`. Follow that chain and
|
|
8
|
+
* a common reliability gap falls out — private subnets in two or more AZs
|
|
9
|
+
* all defaulting to the *same* NAT gateway. CloudFormation has no opinion on
|
|
10
|
+
* this; it deploys cleanly. But a NAT gateway lives entirely inside one AZ,
|
|
11
|
+
* so if that AZ has an outage, every subnet depending on it loses egress —
|
|
12
|
+
* including the subnets in AZs that were otherwise healthy. The
|
|
13
|
+
* Well-Architected fix is one NAT gateway per AZ, each serving only its own
|
|
14
|
+
* AZ's subnets.
|
|
15
|
+
*
|
|
16
|
+
* Only fires when the Availability Zones involved are literal strings —
|
|
17
|
+
* an `Fn::GetAZs`/`Fn::Select`-derived AZ can't be compared statically, so a
|
|
18
|
+
* subnet without a literal `AvailabilityZone` is silently excluded rather
|
|
19
|
+
* than guessed at.
|
|
20
|
+
*/
|
|
21
|
+
import type { PostSynthCheck, PostSynthContext, PostSynthDiagnostic } from "@intentius/chant/lint/post-synth";
|
|
22
|
+
export declare function checkNatGatewaySingleAz(ctx: PostSynthContext): PostSynthDiagnostic[];
|
|
23
|
+
export declare const waw067: PostSynthCheck;
|
|
24
|
+
//# sourceMappingURL=waw067.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waw067.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/waw067.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAG9G,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,gBAAgB,GAAG,mBAAmB,EAAE,CAgFpF;AAED,eAAO,MAAM,MAAM,EAAE,cAOpB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WAW068: VPN Gateway Has A Single VPN Connection
|
|
3
|
+
*
|
|
4
|
+
* An `AWS::EC2::VPNConnection` always gets two tunnels from AWS, but that
|
|
5
|
+
* redundancy only covers the tunnel pair inside one connection — it does
|
|
6
|
+
* nothing if the connection's Customer Gateway, on-prem device, or the
|
|
7
|
+
* single site it terminates at goes down. The reliability boundary that
|
|
8
|
+
* matters is the connection itself: a `AWS::EC2::VPNGateway` (or a Transit
|
|
9
|
+
* Gateway used for VPN attachment) with only one `VPNConnection` attached
|
|
10
|
+
* has no fallback path for hybrid connectivity if that connection's
|
|
11
|
+
* Customer Gateway or on-prem side fails.
|
|
12
|
+
*
|
|
13
|
+
* Cross-resource join: group every declared `VPNConnection` by the gateway
|
|
14
|
+
* (`VpnGatewayId` or `TransitGatewayId`) it attaches to, and flag any
|
|
15
|
+
* gateway left with exactly one.
|
|
16
|
+
*/
|
|
17
|
+
import type { PostSynthCheck, PostSynthContext, PostSynthDiagnostic } from "@intentius/chant/lint/post-synth";
|
|
18
|
+
export declare function checkVpnGatewayRedundancy(ctx: PostSynthContext): PostSynthDiagnostic[];
|
|
19
|
+
export declare const waw068: PostSynthCheck;
|
|
20
|
+
//# sourceMappingURL=waw068.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waw068.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/waw068.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAG9G,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,gBAAgB,GAAG,mBAAmB,EAAE,CAgDtF;AAED,eAAO,MAAM,MAAM,EAAE,cAOpB,CAAC"}
|
package/dist/manifest.json
CHANGED
package/dist/meta.json
CHANGED
|
@@ -6222,6 +6222,9 @@
|
|
|
6222
6222
|
"deprecatedProperties": [
|
|
6223
6223
|
"DeleteStorageConnectors"
|
|
6224
6224
|
],
|
|
6225
|
+
"inferredDeprecations": [
|
|
6226
|
+
"DeleteStorageConnectors"
|
|
6227
|
+
],
|
|
6225
6228
|
"tagging": {
|
|
6226
6229
|
"taggable": true,
|
|
6227
6230
|
"tagOnCreate": true,
|
|
@@ -11669,6 +11672,9 @@
|
|
|
11669
11672
|
"deprecatedProperties": [
|
|
11670
11673
|
"AccessControl"
|
|
11671
11674
|
],
|
|
11675
|
+
"inferredDeprecations": [
|
|
11676
|
+
"AccessControl"
|
|
11677
|
+
],
|
|
11672
11678
|
"tagging": {
|
|
11673
11679
|
"taggable": true,
|
|
11674
11680
|
"tagOnCreate": true,
|
|
@@ -14989,6 +14995,9 @@
|
|
|
14989
14995
|
"deprecatedProperties": [
|
|
14990
14996
|
"ComputeModel"
|
|
14991
14997
|
],
|
|
14998
|
+
"inferredDeprecations": [
|
|
14999
|
+
"ComputeModel"
|
|
15000
|
+
],
|
|
14992
15001
|
"replacementStrategy": "delete_then_create",
|
|
14993
15002
|
"tagging": {
|
|
14994
15003
|
"taggable": true,
|
|
@@ -15385,6 +15394,9 @@
|
|
|
15385
15394
|
"deprecatedProperties": [
|
|
15386
15395
|
"ComputeModel"
|
|
15387
15396
|
],
|
|
15397
|
+
"inferredDeprecations": [
|
|
15398
|
+
"ComputeModel"
|
|
15399
|
+
],
|
|
15388
15400
|
"conditionalCreateOnly": [
|
|
15389
15401
|
"DbNodes"
|
|
15390
15402
|
],
|
|
@@ -17085,6 +17097,9 @@
|
|
|
17085
17097
|
"deprecatedProperties": [
|
|
17086
17098
|
"Deprecated"
|
|
17087
17099
|
],
|
|
17100
|
+
"inferredDeprecations": [
|
|
17101
|
+
"Deprecated"
|
|
17102
|
+
],
|
|
17088
17103
|
"tagging": {
|
|
17089
17104
|
"taggable": true,
|
|
17090
17105
|
"tagOnCreate": true,
|
|
@@ -29032,6 +29047,9 @@
|
|
|
29032
29047
|
"TdeCredentialPassword",
|
|
29033
29048
|
"DBSecurityGroups"
|
|
29034
29049
|
],
|
|
29050
|
+
"inferredDeprecations": [
|
|
29051
|
+
"DBSecurityGroups"
|
|
29052
|
+
],
|
|
29035
29053
|
"conditionalCreateOnly": [
|
|
29036
29054
|
"AutoMinorVersionUpgrade",
|
|
29037
29055
|
"AvailabilityZone",
|
|
@@ -33246,6 +33264,9 @@
|
|
|
33246
33264
|
"deprecatedProperties": [
|
|
33247
33265
|
"ImageScanningConfiguration"
|
|
33248
33266
|
],
|
|
33267
|
+
"inferredDeprecations": [
|
|
33268
|
+
"ImageScanningConfiguration"
|
|
33269
|
+
],
|
|
33249
33270
|
"tagging": {
|
|
33250
33271
|
"taggable": true,
|
|
33251
33272
|
"tagOnCreate": true,
|
|
@@ -41749,6 +41770,9 @@
|
|
|
41749
41770
|
"deprecatedProperties": [
|
|
41750
41771
|
"Runtime"
|
|
41751
41772
|
],
|
|
41773
|
+
"inferredDeprecations": [
|
|
41774
|
+
"Runtime"
|
|
41775
|
+
],
|
|
41752
41776
|
"conditionalCreateOnly": [
|
|
41753
41777
|
"DurableConfig"
|
|
41754
41778
|
],
|
|
@@ -49621,6 +49645,10 @@
|
|
|
49621
49645
|
"ElasticGpuSpecifications",
|
|
49622
49646
|
"ElasticInferenceAccelerators"
|
|
49623
49647
|
],
|
|
49648
|
+
"inferredDeprecations": [
|
|
49649
|
+
"ElasticGpuSpecifications",
|
|
49650
|
+
"ElasticInferenceAccelerators"
|
|
49651
|
+
],
|
|
49624
49652
|
"conditionalCreateOnly": [
|
|
49625
49653
|
"AdditionalInfo",
|
|
49626
49654
|
"Affinity",
|
|
@@ -64878,6 +64906,9 @@
|
|
|
64878
64906
|
"deprecatedProperties": [
|
|
64879
64907
|
"DBPort"
|
|
64880
64908
|
],
|
|
64909
|
+
"inferredDeprecations": [
|
|
64910
|
+
"DBPort"
|
|
64911
|
+
],
|
|
64881
64912
|
"tagging": {
|
|
64882
64913
|
"taggable": true,
|
|
64883
64914
|
"tagOnCreate": true,
|
|
@@ -100101,6 +100132,9 @@
|
|
|
100101
100132
|
"deprecatedProperties": [
|
|
100102
100133
|
"State"
|
|
100103
100134
|
],
|
|
100135
|
+
"inferredDeprecations": [
|
|
100136
|
+
"State"
|
|
100137
|
+
],
|
|
100104
100138
|
"tagging": {
|
|
100105
100139
|
"taggable": true,
|
|
100106
100140
|
"tagOnCreate": true,
|
package/dist/okf/index.md
CHANGED
|
@@ -1727,3 +1727,8 @@ okf_version: '0.2'
|
|
|
1727
1727
|
* [WAW061](/rules/WAW061.md) - Subnet CidrBlock falls outside its VPC's CidrBlock — fails at deploy time
|
|
1728
1728
|
* [WAW062](/rules/WAW062.md) - Duplicate export name or explicit resource name within a template — fails at deploy time
|
|
1729
1729
|
* [WAW063](/rules/WAW063.md) - IAM policy denies an action another attached policy on the same role allows — explicit Deny wins, runtime 403
|
|
1730
|
+
* [WAW064](/rules/WAW064.md) - Transit Gateway route table declares a Blackhole route — confirm the traffic drop is intentional, not an accident
|
|
1731
|
+
* [WAW065](/rules/WAW065.md) - Transit Gateway route table has associations but no propagations, or an attachment wired into no route table
|
|
1732
|
+
* [WAW066](/rules/WAW066.md) - Private subnet's route table has no default route, or its default route targets a gateway that does not exist in the template
|
|
1733
|
+
* [WAW067](/rules/WAW067.md) - A single-AZ NAT gateway serves private subnets across multiple Availability Zones — single point of failure for cross-AZ egress
|
|
1734
|
+
* [WAW068](/rules/WAW068.md) - VPN Gateway or Transit Gateway has only one attached VPN Connection — no redundant path for hybrid connectivity
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WAW064
|
|
4
|
+
description: Transit Gateway route table declares a Blackhole route — confirm the traffic drop is intentional, not an accident
|
|
5
|
+
id: WAW064
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: aws
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/aws/rules/
|
|
10
|
+
---
|
|
11
|
+
Transit Gateway route table declares a Blackhole route — confirm the traffic drop is intentional, not an accident
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Table](/types/Table.md)
|
|
16
|
+
- [TransitGateway](/types/TransitGateway.md)
|
|
17
|
+
- [TransitGatewayRoute](/types/TransitGatewayRoute.md)
|
|
18
|
+
- [Type](/types/Type.md)
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WAW065
|
|
4
|
+
description: Transit Gateway route table has associations but no propagations, or an attachment wired into no route table
|
|
5
|
+
id: WAW065
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: aws
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/aws/rules/
|
|
10
|
+
---
|
|
11
|
+
Transit Gateway route table has associations but no propagations, or an attachment wired into no route table
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Map](/types/Map.md)
|
|
16
|
+
- [Table](/types/Table.md)
|
|
17
|
+
- [TransitGateway](/types/TransitGateway.md)
|
|
18
|
+
- [TransitGatewayAttachment](/types/TransitGatewayAttachment.md)
|
|
19
|
+
- [TransitGatewayPeeringAttachment](/types/TransitGatewayPeeringAttachment.md)
|
|
20
|
+
- [TransitGatewayRoute](/types/TransitGatewayRoute.md)
|
|
21
|
+
- [TransitGatewayRouteTable](/types/TransitGatewayRouteTable.md)
|
|
22
|
+
- [TransitGatewayRouteTableAssociation](/types/TransitGatewayRouteTableAssociation.md)
|
|
23
|
+
- [TransitGatewayRouteTablePropagation](/types/TransitGatewayRouteTablePropagation.md)
|
|
24
|
+
- [TransitGatewayVpcAttachment](/types/TransitGatewayVpcAttachment.md)
|
|
25
|
+
- [Type](/types/Type.md)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WAW066
|
|
4
|
+
description: Private subnet's route table has no default route, or its default route targets a gateway that does not exist in the template
|
|
5
|
+
id: WAW066
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: aws
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/aws/rules/
|
|
10
|
+
---
|
|
11
|
+
Private subnet's route table has no default route, or its default route targets a gateway that does not exist in the template
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [EC2Route](/types/EC2Route.md)
|
|
16
|
+
- [InternetGateway](/types/InternetGateway.md)
|
|
17
|
+
- [Map](/types/Map.md)
|
|
18
|
+
- [RouteTable](/types/RouteTable.md)
|
|
19
|
+
- [Subnet](/types/Subnet.md)
|
|
20
|
+
- [SubnetRouteTableAssociation](/types/SubnetRouteTableAssociation.md)
|
|
21
|
+
- [Table](/types/Table.md)
|
|
22
|
+
- [Type](/types/Type.md)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WAW067
|
|
4
|
+
description: A single-AZ NAT gateway serves private subnets across multiple Availability Zones — single point of failure for cross-AZ egress
|
|
5
|
+
id: WAW067
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: aws
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/aws/rules/
|
|
10
|
+
---
|
|
11
|
+
A single-AZ NAT gateway serves private subnets across multiple Availability Zones — single point of failure for cross-AZ egress
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [EC2Route](/types/EC2Route.md)
|
|
16
|
+
- [Map](/types/Map.md)
|
|
17
|
+
- [NatGateway](/types/NatGateway.md)
|
|
18
|
+
- [Subnet](/types/Subnet.md)
|
|
19
|
+
- [SubnetRouteTableAssociation](/types/SubnetRouteTableAssociation.md)
|
|
20
|
+
- [Type](/types/Type.md)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WAW068
|
|
4
|
+
description: VPN Gateway or Transit Gateway has only one attached VPN Connection — no redundant path for hybrid connectivity
|
|
5
|
+
id: WAW068
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: aws
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/aws/rules/
|
|
10
|
+
---
|
|
11
|
+
VPN Gateway or Transit Gateway has only one attached VPN Connection — no redundant path for hybrid connectivity
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Map](/types/Map.md)
|
|
16
|
+
- [TransitGateway](/types/TransitGateway.md)
|
|
17
|
+
- [Type](/types/Type.md)
|
|
18
|
+
- [VPNConnection](/types/VPNConnection.md)
|
|
19
|
+
- [VPNGateway](/types/VPNGateway.md)
|
|
@@ -35,3 +35,5 @@ resource_type: AWS::EC2::Route
|
|
|
35
35
|
## Governed by
|
|
36
36
|
|
|
37
37
|
- [WAW030](/rules/WAW030.md): Missing DependsOn for known CloudFormation ordering patterns
|
|
38
|
+
- [WAW066](/rules/WAW066.md): Private subnet's route table has no default route, or its default route targets a gateway that does not exist in the template
|
|
39
|
+
- [WAW067](/rules/WAW067.md): A single-AZ NAT gateway serves private subnets across multiple Availability Zones — single point of failure for cross-AZ egress
|
|
@@ -16,3 +16,7 @@ resource_type: AWS::EC2::InternetGateway
|
|
|
16
16
|
## Attributes
|
|
17
17
|
|
|
18
18
|
- `InternetGatewayId`
|
|
19
|
+
|
|
20
|
+
## Governed by
|
|
21
|
+
|
|
22
|
+
- [WAW066](/rules/WAW066.md): Private subnet's route table has no default route, or its default route targets a gateway that does not exist in the template
|
package/dist/okf/types/Map.md
CHANGED
|
@@ -36,3 +36,7 @@ resource_type: AWS::Location::Map
|
|
|
36
36
|
- [WAW036](/rules/WAW036.md): Non-ASCII characters in EC2/IAM/CW string properties — rejected at changeset time
|
|
37
37
|
- [WAW059](/rules/WAW059.md): Wildcard Resource where the declared graph enumerates the touched set — tighten to the consumers' declared Arns
|
|
38
38
|
- [WAW062](/rules/WAW062.md): Duplicate export name or explicit resource name within a template — fails at deploy time
|
|
39
|
+
- [WAW065](/rules/WAW065.md): Transit Gateway route table has associations but no propagations, or an attachment wired into no route table
|
|
40
|
+
- [WAW066](/rules/WAW066.md): Private subnet's route table has no default route, or its default route targets a gateway that does not exist in the template
|
|
41
|
+
- [WAW067](/rules/WAW067.md): A single-AZ NAT gateway serves private subnets across multiple Availability Zones — single point of failure for cross-AZ egress
|
|
42
|
+
- [WAW068](/rules/WAW068.md): VPN Gateway or Transit Gateway has only one attached VPN Connection — no redundant path for hybrid connectivity
|
|
@@ -35,3 +35,7 @@ resource_type: AWS::EC2::NatGateway
|
|
|
35
35
|
- `EniId`
|
|
36
36
|
- `NatGatewayId`
|
|
37
37
|
- `RouteTableId`
|
|
38
|
+
|
|
39
|
+
## Governed by
|
|
40
|
+
|
|
41
|
+
- [WAW067](/rules/WAW067.md): A single-AZ NAT gateway serves private subnets across multiple Availability Zones — single point of failure for cross-AZ egress
|
package/dist/okf/types/Subnet.md
CHANGED
|
@@ -42,3 +42,5 @@ resource_type: AWS::EC2::Subnet
|
|
|
42
42
|
## Governed by
|
|
43
43
|
|
|
44
44
|
- [WAW061](/rules/WAW061.md): Subnet CidrBlock falls outside its VPC's CidrBlock — fails at deploy time
|
|
45
|
+
- [WAW066](/rules/WAW066.md): Private subnet's route table has no default route, or its default route targets a gateway that does not exist in the template
|
|
46
|
+
- [WAW067](/rules/WAW067.md): A single-AZ NAT gateway serves private subnets across multiple Availability Zones — single point of failure for cross-AZ egress
|
|
@@ -17,3 +17,8 @@ resource_type: AWS::EC2::SubnetRouteTableAssociation
|
|
|
17
17
|
## Attributes
|
|
18
18
|
|
|
19
19
|
- `Id`
|
|
20
|
+
|
|
21
|
+
## Governed by
|
|
22
|
+
|
|
23
|
+
- [WAW066](/rules/WAW066.md): Private subnet's route table has no default route, or its default route targets a gateway that does not exist in the template
|
|
24
|
+
- [WAW067](/rules/WAW067.md): A single-AZ NAT gateway serves private subnets across multiple Availability Zones — single point of failure for cross-AZ egress
|
package/dist/okf/types/Table.md
CHANGED
|
@@ -44,3 +44,6 @@ resource_type: AWS::DynamoDB::Table
|
|
|
44
44
|
- [WAW030](/rules/WAW030.md): Missing DependsOn for known CloudFormation ordering patterns
|
|
45
45
|
- [WAW059](/rules/WAW059.md): Wildcard Resource where the declared graph enumerates the touched set — tighten to the consumers' declared Arns
|
|
46
46
|
- [WAW062](/rules/WAW062.md): Duplicate export name or explicit resource name within a template — fails at deploy time
|
|
47
|
+
- [WAW064](/rules/WAW064.md): Transit Gateway route table declares a Blackhole route — confirm the traffic drop is intentional, not an accident
|
|
48
|
+
- [WAW065](/rules/WAW065.md): Transit Gateway route table has associations but no propagations, or an attachment wired into no route table
|
|
49
|
+
- [WAW066](/rules/WAW066.md): Private subnet's route table has no default route, or its default route targets a gateway that does not exist in the template
|
|
@@ -33,3 +33,9 @@ resource_type: AWS::EC2::TransitGateway
|
|
|
33
33
|
- `EncryptionSupportState`
|
|
34
34
|
- `Id`
|
|
35
35
|
- `TransitGatewayArn`
|
|
36
|
+
|
|
37
|
+
## Governed by
|
|
38
|
+
|
|
39
|
+
- [WAW064](/rules/WAW064.md): Transit Gateway route table declares a Blackhole route — confirm the traffic drop is intentional, not an accident
|
|
40
|
+
- [WAW065](/rules/WAW065.md): Transit Gateway route table has associations but no propagations, or an attachment wired into no route table
|
|
41
|
+
- [WAW068](/rules/WAW068.md): VPN Gateway or Transit Gateway has only one attached VPN Connection — no redundant path for hybrid connectivity
|