@go-to-k/cdkd 0.243.0 → 0.245.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/cli.js +1141 -20
- package/dist/cli.js.map +1 -1
- package/dist/{deploy-engine-DNqZHDA5.js → deploy-engine-Ci_7Y2ol.js} +100 -17
- package/dist/{deploy-engine-DNqZHDA5.js.map → deploy-engine-Ci_7Y2ol.js.map} +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +3 -1
|
@@ -9335,10 +9335,8 @@ const NON_PROVISIONABLE_TYPES = new Set([
|
|
|
9335
9335
|
"AWS::ElastiCache::SecurityGroupIngress",
|
|
9336
9336
|
"AWS::ElasticLoadBalancingV2::ListenerCertificate",
|
|
9337
9337
|
"AWS::Elasticsearch::Domain",
|
|
9338
|
-
"AWS::EMR::Cluster",
|
|
9339
9338
|
"AWS::EMR::InstanceFleetConfig",
|
|
9340
9339
|
"AWS::EMR::InstanceGroupConfig",
|
|
9341
|
-
"AWS::FSx::FileSystem",
|
|
9342
9340
|
"AWS::FSx::Snapshot",
|
|
9343
9341
|
"AWS::FSx::StorageVirtualMachine",
|
|
9344
9342
|
"AWS::FSx::Volume",
|
|
@@ -9428,6 +9426,7 @@ const NON_PROVISIONABLE_TYPES = new Set([
|
|
|
9428
9426
|
"AWS::SageMaker::MonitoringScheduleAlert",
|
|
9429
9427
|
"AWS::SageMaker::NotebookInstance",
|
|
9430
9428
|
"AWS::SageMaker::NotebookInstanceLifecycleConfig",
|
|
9429
|
+
"AWS::SageMaker::TransformJob",
|
|
9431
9430
|
"AWS::SageMaker::Workteam",
|
|
9432
9431
|
"AWS::SDB::Domain",
|
|
9433
9432
|
"AWS::ServiceDiscovery::Instance",
|
|
@@ -11901,6 +11900,38 @@ const PROPERTY_COVERAGE_BY_TYPE = new Map([
|
|
|
11901
11900
|
["Targets", "not yet implemented by cdkd"]
|
|
11902
11901
|
])
|
|
11903
11902
|
}],
|
|
11903
|
+
["AWS::EMR::Cluster", {
|
|
11904
|
+
handled: new Set([
|
|
11905
|
+
"AdditionalInfo",
|
|
11906
|
+
"Applications",
|
|
11907
|
+
"AutoScalingRole",
|
|
11908
|
+
"AutoTerminationPolicy",
|
|
11909
|
+
"BootstrapActions",
|
|
11910
|
+
"Configurations",
|
|
11911
|
+
"CustomAmiId",
|
|
11912
|
+
"EbsRootVolumeIops",
|
|
11913
|
+
"EbsRootVolumeSize",
|
|
11914
|
+
"EbsRootVolumeThroughput",
|
|
11915
|
+
"Instances",
|
|
11916
|
+
"JobFlowRole",
|
|
11917
|
+
"KerberosAttributes",
|
|
11918
|
+
"LogEncryptionKmsKeyId",
|
|
11919
|
+
"LogUri",
|
|
11920
|
+
"ManagedScalingPolicy",
|
|
11921
|
+
"Name",
|
|
11922
|
+
"OSReleaseLabel",
|
|
11923
|
+
"PlacementGroupConfigs",
|
|
11924
|
+
"ReleaseLabel",
|
|
11925
|
+
"ScaleDownBehavior",
|
|
11926
|
+
"SecurityConfiguration",
|
|
11927
|
+
"ServiceRole",
|
|
11928
|
+
"StepConcurrencyLevel",
|
|
11929
|
+
"Steps",
|
|
11930
|
+
"Tags",
|
|
11931
|
+
"VisibleToAllUsers"
|
|
11932
|
+
]),
|
|
11933
|
+
silentDrop: /* @__PURE__ */ new Map()
|
|
11934
|
+
}],
|
|
11904
11935
|
["AWS::Events::EventBus", {
|
|
11905
11936
|
handled: new Set([
|
|
11906
11937
|
"DeadLetterConfig",
|
|
@@ -11928,6 +11959,26 @@ const PROPERTY_COVERAGE_BY_TYPE = new Map([
|
|
|
11928
11959
|
]),
|
|
11929
11960
|
silentDrop: /* @__PURE__ */ new Map()
|
|
11930
11961
|
}],
|
|
11962
|
+
["AWS::FSx::FileSystem", {
|
|
11963
|
+
handled: new Set([
|
|
11964
|
+
"BackupId",
|
|
11965
|
+
"FileSystemType",
|
|
11966
|
+
"FileSystemTypeVersion",
|
|
11967
|
+
"KmsKeyId",
|
|
11968
|
+
"LustreConfiguration",
|
|
11969
|
+
"NetworkType",
|
|
11970
|
+
"SecurityGroupIds",
|
|
11971
|
+
"StorageCapacity",
|
|
11972
|
+
"StorageType",
|
|
11973
|
+
"SubnetIds",
|
|
11974
|
+
"Tags"
|
|
11975
|
+
]),
|
|
11976
|
+
silentDrop: new Map([
|
|
11977
|
+
["OntapConfiguration", "FSx for NetApp ONTAP variant — the file system is only a container for SVMs/volumes (separate AWS::FSx::StorageVirtualMachine / AWS::FSx::Volume types, both still unsupported), so shipping it alone would be misleading; only the Lustre variant is supported in v1. Follow-up to issue #1042."],
|
|
11978
|
+
["OpenZFSConfiguration", "FSx for OpenZFS variant — root-volume semantics (RootVolumeId, child AWS::FSx::Volume trees) are not implemented in v1; only the Lustre variant is supported. Follow-up to issue #1042."],
|
|
11979
|
+
["WindowsConfiguration", "FSx for Windows File Server variant — requires Active Directory wiring and Windows-specific update/delete semantics (final backups, throughput tiers) that v1 does not implement; only the Lustre variant (the CDK L2) is supported. Follow-up to issue #1042."]
|
|
11980
|
+
])
|
|
11981
|
+
}],
|
|
11931
11982
|
["AWS::Glue::Connection", {
|
|
11932
11983
|
handled: new Set(["CatalogId", "ConnectionInput"]),
|
|
11933
11984
|
silentDrop: /* @__PURE__ */ new Map()
|
|
@@ -12957,7 +13008,11 @@ function findActionableSilentDrops(resourceType, templateProperties, allowedKeys
|
|
|
12957
13008
|
* 3. SDK Provider registered, no silent-drop properties (after the
|
|
12958
13009
|
* `--allow-unsupported-properties` override filter) → SDK Provider.
|
|
12959
13010
|
* 4. SDK Provider registered, silent-drop properties present, NOT all
|
|
12960
|
-
* in the allow set → Cloud Control (auto-route, info-logged).
|
|
13011
|
+
* in the allow set → Cloud Control (auto-route, info-logged). When the
|
|
13012
|
+
* CC route is NOT viable — the type is `NON_PROVISIONABLE` (no CC
|
|
13013
|
+
* handlers, e.g. AWS::FSx::FileSystem) or the provider sets
|
|
13014
|
+
* `disableCcApiFallback` (e.g. NestedStackProvider) — throw the clear
|
|
13015
|
+
* pre-flight error instead of failing opaquely at provisioning time.
|
|
12961
13016
|
* 5. SDK Provider registered, silent-drop properties present, ALL in
|
|
12962
13017
|
* the allow set → SDK Provider (the user explicitly accepted the
|
|
12963
13018
|
* silent drop, warn-logged).
|
|
@@ -12965,10 +13020,12 @@ function findActionableSilentDrops(resourceType, templateProperties, allowedKeys
|
|
|
12965
13020
|
* 7. `--allow-unsupported-types` escape hatch → Cloud Control optimistically.
|
|
12966
13021
|
* 8. Otherwise → throw (no provider available).
|
|
12967
13022
|
*
|
|
12968
|
-
* Tier 3 (`NON_PROVISIONABLE`) types are rejected earlier
|
|
12969
|
-
* {@link validateResourceTypes}
|
|
12970
|
-
*
|
|
12971
|
-
*
|
|
13023
|
+
* SDK-provider-less Tier 3 (`NON_PROVISIONABLE`) types are rejected earlier
|
|
13024
|
+
* by {@link validateResourceTypes}. A Tier 1 type that is ALSO
|
|
13025
|
+
* NON_PROVISIONABLE (SDK provider registered for a type Cloud Control cannot
|
|
13026
|
+
* manage — e.g. AWS::FSx::FileSystem, AWS::DLM::LifecyclePolicy) passes the
|
|
13027
|
+
* type check but has no viable CC auto-route; rule 4's viability guard turns
|
|
13028
|
+
* that case into a clear pre-flight error.
|
|
12972
13029
|
*/
|
|
12973
13030
|
/**
|
|
12974
13031
|
* Types exempt from the sticky `provisionedBy: 'cc-api'` routing rule.
|
|
@@ -13103,6 +13160,7 @@ var ProviderRegistry = class {
|
|
|
13103
13160
|
provisionedBy: "sdk"
|
|
13104
13161
|
};
|
|
13105
13162
|
}
|
|
13163
|
+
if (isNonProvisionable(resourceType) || specificProvider.disableCcApiFallback === true) throw new Error(this.buildUnroutableSilentDropMessage(resourceType, actionableDrops));
|
|
13106
13164
|
this.logger.debug(`Auto-routing ${resourceType} via Cloud Control (silent-drop properties: ${actionableDrops.map((d) => d.property).join(", ")})`);
|
|
13107
13165
|
return {
|
|
13108
13166
|
provider: this.cloudControlProvider,
|
|
@@ -13127,6 +13185,21 @@ var ProviderRegistry = class {
|
|
|
13127
13185
|
throw new Error(`No provider available for resource type: ${resourceType}. This resource type is not supported by Cloud Control API and no SDK provider is registered.`);
|
|
13128
13186
|
}
|
|
13129
13187
|
/**
|
|
13188
|
+
* Error message for a resource whose template uses SDK-provider-unhandled
|
|
13189
|
+
* properties on a type where the Cloud Control auto-route (issue #614) is
|
|
13190
|
+
* NOT viable — `ProvisioningType: NON_PROVISIONABLE` (no CC handlers) or a
|
|
13191
|
+
* provider-level `disableCcApiFallback` opt-out. Includes each property's
|
|
13192
|
+
* `unhandledByDesign` rationale so the user sees WHY it is unhandled, plus
|
|
13193
|
+
* the `--allow-unsupported-properties` escape hatch (which forces the SDK
|
|
13194
|
+
* path and accepts the drop — the provider may still reject the resource
|
|
13195
|
+
* if the property is load-bearing, e.g. a non-Lustre FSx variant config).
|
|
13196
|
+
*/
|
|
13197
|
+
buildUnroutableSilentDropMessage(resourceType, drops) {
|
|
13198
|
+
const details = drops.map((d) => ` - ${d.property}: ${d.rationale}`).join("\n");
|
|
13199
|
+
const overrideHint = drops.map((d) => `${resourceType}:${d.property}`).join(",");
|
|
13200
|
+
return `${resourceType} uses properties cdkd's SDK Provider does not handle, and this type cannot fall back to Cloud Control API (${isNonProvisionable(resourceType) ? "ProvisioningType: NON_PROVISIONABLE — Cloud Control has no handlers for it" : "the type's SDK provider opts out of the Cloud Control fallback (disableCcApiFallback)"}):\n${details}\nRemove the properties, or force the SDK provider path and accept the drop via --allow-unsupported-properties ${overrideHint} (the provider may still reject the resource if the property is required).`;
|
|
13201
|
+
}
|
|
13202
|
+
/**
|
|
13130
13203
|
* Legacy entry point that returns just the provider. Delegates to
|
|
13131
13204
|
* {@link getProviderFor} with no properties / no state-recorded layer —
|
|
13132
13205
|
* which means silent-drop auto-routing CANNOT fire (no template to
|
|
@@ -13204,14 +13277,17 @@ var ProviderRegistry = class {
|
|
|
13204
13277
|
/**
|
|
13205
13278
|
* Walk every resource in the template and identify top-level CFn
|
|
13206
13279
|
* properties cdkd's SDK provider would silently drop on write. As of
|
|
13207
|
-
* issue [#614](https://github.com/go-to-k/cdkd/issues/614),
|
|
13208
|
-
*
|
|
13209
|
-
*
|
|
13210
|
-
* is retained on the name `validateResourceProperties` so existing deploy
|
|
13211
|
-
* call sites continue to work; it now emits info-level routing decisions
|
|
13280
|
+
* issue [#614](https://github.com/go-to-k/cdkd/issues/614), silent drops
|
|
13281
|
+
* auto-route the resource through Cloud Control API by default (see
|
|
13282
|
+
* {@link getProviderFor}) — the method emits info-level routing decisions
|
|
13212
13283
|
* for each silent-drop resource, plus warn-level lines for resources
|
|
13213
13284
|
* where the user explicitly opted into the silent drop via
|
|
13214
|
-
* `--allow-unsupported-properties`.
|
|
13285
|
+
* `--allow-unsupported-properties`. The ONE remaining throw path is the
|
|
13286
|
+
* CC-route viability guard: when the auto-route target cannot manage the
|
|
13287
|
+
* type (`NON_PROVISIONABLE` or a provider-level `disableCcApiFallback`
|
|
13288
|
+
* opt-out — e.g. AWS::FSx::FileSystem's Windows/ONTAP/OpenZFS blocks),
|
|
13289
|
+
* this rejects pre-flight with a clear per-property error instead of
|
|
13290
|
+
* letting provisioning fail opaquely.
|
|
13215
13291
|
*
|
|
13216
13292
|
* Must be called AFTER {@link validateResourceTypes} — type-level errors
|
|
13217
13293
|
* are still hard rejects. For a type allowed via `--allow-unsupported-types`,
|
|
@@ -13228,11 +13304,13 @@ var ProviderRegistry = class {
|
|
|
13228
13304
|
* Info-log every silent-drop routing decision (auto-route via CC API) and
|
|
13229
13305
|
* warn-log every silent drop the user explicitly opted into via
|
|
13230
13306
|
* `--allow-unsupported-properties` (forced SDK path, the property will
|
|
13231
|
-
* be dropped).
|
|
13307
|
+
* be dropped). Does not mutate state; throws ONLY for the CC-route
|
|
13308
|
+
* viability guard (un-allowed silent drops on a type Cloud Control cannot
|
|
13309
|
+
* manage — see {@link buildUnroutableSilentDropMessage}).
|
|
13232
13310
|
*
|
|
13233
13311
|
* Issue [#614](https://github.com/go-to-k/cdkd/issues/614). Replaces the
|
|
13234
13312
|
* pre-v0.16x throw path: silent drops are now a routing signal, not an
|
|
13235
|
-
* error.
|
|
13313
|
+
* error (except the viability guard above).
|
|
13236
13314
|
*
|
|
13237
13315
|
* When the optional `provisionedBy` (from existing state) is `'cc-api'`,
|
|
13238
13316
|
* the auto-route info line is demoted to `debug` — the resource has been
|
|
@@ -13255,6 +13333,8 @@ var ProviderRegistry = class {
|
|
|
13255
13333
|
else autoRouted.push(property);
|
|
13256
13334
|
}
|
|
13257
13335
|
if (autoRouted.length > 0) {
|
|
13336
|
+
const provider = this.providers.get(resourceType);
|
|
13337
|
+
if (isNonProvisionable(resourceType) || provider?.disableCcApiFallback === true) throw new Error(`${logicalId}: ${this.buildUnroutableSilentDropMessage(resourceType, drops.filter((d) => autoRouted.includes(d.property)))}`);
|
|
13258
13338
|
const message = `${logicalId} (${resourceType}): routing via Cloud Control API (cdkd's SDK Provider does not yet wire ${autoRouted.join(", ")} — CC API will forward the full property map. Override via --allow-unsupported-properties ${autoRouted.map((p) => `${resourceType}:${p}`).join(",")}.)`;
|
|
13259
13339
|
if (provisionedBy === "cc-api") this.logger.debug(message);
|
|
13260
13340
|
else this.logger.info(message);
|
|
@@ -14012,6 +14092,7 @@ const STATEFUL_TYPES = new Set([
|
|
|
14012
14092
|
"AWS::DynamoDB::Table",
|
|
14013
14093
|
"AWS::DynamoDB::GlobalTable",
|
|
14014
14094
|
"AWS::EFS::FileSystem",
|
|
14095
|
+
"AWS::FSx::FileSystem",
|
|
14015
14096
|
"AWS::S3::Bucket",
|
|
14016
14097
|
"AWS::ECR::Repository",
|
|
14017
14098
|
"AWS::Kinesis::Stream",
|
|
@@ -14395,6 +14476,7 @@ const RETRYABLE_ERROR_MESSAGE_PATTERNS = [
|
|
|
14395
14476
|
"KMS key is invalid for CreateGrant",
|
|
14396
14477
|
"Policy contains a statement with one or more invalid principals",
|
|
14397
14478
|
"Invalid IAM Instance Profile",
|
|
14479
|
+
"Invalid InstanceProfile",
|
|
14398
14480
|
"Could not deliver test message",
|
|
14399
14481
|
"wait 60 seconds",
|
|
14400
14482
|
"concurrent update operation",
|
|
@@ -15826,11 +15908,12 @@ var DeployEngine = class {
|
|
|
15826
15908
|
} else throw updateError;
|
|
15827
15909
|
}
|
|
15828
15910
|
if (result.wasReplaced) this.logger.info(`Resource ${logicalId} was replaced: ${currentResource.physicalId} -> ${result.physicalId}`);
|
|
15911
|
+
const carriedAttributes = result.attributes ?? (result.wasReplaced ? void 0 : currentResource.attributes);
|
|
15829
15912
|
stateResources[logicalId] = {
|
|
15830
15913
|
physicalId: result.physicalId,
|
|
15831
15914
|
resourceType,
|
|
15832
15915
|
properties: resolvedProps,
|
|
15833
|
-
...
|
|
15916
|
+
...carriedAttributes && { attributes: carriedAttributes },
|
|
15834
15917
|
...dependencies && dependencies.length > 0 && { dependencies },
|
|
15835
15918
|
...this.extractTemplateAttributes(template, logicalId),
|
|
15836
15919
|
provisionedBy: resultProvisionedBy
|
|
@@ -16092,4 +16175,4 @@ var DeployEngine = class {
|
|
|
16092
16175
|
|
|
16093
16176
|
//#endregion
|
|
16094
16177
|
export { getDockerCmd as $, DiffCalculator as A, buildAssetRedirectMap as B, findActionableSilentDrops as C, resolveBucketRegion as Ct, refStateLookupFromResource as D, cfnRefValueFromPhysicalId as E, rebuildClientForBucketRegion as F, BOOTSTRAP_MARKER_PREFIX as G, loadPublishableAssetManifest as H, shouldRetainResource as I, parseBootstrapMarker as J, ensureAssetStorage as K, AssetPublisher as L, TemplateParser as M, LockManager as N, WAFv2WebACLProvider as O, S3StateBackend as P, formatDockerLoginError as Q, stringifyValue as R, ProviderRegistry as S, clearBucketRegionCache as St, IntrinsicFunctionResolver as T, rewriteTemplateAssetReferences as U, createAssetRedirectResolver as V, AssetModeResolver as W, validateContainerRepoName as X, validateAssetBucketName as Y, buildDockerImage as Z, green as _, CFN_TEMPLATE_URL_LIMIT as _t, withRetry as a, synthesisStatusMessage as at, IAMRoleProvider as b, uploadCfnTemplate as bt, computeImplicitDeleteEdges as c, resolveApp as ct, isStatefulRecreateTargetSync as d, resolveSkipPrefix as dt, runDockerForeground as et, renderStatefulReason as f, resolveStateBucketWithDefault as ft, gray as g, CFN_TEMPLATE_BODY_LIMIT as gt, cyan as h, warnDeprecatedNoPrefixCliFlag as ht, withResourceDeadline as i, Synthesizer as it, DagBuilder as j, applyRoleArnIfSet as k, extractDeploymentEventError as l, resolveAutoAssetStorage as lt, bold as m, resolveUseCdkBootstrapAssets as mt, DEFAULT_RESOURCE_WARN_AFTER_MS as n, AssetManifestLoader as nt, isRetryableTransientError as o, getDefaultStateBucketName as ot, formatResourceLine as p, resolveStateBucketWithDefaultAndSource as pt, getBootstrapMarkerKey as q, DeployEngine as r, getDockerImageBySourceHash as rt, IMPLICIT_DELETE_DEPENDENCIES as s, getLegacyStateBucketName as st, DEFAULT_RESOURCE_TIMEOUT_MS as t, runDockerStreaming as tt, MULTI_REGION_RECREATE_BLOCKED_TYPES as u, resolveCaptureObservedState as ut, red as v, MIGRATE_TMP_PREFIX as vt, CloudControlProvider as w, collectInlinePolicyNamesManagedBySiblings as x, AssemblyReader as xt, yellow as y, findLargeInlineResources as yt, WorkGraph as z };
|
|
16095
|
-
//# sourceMappingURL=deploy-engine-
|
|
16178
|
+
//# sourceMappingURL=deploy-engine-Ci_7Y2ol.js.map
|