@go-to-k/cdkd 0.274.0 → 0.275.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 +2 -2
- package/dist/{asg-provider-C1xO9Hg8.js → asg-provider-c0TMaGXW.js} +2 -2
- package/dist/{asg-provider-C1xO9Hg8.js.map → asg-provider-c0TMaGXW.js.map} +1 -1
- package/dist/cli.js +263 -4
- package/dist/cli.js.map +1 -1
- package/dist/{deploy-engine-BVpbuTRu.js → deploy-engine-C44YX-go.js} +58 -12
- package/dist/deploy-engine-C44YX-go.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/deploy-engine-BVpbuTRu.js.map +0 -1
|
@@ -5280,6 +5280,32 @@ var WorkGraph = class {
|
|
|
5280
5280
|
|
|
5281
5281
|
//#endregion
|
|
5282
5282
|
//#region src/utils/stringify.ts
|
|
5283
|
+
/**
|
|
5284
|
+
* Attribute names whose VALUES must never reach a log line, even at debug
|
|
5285
|
+
* level. `Fn::GetAtt` resolution debug-logs the resolved value, and some
|
|
5286
|
+
* attributes carry live long-lived credentials — the first was
|
|
5287
|
+
* `AWS::IAM::AccessKey.SecretAccessKey` (issue #1323), where a `--verbose`
|
|
5288
|
+
* deploy (or a CI log) would otherwise print a usable IAM secret key.
|
|
5289
|
+
* Matched against the ATTRIBUTE NAME (not the value), so legitimate
|
|
5290
|
+
* non-secret attributes keep full debug output.
|
|
5291
|
+
*/
|
|
5292
|
+
const SENSITIVE_ATTRIBUTE_NAME = /secret|password|credential/i;
|
|
5293
|
+
/**
|
|
5294
|
+
* Names that MATCH the sensitive pattern but denote identifiers, not the
|
|
5295
|
+
* credential material itself (`SecretArn`, `MasterUserSecret.SecretArn`,
|
|
5296
|
+
* `SecretId`, ...). ARNs / ids are load-bearing debug output — redacting them
|
|
5297
|
+
* would hurt debuggability without protecting anything.
|
|
5298
|
+
*/
|
|
5299
|
+
const NON_SENSITIVE_SUFFIX = /(arn|id|name|url|alias|status)$/i;
|
|
5300
|
+
/**
|
|
5301
|
+
* Render an attribute value for a debug log line, redacting values whose
|
|
5302
|
+
* attribute name looks credential-bearing (see
|
|
5303
|
+
* {@link SENSITIVE_ATTRIBUTE_NAME}).
|
|
5304
|
+
*/
|
|
5305
|
+
function stringifyAttributeForLog(attributeName, value) {
|
|
5306
|
+
if (SENSITIVE_ATTRIBUTE_NAME.test(attributeName) && !NON_SENSITIVE_SUFFIX.test(attributeName)) return "<redacted>";
|
|
5307
|
+
return stringifyValue(value);
|
|
5308
|
+
}
|
|
5283
5309
|
function stringifyValue(value) {
|
|
5284
5310
|
switch (typeof value) {
|
|
5285
5311
|
case "string": return value;
|
|
@@ -7708,6 +7734,7 @@ const IAM_PROPAGATION_ERROR_MESSAGE_PATTERNS = [
|
|
|
7708
7734
|
"does not have required permissions",
|
|
7709
7735
|
"Trusted Entity",
|
|
7710
7736
|
"Invalid principal in policy",
|
|
7737
|
+
"The user with name",
|
|
7711
7738
|
"Policy Error: PrincipalNotFound",
|
|
7712
7739
|
"Invalid value for the parameter Policy",
|
|
7713
7740
|
"required permissions for: ENHANCED_MONITORING",
|
|
@@ -9800,6 +9827,18 @@ function collectReferencedParameterNames(template) {
|
|
|
9800
9827
|
}
|
|
9801
9828
|
return referenced;
|
|
9802
9829
|
}
|
|
9830
|
+
/**
|
|
9831
|
+
* Render a parameter VALUE for a debug log line, honoring the definition's
|
|
9832
|
+
* `NoEcho` flag (issue #1329). `NoEcho: true` is the template author's
|
|
9833
|
+
* explicit "this value is sensitive" declaration — CloudFormation masks such
|
|
9834
|
+
* values everywhere it echoes them, so cdkd's `--verbose` output must not
|
|
9835
|
+
* print them either. Sibling of `stringifyAttributeForLog` (which redacts
|
|
9836
|
+
* `Fn::GetAtt` ATTRIBUTE values by name heuristic; here the author told us).
|
|
9837
|
+
*/
|
|
9838
|
+
function stringifyParameterForLog(paramDef, value) {
|
|
9839
|
+
if (paramDef?.NoEcho === true) return "<redacted>";
|
|
9840
|
+
return stringifyValue(value);
|
|
9841
|
+
}
|
|
9803
9842
|
var IntrinsicFunctionResolver = class {
|
|
9804
9843
|
logger = getLogger().child("IntrinsicFunctionResolver");
|
|
9805
9844
|
resolverRegion;
|
|
@@ -9856,7 +9895,7 @@ var IntrinsicFunctionResolver = class {
|
|
|
9856
9895
|
const userValue = userParameters[name];
|
|
9857
9896
|
if (userValue !== void 0) {
|
|
9858
9897
|
parameters[name] = this.coerceParameterValue(userValue, paramDef.Type);
|
|
9859
|
-
this.logger.debug(`Parameter ${name}: using user-provided value ${userValue}`);
|
|
9898
|
+
this.logger.debug(`Parameter ${name}: using user-provided value ${stringifyParameterForLog(paramDef, userValue)}`);
|
|
9860
9899
|
continue;
|
|
9861
9900
|
}
|
|
9862
9901
|
}
|
|
@@ -9871,11 +9910,11 @@ var IntrinsicFunctionResolver = class {
|
|
|
9871
9910
|
this.logger.debug(`Parameter ${name}: resolving SSM parameter path ${ssmPath}`);
|
|
9872
9911
|
const resolved = await this.resolveSSMParameter(ssmPath);
|
|
9873
9912
|
parameters[name] = resolved;
|
|
9874
|
-
this.logger.debug(`Parameter ${name}: resolved SSM value ${resolved}`);
|
|
9913
|
+
this.logger.debug(`Parameter ${name}: resolved SSM value ${stringifyParameterForLog(paramDef, resolved)}`);
|
|
9875
9914
|
continue;
|
|
9876
9915
|
}
|
|
9877
9916
|
parameters[name] = paramDef.Default;
|
|
9878
|
-
this.logger.debug(`Parameter ${name}: using default value ${
|
|
9917
|
+
this.logger.debug(`Parameter ${name}: using default value ${stringifyParameterForLog(paramDef, paramDef.Default)}`);
|
|
9879
9918
|
continue;
|
|
9880
9919
|
}
|
|
9881
9920
|
throw new Error(`Parameter ${name} is required but no value was provided and no default exists`);
|
|
@@ -10004,7 +10043,8 @@ var IntrinsicFunctionResolver = class {
|
|
|
10004
10043
|
}
|
|
10005
10044
|
if (context.parameters && logicalId in context.parameters) {
|
|
10006
10045
|
const value = context.parameters[logicalId];
|
|
10007
|
-
|
|
10046
|
+
const paramDef = context.template.Parameters?.[logicalId];
|
|
10047
|
+
this.logger.debug(`Resolved Ref to parameter: ${logicalId} -> ${stringifyParameterForLog(paramDef, value)}`);
|
|
10008
10048
|
return value;
|
|
10009
10049
|
}
|
|
10010
10050
|
const pseudoValue = await this.resolvePseudoParameter(logicalId, context);
|
|
@@ -10092,7 +10132,7 @@ var IntrinsicFunctionResolver = class {
|
|
|
10092
10132
|
if (!(resource.resourceType === "AWS::EC2::VPC" && attributeName === "Ipv6CidrBlocks") && resource.attributes !== void 0) {
|
|
10093
10133
|
const flatValue = resource.attributes[attributeName];
|
|
10094
10134
|
if (flatValue !== void 0) {
|
|
10095
|
-
this.logger.debug(`Resolved Fn::GetAtt from attributes: ${logicalId}.${attributeName} -> ${
|
|
10135
|
+
this.logger.debug(`Resolved Fn::GetAtt from attributes: ${logicalId}.${attributeName} -> ${stringifyAttributeForLog(attributeName, flatValue)}`);
|
|
10096
10136
|
return flatValue;
|
|
10097
10137
|
}
|
|
10098
10138
|
if (attributeName.includes(".")) {
|
|
@@ -10104,13 +10144,13 @@ var IntrinsicFunctionResolver = class {
|
|
|
10104
10144
|
break;
|
|
10105
10145
|
}
|
|
10106
10146
|
if (cursor !== void 0) {
|
|
10107
|
-
this.logger.debug(`Resolved Fn::GetAtt from nested attributes: ${logicalId}.${attributeName} -> ${
|
|
10147
|
+
this.logger.debug(`Resolved Fn::GetAtt from nested attributes: ${logicalId}.${attributeName} -> ${stringifyAttributeForLog(attributeName, cursor)}`);
|
|
10108
10148
|
return cursor;
|
|
10109
10149
|
}
|
|
10110
10150
|
}
|
|
10111
10151
|
}
|
|
10112
10152
|
const value = await this.constructAttribute(resource, attributeName, context, logicalId);
|
|
10113
|
-
this.logger.debug(`Resolved Fn::GetAtt: ${logicalId}.${attributeName} -> ${
|
|
10153
|
+
this.logger.debug(`Resolved Fn::GetAtt: ${logicalId}.${attributeName} -> ${stringifyAttributeForLog(attributeName, value)}`);
|
|
10114
10154
|
return value;
|
|
10115
10155
|
}
|
|
10116
10156
|
/**
|
|
@@ -11520,7 +11560,6 @@ const NON_PROVISIONABLE_TYPES = /* @__PURE__ */ new Set([
|
|
|
11520
11560
|
"AWS::DAX::ParameterGroup",
|
|
11521
11561
|
"AWS::DAX::SubnetGroup",
|
|
11522
11562
|
"AWS::DirectoryService::MicrosoftAD",
|
|
11523
|
-
"AWS::DMS::Endpoint",
|
|
11524
11563
|
"AWS::DMS::EventSubscription",
|
|
11525
11564
|
"AWS::DMS::ReplicationInstance",
|
|
11526
11565
|
"AWS::DMS::ReplicationSubnetGroup",
|
|
@@ -11569,7 +11608,6 @@ const NON_PROVISIONABLE_TYPES = /* @__PURE__ */ new Set([
|
|
|
11569
11608
|
"AWS::Greengrass::SubscriptionDefinitionVersion",
|
|
11570
11609
|
"AWS::GreengrassV2::Component",
|
|
11571
11610
|
"AWS::GreengrassV2::CoreDevice",
|
|
11572
|
-
"AWS::IAM::AccessKey",
|
|
11573
11611
|
"AWS::IdentityStore::AllGroupMemberships",
|
|
11574
11612
|
"AWS::ImageBuilder::AllImageBuildVersions",
|
|
11575
11613
|
"AWS::ImageBuilder::AllWorkflowBuildVersions",
|
|
@@ -12002,7 +12040,7 @@ var CloudControlProvider = class {
|
|
|
12002
12040
|
this.logger.debug(`Deleting resource ${logicalId} (${resourceType}), physical ID: ${physicalId}`);
|
|
12003
12041
|
if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
|
|
12004
12042
|
this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
|
|
12005
|
-
const { ASGProvider } = await import("./asg-provider-
|
|
12043
|
+
const { ASGProvider } = await import("./asg-provider-c0TMaGXW.js").then((n) => n.n);
|
|
12006
12044
|
await new ASGProvider().delete(logicalId, physicalId, resourceType, _properties, context);
|
|
12007
12045
|
return;
|
|
12008
12046
|
}
|
|
@@ -14670,6 +14708,14 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
14670
14708
|
]),
|
|
14671
14709
|
silentDrop: /* @__PURE__ */ new Map()
|
|
14672
14710
|
}],
|
|
14711
|
+
["AWS::IAM::AccessKey", {
|
|
14712
|
+
handled: /* @__PURE__ */ new Set([
|
|
14713
|
+
"Serial",
|
|
14714
|
+
"Status",
|
|
14715
|
+
"UserName"
|
|
14716
|
+
]),
|
|
14717
|
+
silentDrop: /* @__PURE__ */ new Map()
|
|
14718
|
+
}],
|
|
14673
14719
|
["AWS::IAM::Group", {
|
|
14674
14720
|
handled: /* @__PURE__ */ new Set([
|
|
14675
14721
|
"GroupName",
|
|
@@ -17771,7 +17817,7 @@ const FLUSH_INTERVAL_MS = 2e3;
|
|
|
17771
17817
|
const FLUSH_EVENT_THRESHOLD = 50;
|
|
17772
17818
|
/** Build-time cdkd version, with a dev fallback for non-built contexts. */
|
|
17773
17819
|
function getCdkdVersion() {
|
|
17774
|
-
return "0.
|
|
17820
|
+
return "0.275.1";
|
|
17775
17821
|
}
|
|
17776
17822
|
/**
|
|
17777
17823
|
* Generate a time-sortable unique run id, e.g.
|
|
@@ -19817,4 +19863,4 @@ var DeployEngine = class {
|
|
|
19817
19863
|
|
|
19818
19864
|
//#endregion
|
|
19819
19865
|
export { WorkGraph as $, LockError as $t, slowCcOperationTimeoutMs as A, warnDeprecatedNoPrefixCliFlag as At, applyRoleArnIfSet as B, resolveBucketRegion as Bt, yellow as C, resolveAutoAssetStorage as Ct, ProviderRegistry as D, resolveStateBucketWithDefaultAndSource as Dt, clearOnUpdateRemoval as E, resolveStateBucketWithDefault as Et, refStateLookupFromResource as F, uploadCfnTemplate as Ft, DagBuilder as G, AssetError as Gt, describeTypeWithThrottleRetry as H, getAwsClients as Ht, WAFv2WebACLProvider as I, expectedOwnerParam as It, S3StateBackend as J, DependencyError as Jt, TemplateParser as K, CdkdError as Kt, normalizeAwsTagsToCfn as L, AssemblyReader as Lt, isTerminationProtectionPropagationError as M, CFN_TEMPLATE_URL_LIMIT as Mt, IntrinsicFunctionResolver as N, MIGRATE_TMP_PREFIX as Nt, findActionableSilentDrops as O, resolveUseCdkBootstrapAssets as Ot, cfnRefValueFromPhysicalId as P, findLargeInlineResources as Pt, stringifyValue as Q, LocalStartServiceError as Qt, resolveExplicitPhysicalId as R, processStackMessages as Rt, red as S, resolveApp as St, collectInlinePolicyNamesManagedBySiblings as T, resolveSkipPrefix as Tt, withRetry as U, resetAwsClients as Ut, DiffCalculator as V, AwsClients as Vt, isRetryableTransientError as W, setAwsClients as Wt, shouldRetainResource as X, LocalInvokeBuildError as Xt, rebuildClientForBucketRegion as Y, DeployCancelledError as Yt, AssetPublisher as Z, LocalMigrateError as Zt, formatResourceLine as _, getDockerImageBySourceHash as _t, DeploymentEventsStore as a, ResourceUpdateNotSupportedError as an, BOOTSTRAP_MARKER_PREFIX as at, gray as b, getDefaultStateBucketName as bt, replayFailedOperations as c, StateError as cn, parseBootstrapMarker as ct, IMPLICIT_DELETE_DEPENDENCIES as d, isCdkdError as dn, buildDockerImage as dt, MissingCdkCliError as en, buildAssetRedirectMap as et, computeImplicitDeleteEdges as f, normalizeAwsError as fn, formatDockerLoginError as ft, renderStatefulReason as g, AssetManifestLoader as gt, isStatefulRecreateTargetSync as h, runDockerStreaming as ht, DeploymentEventsReader as i, ResourceTimeoutError as in, AssetModeResolver as it, disableInstanceApiTermination as j, CFN_TEMPLATE_BODY_LIMIT as jt, CloudControlProvider as k, stateBucketExistenceConfirmed as kt, replayRollback as l, SynthesisError as ln, validateAssetBucketName as lt, MULTI_REGION_RECREATE_BLOCKED_TYPES as m, __exportAll as mn, runDockerForeground as mt, DEFAULT_RESOURCE_WARN_AFTER_MS as n, PartialFailureError as nn, loadPublishableAssetManifest as nt, planFailedOps as o, StackHasActiveImportsError as on, ensureAssetStorage as ot, extractDeploymentEventError as p, withErrorHandling as pn, getDockerCmd as pt, LockManager as q, ConfigError as qt, DeployEngine as r, ProvisioningError as rn, rewriteTemplateAssetReferences as rt, planRollback as s, StackTerminationProtectionError as sn, getBootstrapMarkerKey as st, DEFAULT_RESOURCE_TIMEOUT_MS as t, NestedStackChildDirectDestroyError as tn, createAssetRedirectResolver as tt, withResourceDeadline as u, formatError as un, validateContainerRepoName as ut, bold as v, Synthesizer as vt, IAMRoleProvider as w, resolveCaptureObservedState as wt, green as x, getLegacyStateBucketName as xt, cyan as y, synthesisStatusMessage as yt, assertRegionMatch as z, clearBucketRegionCache as zt };
|
|
19820
|
-
//# sourceMappingURL=deploy-engine-
|
|
19866
|
+
//# sourceMappingURL=deploy-engine-C44YX-go.js.map
|