@go-to-k/cdkd 0.267.11 → 0.267.13
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/{asg-provider-CKDQjSTS.js → asg-provider-CYG6Bl7y.js} +2 -2
- package/dist/{asg-provider-CKDQjSTS.js.map → asg-provider-CYG6Bl7y.js.map} +1 -1
- package/dist/cli.js +115 -24
- package/dist/cli.js.map +1 -1
- package/dist/{deploy-engine-ChJTdrUr.js → deploy-engine-D1M5yCxb.js} +3 -3
- package/dist/{deploy-engine-ChJTdrUr.js.map → deploy-engine-D1M5yCxb.js.map} +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { $ as WorkGraph, $t as NestedStackChildDirectDestroyError, A as slowCcOperationTimeoutMs, At as CFN_TEMPLATE_BODY_LIMIT, B as applyRoleArnIfSet, Bt as AwsClients, C as yellow, Ct as resolveAutoAssetStorage, D as ProviderRegistry, Dt as resolveStateBucketWithDefaultAndSource, E as clearOnUpdateRemoval, Et as resolveStateBucketWithDefault, F as refStateLookupFromResource, Ft as expectedOwnerParam, G as DagBuilder, Gt as CdkdError, H as describeTypeWithThrottleRetry, Ht as resetAwsClients, I as WAFv2WebACLProvider, It as AssemblyReader, J as S3StateBackend, Jt as LocalInvokeBuildError$1, K as TemplateParser, L as normalizeAwsTagsToCfn, Lt as processStackMessages, M as isTerminationProtectionPropagationError, Mt as MIGRATE_TMP_PREFIX, N as IntrinsicFunctionResolver, Nt as findLargeInlineResources, O as findActionableSilentDrops, Ot as resolveUseCdkBootstrapAssets, P as cfnRefValueFromPhysicalId, Pt as uploadCfnTemplate, Q as stringifyValue, Qt as MissingCdkCliError, R as resolveExplicitPhysicalId, S as red, St as resolveApp, T as collectInlinePolicyNamesManagedBySiblings, Tt as resolveSkipPrefix, U as withRetry, Ut as setAwsClients, V as DiffCalculator, Vt as getAwsClients, W as isRetryableTransientError, X as shouldRetainResource, Xt as LocalStartServiceError, Y as rebuildClientForBucketRegion, Yt as LocalMigrateError, Z as AssetPublisher, _ as formatResourceLine, _t as getDockerImageBySourceHash, a as DeploymentEventsStore, an as StackTerminationProtectionError, at as BOOTSTRAP_MARKER_PREFIX, b as gray, bt as getDefaultStateBucketName, c as replayFailedOperations, ct as parseBootstrapMarker, d as IMPLICIT_DELETE_DEPENDENCIES, dn as withErrorHandling, dt as buildDockerImage, en as PartialFailureError, et as buildAssetRedirectMap, f as computeImplicitDeleteEdges, ft as formatDockerLoginError, g as renderStatefulReason, gt as AssetManifestLoader, h as isStatefulRecreateTargetSync, ht as runDockerStreaming, i as DeploymentEventsReader, in as StackHasActiveImportsError, it as AssetModeResolver, j as disableInstanceApiTermination, jt as CFN_TEMPLATE_URL_LIMIT, k as CloudControlProvider, kt as warnDeprecatedNoPrefixCliFlag, l as replayRollback, lt as validateAssetBucketName, m as MULTI_REGION_RECREATE_BLOCKED_TYPES, mt as runDockerForeground, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nn as ResourceTimeoutError, nt as loadPublishableAssetManifest, o as planFailedOps, ot as ensureAssetStorage, p as extractDeploymentEventError, pt as getDockerCmd, q as LockManager, r as DeployEngine, rn as ResourceUpdateNotSupportedError, rt as rewriteTemplateAssetReferences, s as planRollback, st as getBootstrapMarkerKey, t as DEFAULT_RESOURCE_TIMEOUT_MS, tn as ProvisioningError, tt as createAssetRedirectResolver, u as withResourceDeadline, un as normalizeAwsError, ut as validateContainerRepoName, v as bold, vt as Synthesizer, w as IAMRoleProvider, wt as resolveCaptureObservedState, x as green, xt as getLegacyStateBucketName, y as cyan, yt as synthesisStatusMessage, z as assertRegionMatch, zt as resolveBucketRegion } from "./deploy-engine-
|
|
2
|
+
import { $ as WorkGraph, $t as NestedStackChildDirectDestroyError, A as slowCcOperationTimeoutMs, At as CFN_TEMPLATE_BODY_LIMIT, B as applyRoleArnIfSet, Bt as AwsClients, C as yellow, Ct as resolveAutoAssetStorage, D as ProviderRegistry, Dt as resolveStateBucketWithDefaultAndSource, E as clearOnUpdateRemoval, Et as resolveStateBucketWithDefault, F as refStateLookupFromResource, Ft as expectedOwnerParam, G as DagBuilder, Gt as CdkdError, H as describeTypeWithThrottleRetry, Ht as resetAwsClients, I as WAFv2WebACLProvider, It as AssemblyReader, J as S3StateBackend, Jt as LocalInvokeBuildError$1, K as TemplateParser, L as normalizeAwsTagsToCfn, Lt as processStackMessages, M as isTerminationProtectionPropagationError, Mt as MIGRATE_TMP_PREFIX, N as IntrinsicFunctionResolver, Nt as findLargeInlineResources, O as findActionableSilentDrops, Ot as resolveUseCdkBootstrapAssets, P as cfnRefValueFromPhysicalId, Pt as uploadCfnTemplate, Q as stringifyValue, Qt as MissingCdkCliError, R as resolveExplicitPhysicalId, S as red, St as resolveApp, T as collectInlinePolicyNamesManagedBySiblings, Tt as resolveSkipPrefix, U as withRetry, Ut as setAwsClients, V as DiffCalculator, Vt as getAwsClients, W as isRetryableTransientError, X as shouldRetainResource, Xt as LocalStartServiceError, Y as rebuildClientForBucketRegion, Yt as LocalMigrateError, Z as AssetPublisher, _ as formatResourceLine, _t as getDockerImageBySourceHash, a as DeploymentEventsStore, an as StackTerminationProtectionError, at as BOOTSTRAP_MARKER_PREFIX, b as gray, bt as getDefaultStateBucketName, c as replayFailedOperations, ct as parseBootstrapMarker, d as IMPLICIT_DELETE_DEPENDENCIES, dn as withErrorHandling, dt as buildDockerImage, en as PartialFailureError, et as buildAssetRedirectMap, f as computeImplicitDeleteEdges, ft as formatDockerLoginError, g as renderStatefulReason, gt as AssetManifestLoader, h as isStatefulRecreateTargetSync, ht as runDockerStreaming, i as DeploymentEventsReader, in as StackHasActiveImportsError, it as AssetModeResolver, j as disableInstanceApiTermination, jt as CFN_TEMPLATE_URL_LIMIT, k as CloudControlProvider, kt as warnDeprecatedNoPrefixCliFlag, l as replayRollback, lt as validateAssetBucketName, m as MULTI_REGION_RECREATE_BLOCKED_TYPES, mt as runDockerForeground, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nn as ResourceTimeoutError, nt as loadPublishableAssetManifest, o as planFailedOps, ot as ensureAssetStorage, p as extractDeploymentEventError, pt as getDockerCmd, q as LockManager, r as DeployEngine, rn as ResourceUpdateNotSupportedError, rt as rewriteTemplateAssetReferences, s as planRollback, st as getBootstrapMarkerKey, t as DEFAULT_RESOURCE_TIMEOUT_MS, tn as ProvisioningError, tt as createAssetRedirectResolver, u as withResourceDeadline, un as normalizeAwsError, ut as validateContainerRepoName, v as bold, vt as Synthesizer, w as IAMRoleProvider, wt as resolveCaptureObservedState, x as green, xt as getLegacyStateBucketName, y as cyan, yt as synthesisStatusMessage, z as assertRegionMatch, zt as resolveBucketRegion } from "./deploy-engine-D1M5yCxb.js";
|
|
3
3
|
import { a as getLiveRenderer, c as PATTERN_B_RESOURCE_TYPES, d as generateResourceNameWithFallback, f as withSkipPrefix, i as runStackBuffered, n as getLogger, o as PATTERN_B_NAME_OPTIONS, p as withStackName, s as PATTERN_B_NAME_PROPERTIES, u as generateResourceName } from "./logger-BYMEE-BS.js";
|
|
4
|
-
import { t as ASGProvider } from "./asg-provider-
|
|
4
|
+
import { t as ASGProvider } from "./asg-provider-CYG6Bl7y.js";
|
|
5
5
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
6
6
|
import { createHash, randomBytes, randomUUID } from "node:crypto";
|
|
7
7
|
import { CopyObjectCommand, CreateBucketCommand, DeleteBucketAnalyticsConfigurationCommand, DeleteBucketCommand, DeleteBucketCorsCommand, DeleteBucketIntelligentTieringConfigurationCommand, DeleteBucketInventoryConfigurationCommand, DeleteBucketLifecycleCommand, DeleteBucketMetricsConfigurationCommand, DeleteBucketPolicyCommand, DeleteBucketReplicationCommand, DeleteBucketTaggingCommand, DeleteBucketWebsiteCommand, DeleteObjectsCommand, GetBucketAccelerateConfigurationCommand, GetBucketCorsCommand, GetBucketEncryptionCommand, GetBucketLifecycleConfigurationCommand, GetBucketLocationCommand, GetBucketLoggingCommand, GetBucketNotificationConfigurationCommand, GetBucketPolicyCommand, GetBucketReplicationCommand, GetBucketTaggingCommand, GetBucketVersioningCommand, GetBucketWebsiteCommand, GetObjectCommand, GetObjectLockConfigurationCommand, GetPublicAccessBlockCommand, HeadBucketCommand, ListBucketAnalyticsConfigurationsCommand, ListBucketIntelligentTieringConfigurationsCommand, ListBucketInventoryConfigurationsCommand, ListBucketMetricsConfigurationsCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchBucket, PutBucketAccelerateConfigurationCommand, PutBucketAnalyticsConfigurationCommand, PutBucketCorsCommand, PutBucketEncryptionCommand, PutBucketIntelligentTieringConfigurationCommand, PutBucketInventoryConfigurationCommand, PutBucketLifecycleConfigurationCommand, PutBucketLoggingCommand, PutBucketMetricsConfigurationCommand, PutBucketNotificationConfigurationCommand, PutBucketOwnershipControlsCommand, PutBucketPolicyCommand, PutBucketReplicationCommand, PutBucketTaggingCommand, PutBucketVersioningCommand, PutBucketWebsiteCommand, PutObjectCommand, PutObjectLockConfigurationCommand, PutPublicAccessBlockCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
|
|
@@ -28060,7 +28060,7 @@ var ElastiCacheProvider = class {
|
|
|
28060
28060
|
}
|
|
28061
28061
|
async update(logicalId, physicalId, resourceType, properties, previousProperties) {
|
|
28062
28062
|
switch (resourceType) {
|
|
28063
|
-
case "AWS::ElastiCache::SubnetGroup": return this.updateSubnetGroup(logicalId, physicalId, resourceType, properties);
|
|
28063
|
+
case "AWS::ElastiCache::SubnetGroup": return this.updateSubnetGroup(logicalId, physicalId, resourceType, properties, previousProperties);
|
|
28064
28064
|
case "AWS::ElastiCache::CacheCluster": return this.updateCacheCluster(logicalId, physicalId, resourceType, properties, previousProperties);
|
|
28065
28065
|
default: throw new ProvisioningError(`Unsupported resource type: ${resourceType}`, resourceType, logicalId, physicalId);
|
|
28066
28066
|
}
|
|
@@ -28094,12 +28094,12 @@ var ElastiCacheProvider = class {
|
|
|
28094
28094
|
throw new ProvisioningError(`Failed to create CacheSubnetGroup ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, cacheSubnetGroupName, cause);
|
|
28095
28095
|
}
|
|
28096
28096
|
}
|
|
28097
|
-
async updateSubnetGroup(logicalId, physicalId, resourceType, properties) {
|
|
28097
|
+
async updateSubnetGroup(logicalId, physicalId, resourceType, properties, previousProperties) {
|
|
28098
28098
|
this.logger.debug(`Updating CacheSubnetGroup ${logicalId}: ${physicalId}`);
|
|
28099
28099
|
try {
|
|
28100
28100
|
await this.getClient().send(new ModifyCacheSubnetGroupCommand({
|
|
28101
28101
|
CacheSubnetGroupName: physicalId,
|
|
28102
|
-
CacheSubnetGroupDescription: properties["Description"] ?? properties["CacheSubnetGroupDescription"],
|
|
28102
|
+
CacheSubnetGroupDescription: clearOnUpdateRemoval(properties["Description"] ?? properties["CacheSubnetGroupDescription"], previousProperties["Description"] ?? previousProperties["CacheSubnetGroupDescription"], `Subnet group for ${logicalId}`),
|
|
28103
28103
|
SubnetIds: properties["SubnetIds"]
|
|
28104
28104
|
}));
|
|
28105
28105
|
this.logger.debug(`Successfully updated CacheSubnetGroup ${logicalId}`);
|
|
@@ -28189,6 +28189,8 @@ var ElastiCacheProvider = class {
|
|
|
28189
28189
|
try {
|
|
28190
28190
|
const rawSgIds = properties["VpcSecurityGroupIds"];
|
|
28191
28191
|
const sgIds = rawSgIds && rawSgIds.length > 0 ? rawSgIds : void 0;
|
|
28192
|
+
const notificationTopicArn = properties["NotificationTopicArn"];
|
|
28193
|
+
const notificationRemoved = notificationTopicArn === void 0 && previousProperties["NotificationTopicArn"] != null;
|
|
28192
28194
|
await this.getClient().send(new ModifyCacheClusterCommand({
|
|
28193
28195
|
CacheClusterId: physicalId,
|
|
28194
28196
|
NumCacheNodes: properties["NumCacheNodes"] != null ? Number(properties["NumCacheNodes"]) : void 0,
|
|
@@ -28196,11 +28198,13 @@ var ElastiCacheProvider = class {
|
|
|
28196
28198
|
CacheParameterGroupName: properties["CacheParameterGroupName"],
|
|
28197
28199
|
EngineVersion: properties["EngineVersion"],
|
|
28198
28200
|
PreferredMaintenanceWindow: properties["PreferredMaintenanceWindow"],
|
|
28199
|
-
SnapshotRetentionLimit: properties["SnapshotRetentionLimit"] != null ? Number(properties["SnapshotRetentionLimit"]) : void 0,
|
|
28201
|
+
SnapshotRetentionLimit: clearOnUpdateRemoval(properties["SnapshotRetentionLimit"] != null ? Number(properties["SnapshotRetentionLimit"]) : void 0, previousProperties["SnapshotRetentionLimit"] != null ? Number(previousProperties["SnapshotRetentionLimit"]) : void 0, 0),
|
|
28200
28202
|
SnapshotWindow: properties["SnapshotWindow"],
|
|
28201
|
-
AutoMinorVersionUpgrade: properties["AutoMinorVersionUpgrade"],
|
|
28202
|
-
NotificationTopicArn:
|
|
28203
|
-
|
|
28203
|
+
AutoMinorVersionUpgrade: clearOnUpdateRemoval(properties["AutoMinorVersionUpgrade"], previousProperties["AutoMinorVersionUpgrade"], true),
|
|
28204
|
+
NotificationTopicArn: notificationTopicArn,
|
|
28205
|
+
...notificationRemoved && { NotificationTopicStatus: "inactive" },
|
|
28206
|
+
...notificationTopicArn !== void 0 && { NotificationTopicStatus: "active" },
|
|
28207
|
+
LogDeliveryConfigurations: this.buildLogDeliveryConfigurationsForUpdate(properties["LogDeliveryConfigurations"], previousProperties["LogDeliveryConfigurations"]),
|
|
28204
28208
|
IpDiscovery: properties["IpDiscovery"],
|
|
28205
28209
|
ApplyImmediately: true
|
|
28206
28210
|
}));
|
|
@@ -28246,6 +28250,30 @@ var ElastiCacheProvider = class {
|
|
|
28246
28250
|
}
|
|
28247
28251
|
}
|
|
28248
28252
|
/**
|
|
28253
|
+
* Build the `LogDeliveryConfigurations` input for ModifyCacheCluster so a
|
|
28254
|
+
* log type REMOVED from the template is explicitly disabled (issue #1160).
|
|
28255
|
+
*
|
|
28256
|
+
* ModifyCacheCluster applies each request entry to ONLY its own LogType
|
|
28257
|
+
* (per-entry merge semantics), so both a whole-property removal and a
|
|
28258
|
+
* per-entry removal would silently keep the live delivery config. The
|
|
28259
|
+
* documented disable sentinel is `{ LogType, Enabled: false }`
|
|
28260
|
+
* (LogDeliveryConfigurationRequest doc: "Specify if log delivery is
|
|
28261
|
+
* enabled. Default true."). Kept / added entries pass through unchanged;
|
|
28262
|
+
* previously-configured log types missing from the new template get a
|
|
28263
|
+
* disable entry appended. Returns `undefined` when there is nothing to
|
|
28264
|
+
* send (no change).
|
|
28265
|
+
*/
|
|
28266
|
+
buildLogDeliveryConfigurationsForUpdate(newConfigs, previousConfigs) {
|
|
28267
|
+
const kept = newConfigs ?? [];
|
|
28268
|
+
const keptLogTypes = new Set(kept.map((c) => c.LogType).filter((t) => t !== void 0));
|
|
28269
|
+
const disables = (previousConfigs ?? []).filter((c) => c.LogType !== void 0 && !keptLogTypes.has(c.LogType)).map((c) => ({
|
|
28270
|
+
LogType: c.LogType,
|
|
28271
|
+
Enabled: false
|
|
28272
|
+
}));
|
|
28273
|
+
const merged = [...kept, ...disables];
|
|
28274
|
+
return merged.length > 0 ? merged : void 0;
|
|
28275
|
+
}
|
|
28276
|
+
/**
|
|
28249
28277
|
* Apply a diff between old and new CFn-shape Tags arrays via ElastiCache's
|
|
28250
28278
|
* `AddTagsToResource` / `RemoveTagsFromResource` APIs (keyed by
|
|
28251
28279
|
* `ResourceName=arn`).
|
|
@@ -28389,7 +28417,7 @@ var ElastiCacheProvider = class {
|
|
|
28389
28417
|
if (cluster.SnapshotRetentionLimit !== void 0) result["SnapshotRetentionLimit"] = cluster.SnapshotRetentionLimit;
|
|
28390
28418
|
if (cluster.SnapshotWindow !== void 0) result["SnapshotWindow"] = cluster.SnapshotWindow;
|
|
28391
28419
|
if (cluster.AutoMinorVersionUpgrade !== void 0) result["AutoMinorVersionUpgrade"] = cluster.AutoMinorVersionUpgrade;
|
|
28392
|
-
if (cluster.NotificationConfiguration?.TopicArn !== void 0) result["NotificationTopicArn"] = cluster.NotificationConfiguration.TopicArn;
|
|
28420
|
+
if (cluster.NotificationConfiguration?.TopicArn !== void 0 && cluster.NotificationConfiguration.TopicStatus !== "inactive") result["NotificationTopicArn"] = cluster.NotificationConfiguration.TopicArn;
|
|
28393
28421
|
if (cluster.IpDiscovery !== void 0) result["IpDiscovery"] = cluster.IpDiscovery;
|
|
28394
28422
|
if (cluster.NetworkType !== void 0) result["NetworkType"] = cluster.NetworkType;
|
|
28395
28423
|
if (cluster.Engine === "redis" && cluster.TransitEncryptionEnabled !== void 0) result["TransitEncryptionEnabled"] = cluster.TransitEncryptionEnabled;
|
|
@@ -39363,21 +39391,83 @@ var DLMLifecyclePolicyProvider = class {
|
|
|
39363
39391
|
* Map the CFn property shape to the SDK input shape (shared by create and
|
|
39364
39392
|
* update — every field name is PascalCase-identical). `Tags` and
|
|
39365
39393
|
* `DefaultPolicy` are intentionally NOT included: create wires them
|
|
39366
|
-
* separately (update has neither parameter).
|
|
39394
|
+
* separately (update has neither parameter). `!= null` (not
|
|
39395
|
+
* `!== undefined`) so an explicit-null template value is treated as
|
|
39396
|
+
* absent instead of being passed to the SDK as `null` — matches
|
|
39397
|
+
* `buildRemovalResets`' null normalization.
|
|
39367
39398
|
*/
|
|
39368
39399
|
toSdkFields(properties) {
|
|
39369
39400
|
return {
|
|
39370
|
-
...properties["ExecutionRoleArn"]
|
|
39371
|
-
...properties["Description"]
|
|
39372
|
-
...properties["State"]
|
|
39373
|
-
...properties["PolicyDetails"]
|
|
39374
|
-
...properties["CreateInterval"]
|
|
39375
|
-
...properties["RetainInterval"]
|
|
39376
|
-
...properties["CopyTags"]
|
|
39377
|
-
...properties["ExtendDeletion"]
|
|
39378
|
-
...properties["CrossRegionCopyTargets"]
|
|
39379
|
-
...properties["Exclusions"]
|
|
39380
|
-
};
|
|
39401
|
+
...properties["ExecutionRoleArn"] != null && { ExecutionRoleArn: properties["ExecutionRoleArn"] },
|
|
39402
|
+
...properties["Description"] != null && { Description: properties["Description"] },
|
|
39403
|
+
...properties["State"] != null && { State: properties["State"] },
|
|
39404
|
+
...properties["PolicyDetails"] != null && { PolicyDetails: properties["PolicyDetails"] },
|
|
39405
|
+
...properties["CreateInterval"] != null && { CreateInterval: properties["CreateInterval"] },
|
|
39406
|
+
...properties["RetainInterval"] != null && { RetainInterval: properties["RetainInterval"] },
|
|
39407
|
+
...properties["CopyTags"] != null && { CopyTags: properties["CopyTags"] },
|
|
39408
|
+
...properties["ExtendDeletion"] != null && { ExtendDeletion: properties["ExtendDeletion"] },
|
|
39409
|
+
...properties["CrossRegionCopyTargets"] != null && { CrossRegionCopyTargets: properties["CrossRegionCopyTargets"] },
|
|
39410
|
+
...properties["Exclusions"] != null && { Exclusions: properties["Exclusions"] }
|
|
39411
|
+
};
|
|
39412
|
+
}
|
|
39413
|
+
/**
|
|
39414
|
+
* Removal resets for the default-policy shorthand fields (issue #1160).
|
|
39415
|
+
*
|
|
39416
|
+
* UpdateLifecyclePolicy uses merge semantics (live-probed 2026-07-27: an
|
|
39417
|
+
* update carrying only PolicyId retains every live value), while CFn
|
|
39418
|
+
* resets a property removed from the template to its default. Each
|
|
39419
|
+
* shorthand field is routed through `clearOnUpdateRemoval` with its
|
|
39420
|
+
* documented default — all live-probed as accepted AND applied (the
|
|
39421
|
+
* service create-defaults match: a create omitting them reads back
|
|
39422
|
+
* 1 / 7 / false / false):
|
|
39423
|
+
* CreateInterval -> 1, RetainInterval -> 7, CopyTags -> false,
|
|
39424
|
+
* ExtendDeletion -> false, CrossRegionCopyTargets -> [].
|
|
39425
|
+
* Exclusions -> the per-DefaultPolicy explicit-empty shape:
|
|
39426
|
+
* VOLUME -> { ExcludeBootVolumes: false, ExcludeVolumeTypes: [],
|
|
39427
|
+
* ExcludeTags: [] }
|
|
39428
|
+
* INSTANCE -> { ExcludeTags: [] } (the volume-only sub-fields are
|
|
39429
|
+
* rejected on IMAGE_MANAGEMENT policies — live-probed
|
|
39430
|
+
* "ExcludeBootVolumes cannot be enabled for the
|
|
39431
|
+
* following policy type {IMAGE_MANAGEMENT}")
|
|
39432
|
+
* (A KEPT-but-partial Exclusions object needs no handling: the API
|
|
39433
|
+
* replaces the whole object — live-probed, a kept object with
|
|
39434
|
+
* ExcludeTags dropped reads back ExcludeTags: [] — so pass-through is
|
|
39435
|
+
* already CFn parity at the sub-field level.)
|
|
39436
|
+
* These fields only exist on default policies, so the resets can only
|
|
39437
|
+
* fire there (a standard policy never had them in previousProperties).
|
|
39438
|
+
* Deferred with rationale:
|
|
39439
|
+
* Description — UpdateLifecyclePolicy rejects '' (live-probed
|
|
39440
|
+
* InvalidRequestException: "The following parameter(s) are invalid:
|
|
39441
|
+
* Description") and documents no clear sentinel, so there is no
|
|
39442
|
+
* wire shape that resets it; pass-through (keep live value) is the
|
|
39443
|
+
* only expressible behavior.
|
|
39444
|
+
* State / ExecutionRoleArn / PolicyDetails — required-on-create
|
|
39445
|
+
* fields with no CFn default; removal is not a meaningful template
|
|
39446
|
+
* operation for them.
|
|
39447
|
+
*/
|
|
39448
|
+
buildRemovalResets(properties, previousProperties) {
|
|
39449
|
+
const resets = {};
|
|
39450
|
+
const createInterval = clearOnUpdateRemoval(properties["CreateInterval"] != null ? Number(properties["CreateInterval"]) : void 0, previousProperties["CreateInterval"] != null ? Number(previousProperties["CreateInterval"]) : void 0, 1);
|
|
39451
|
+
if (createInterval !== void 0) resets.CreateInterval = createInterval;
|
|
39452
|
+
const retainInterval = clearOnUpdateRemoval(properties["RetainInterval"] != null ? Number(properties["RetainInterval"]) : void 0, previousProperties["RetainInterval"] != null ? Number(previousProperties["RetainInterval"]) : void 0, 7);
|
|
39453
|
+
if (retainInterval !== void 0) resets.RetainInterval = retainInterval;
|
|
39454
|
+
const copyTags = clearOnUpdateRemoval(properties["CopyTags"] ?? void 0, previousProperties["CopyTags"] ?? void 0, false);
|
|
39455
|
+
if (copyTags !== void 0) resets.CopyTags = copyTags;
|
|
39456
|
+
const extendDeletion = clearOnUpdateRemoval(properties["ExtendDeletion"] ?? void 0, previousProperties["ExtendDeletion"] ?? void 0, false);
|
|
39457
|
+
if (extendDeletion !== void 0) resets.ExtendDeletion = extendDeletion;
|
|
39458
|
+
const crossRegionCopyTargets = clearOnUpdateRemoval(properties["CrossRegionCopyTargets"] ?? void 0, previousProperties["CrossRegionCopyTargets"] ?? void 0, []);
|
|
39459
|
+
if (crossRegionCopyTargets !== void 0) resets.CrossRegionCopyTargets = crossRegionCopyTargets;
|
|
39460
|
+
const defaultPolicy = properties["DefaultPolicy"] ?? previousProperties["DefaultPolicy"];
|
|
39461
|
+
const exclusionsClear = defaultPolicy === "VOLUME" ? {
|
|
39462
|
+
ExcludeBootVolumes: false,
|
|
39463
|
+
ExcludeVolumeTypes: [],
|
|
39464
|
+
ExcludeTags: []
|
|
39465
|
+
} : defaultPolicy === "INSTANCE" ? { ExcludeTags: [] } : void 0;
|
|
39466
|
+
if (exclusionsClear !== void 0) {
|
|
39467
|
+
const exclusions = clearOnUpdateRemoval(properties["Exclusions"] ?? void 0, previousProperties["Exclusions"] ?? void 0, exclusionsClear);
|
|
39468
|
+
if (exclusions !== void 0) resets.Exclusions = exclusions;
|
|
39469
|
+
}
|
|
39470
|
+
return resets;
|
|
39381
39471
|
}
|
|
39382
39472
|
/** Fetch the policy ARN (`Fn::GetAtt Arn`) for a policy id. */
|
|
39383
39473
|
async fetchPolicyArn(policyId) {
|
|
@@ -39416,7 +39506,8 @@ var DLMLifecyclePolicyProvider = class {
|
|
|
39416
39506
|
try {
|
|
39417
39507
|
await this.getClient().send(new UpdateLifecyclePolicyCommand({
|
|
39418
39508
|
PolicyId: physicalId,
|
|
39419
|
-
...this.toSdkFields(properties)
|
|
39509
|
+
...this.toSdkFields(properties),
|
|
39510
|
+
...this.buildRemovalResets(properties, previousProperties)
|
|
39420
39511
|
}));
|
|
39421
39512
|
const newTags = this.cfnTagsToMap(properties["Tags"]) ?? {};
|
|
39422
39513
|
const oldTags = this.cfnTagsToMap(previousProperties["Tags"]) ?? {};
|
|
@@ -61986,7 +62077,7 @@ function createMigrateCommand() {
|
|
|
61986
62077
|
*/
|
|
61987
62078
|
function buildProgram() {
|
|
61988
62079
|
const program = new Command();
|
|
61989
|
-
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.267.
|
|
62080
|
+
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.267.13");
|
|
61990
62081
|
program.hook("preAction", (_thisCommand, actionCommand) => {
|
|
61991
62082
|
const { profile } = actionCommand.optsWithGlobals();
|
|
61992
62083
|
if (profile !== void 0) process.env["AWS_PROFILE"] = profile;
|