@go-to-k/cdkd 0.301.4 → 0.301.5

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.
@@ -2,12 +2,12 @@ import { r as getAwsClients } from "./aws-clients-B_CEQGE1.js";
2
2
  import { B as safeMsg, F as displaySafe, I as displayStackName, L as isPasteableIdent, O as SECRET_REF_MAX_CODE_POINTS, P as displayIdent, a as getLogger, b as generateResourceNameWithFallback, n as isAwsAuthoredFailure, r as safeStringify, t as describeAwsFailure, y as generateResourceName, z as plainIdentOr } from "./aws-failure-text-BEQfs6za.js";
3
3
  import { $ as protectedReplacementAdvice, $n as explicitDenyPolicyKind, $t as ambientCredentialConfig, A as isQuotableImportValue, B as isTerminalDeleteFailure, C as setBounded, D as VALUE_NOT_SHOWN, E as assertRegionMatch, F as resolveExplicitPhysicalId, Fn as isInertUnquoted, H as observeThenDisableProtection, Hn as withheldTargetClause, In as pasteableCommand, Kt as injectiveKey, L as ProtectionFlipRegistry, M as quotedRemedyLogicalId, Mt as markCreatedBeforeFailure, N as refusalTypeShown, Nn as commandHole, Nt as markSupersedesEarlierCreate, O as isPlainImportJson, P as remedyLogicalId, Pn as hasClauseBreak, Q as pasteableAwsCommand, Qn as markReplayMayCollide, Qt as ambientClientDefaults, Rn as plainOrDescribed, S as replayedSendWindow, St as withDerivedNameMasks, T as RESOURCE_NOT_FOUND, Tt as clearCreatedBeforeFailure, U as protectionFlipKey, V as logGroupProtectionSite, Vn as shellQuote, W as rdsFamilyProtectionSite, X as WITHHELD_AWS_COMMAND, Y as UNNAMEABLE_ID_CLAUSE, Z as isAwsCliLiteral, Zn as markNameCollision, Zt as withPasteableAwsProfile, _ as RecentIdSet, _t as createMaskedLogSinks, a as onlySecretDerived, ar as isRetryableTransientError, at as startInterruptWatch, b as isInsideWindow, bn as ResourceUpdateNotSupportedError, bt as maskDeep, c as recordedPrincipalsRepair, cr as THROTTLING_ERROR_NAMES, ct as canonicalizeRoute53QueryName, dr as markNonRetryable, dt as compositeIdSkipResult, en as clientDefaultsFor, et as renderDisableCommand, fr as markRedactedCause, ft as logicalIdShown, g as AmbiguousCreateLatch, gt as stateOrphanRecordRemedy, h as AMBIGUOUS_LATCH_TTL_MS, ht as segmentAfterAnchor, i as holdsSecretDerivedEntry, in as CdkdError, it as isInterruptedWaitError, j as normalizeAwsTagsToCfn, jt as markAuxiliaryFailure, k as isPlainImportValue, lr as isMarkedNonRetryable, lt as compositeIdFormatMessage, nn as AccountIdUnavailableError, nr as isAmbiguousOutcomeError, o as readPrincipalLists, or as isTransientServerError, ot as ElapsedBudgetRegistry, p as withRemovalDefaults, pr as wrapMaskedAwsError, pt as packCompositeId, q as userPoolProtectionSite, qt as injectiveKeyPrefix, r as SECRET_DERIVED_READ_LIVE, rr as isExplicitDenyError, tn as credentialFingerprint, u as clearOnUpdateRemoval, ur as isThrottlingError, ut as compositeIdSeparatorRefusal, v as ambiguousAttemptLead, vn as ProvisioningError, vt as createMaskedRetryLogger, w as withoutServerErrorRetries, x as replayFollowedAmbiguousAttempt, xt as maskerOrIdentity, y as createAttemptKey, yt as isSecretDerivedValue, z as deleteWithProtectionCompensation } from "./iam-policy-targets-BkeM7IXi.js";
4
4
  import { s as ambientRegion } from "./aws-client-defaults-DBXBcg0J.js";
5
- import { $ as markRefusedBeforeApplying, Ao as requireConfigArray, B as compensateRemovedDeletionProtection, Ci as s3BucketRegionalDomainName, Co as coerceCfnBoolean, Cs as withoutPhysicalNameCopies, Da as refuseMalformedNestedChildOutputs, Do as configStringRefusal, Dr as waitForLambdaFunctionActive, Ec as rewriteTemplateAssetReferences, Eo as configIntegerRefusal, G as INDEX_SETTLE_POLL_INTERVAL_MS, Gi as passedParameterClassesOf, Gl as resolveAssemblyPath, Gr as isWaitAbandonedError, Gt as awaitInFlightSibling, H as resolveDynamoDbDeleteBudgetClock, Hi as parseWebACLArn, Hl as describeFileReadFailure, Hn as secretNamedAttributeNamesOf, Ht as withNestedStackContext, Io as withRetry, Is as carriesSecretMask, J as ECR_AUTO_DELETE_IMAGES_TAG, Jr as ec2InstanceProtectionSite, K as deleteTableWithIndexBusyRetry, Kr as markWaitAbandoned, L as DynamoDBGlobalTableProvider, Lo as canonicalLambdaFunctionName, Lr as slowCcOperationTimeoutMs, Lt as revertNestedChildFromJournal, Mi as getAccountInfo, Ml as derivePartitionAndUrlSuffix, Mo as requireConfigString, Ms as physicalNameCopiesOf, Ns as recordAttributeIdCopy, Ol as decodeListingKey, Oo as readConfigString, Pt as getNestedRevertRun, Q as getPriorAttempts, Qi as accountArgs, Qr as reEnableInstanceApiTermination, R as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, Ro as lambdaFunctionNameForMask, Rr as unchangedBehindSecretReference, Si as s3BucketDualStackDomainName, So as toFiniteNumber, To as configBooleanRefusal, Ts as dynamicReferenceTokens, U as resolveDynamoDbDeleteBudgetMs, Ul as displayAssemblyPath, Ur as deleteSkipReason, V as deleteBudgetKey, Vt as getCurrentNestedStackContext, W as DELETE_INDEX_WAIT_PROCEED_NOTE, Wl as renderAssemblyPathEscape, Wr as withIndeterminateGuard, X as hasCdkAutoDeleteTag, Xr as observeThenDisableInstanceApiTermination, Xt as replacedDeleteFailureVerdict, Y as S3_AUTO_DELETE_OBJECTS_TAG, Yr as isTerminationProtectionPropagationError, Z as isTruthyCfnBoolean, Zo as passedNoEchoParametersOf, Zr as reDisableInstanceApiTermination, _i as outputReferenceProvenanceOf, _r as refuseMalformedDesiredTags, _s as markSameGenerationBag, a as findNestedTemplateTreeDefect, ao as withheldAccountClause, as as hasMaskableValues, b as lookupEachName, bi as s3BucketArn, bo as isWarmThroughputDecrease, br as definedAttributes, bs as redactSecretsForState, c as renderNestedTemplateTreeDefect, cr as reserveStackCreateToken, dn as REDACTED_DELETE_ADDRESS_SKIP_REASON, dr as isRefusedByName, fn as isRedactedRecordedValue, fr as markDeleteStarted, gr as readTagList, hi as isSettledInstanceState, hr as planTagDiff, jl as canonicalizeRegion, jo as requireConfigObject, jr as getCurrentResourceSecrets, js as recoverMaskedOutput, ko as replayWarn, ln as getCurrentProducerRegions, lo as withoutSilentDropProperties, mn as redactedDeleteAddressSkip, mr as DBPROXY_TAG_OPTIONS, o as isAbsoluteAssetPath, or as earliestDefined, pn as redactedDeleteAddressFields, pr as DBPROXY_TAGS_WHAT, q as waitForIndexesSettled, qa as refuseMalformedResourcesForDestroy, qt as getStackRecords, s as listNestedTemplateRows, so as findSilentDropProperties, t as DeployEngine, ur as acquireIdempotencyToken, v as chunks, vo as WARM_THROUGHPUT_MEMBERS, vr as tagMapAsList, vs as recordReferenceProvenanceEntry, wi as s3BucketWebsiteUrl, wo as coerceCfnInteger, x as withApiLimit, xc as stringifyValue, xi as s3BucketDomainName, xo as toCfnInteger, xr as stringifyIfAssigned, y as isAccessDeniedError, yo as coerceWarmThroughput$1, yr as tagPlanWarning, ys as snapshotPassProvenance, z as beginDeleteWait, zo as sameLambdaFunctionAddress } from "./deploy-engine-BIPU9Xdh.js";
6
- import { n as collectInlinePolicyNamesManagedBySiblings, r as IamCreateClientCache, t as IAMRoleProvider } from "./iam-role-provider-C58oW5zG.js";
7
- import { a as resolveSecretDerivedPrincipals, i as isResolvableSecretPrincipalList, n as runDestroyForStack, o as canonicalizeIpProtocolValue, r as holdsUnprovenSecretPrincipalToken, s as resolvedResourceTimeoutMs, t as canonicalizeIpv4Cidr } from "./program-DYfZCsxM.js";
8
- import { RDSProvider } from "./rds-provider-DI_O0_iG.js";
9
- import { NeptuneProvider } from "./neptune-provider-DoKgbZCz.js";
10
- import { ASGProvider } from "./asg-provider--GY-B-zI.js";
5
+ import { $i as accountArgs, Ao as replayWarn, Bo as sameLambdaFunctionAddress, C as getPriorAttempts, Cn as awaitInFlightSibling, Co as toFiniteNumber, Dc as rewriteTemplateAssetReferences, Dn as replacedDeleteFailureVerdict, Do as configIntegerRefusal, Dr as waitForLambdaFunctionActive, Dt as withApiLimit, Eo as configBooleanRefusal, Es as dynamicReferenceTokens, Et as lookupEachName, F as listNestedTemplateRows, Gl as renderAssemblyPathEscape, Gr as isWaitAbandonedError, I as renderNestedTemplateTreeDefect, Ja as refuseMalformedResourcesForDestroy, Jr as ec2InstanceProtectionSite, Jt as redactedDeleteAddressFields, Ki as passedParameterClassesOf, Kl as resolveAssemblyPath, Kn as secretNamedAttributeNamesOf, Kr as markWaitAbandoned, Kt as REDACTED_DELETE_ADDRESS_SKIP_REASON, Lo as withRetry, Lr as slowCcOperationTimeoutMs, Ls as carriesSecretMask, Ml as canonicalizeRegion, Mo as requireConfigObject, Ms as recoverMaskedOutput, N as findNestedTemplateTreeDefect, Ni as getAccountInfo, Nl as derivePartitionAndUrlSuffix, No as requireConfigString, Ns as physicalNameCopiesOf, Oa as refuseMalformedNestedChildOutputs, Oo as configStringRefusal, P as isAbsoluteAssetPath, Ps as recordAttributeIdCopy, Qo as passedNoEchoParametersOf, Qr as reEnableInstanceApiTermination, Ro as canonicalLambdaFunctionName, Rr as unchangedBehindSecretReference, S as isTruthyCfnBoolean, Sc as stringifyValue, So as toCfnInteger, Tn as getStackRecords, To as coerceCfnInteger, Tt as isAccessDeniedError, Ui as parseWebACLArn, Ul as describeFileReadFailure, Ur as deleteSkipReason, Wl as displayAssemblyPath, Wr as withIndeterminateGuard, Wt as getCurrentProducerRegions, Xr as observeThenDisableInstanceApiTermination, Yr as isTerminationProtectionPropagationError, Yt as redactedDeleteAddressSkip, Zr as reDisableInstanceApiTermination, _ as deleteTableWithIndexBusyRetry, _r as refuseMalformedDesiredTags, ai as s3BucketDomainName, b as S3_AUTO_DELETE_OBJECTS_TAG, bo as coerceWarmThroughput$1, br as definedAttributes, bs as snapshotPassProvenance, c as DynamoDBGlobalTableProvider, ci as s3BucketWebsiteUrl, co as findSilentDropProperties, cr as reserveStackCreateToken, d as compensateRemovedDeletionProtection, dr as isRefusedByName, f as deleteBudgetKey, fr as markDeleteStarted, g as INDEX_SETTLE_POLL_INTERVAL_MS, gr as readTagList, h as DELETE_INDEX_WAIT_PROCEED_NOTE, hr as planTagDiff, ii as s3BucketArn, jo as requireConfigArray, jr as getCurrentResourceSecrets, kl as decodeListingKey, ko as readConfigString, l as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, lt as revertNestedChildFromJournal, m as resolveDynamoDbDeleteBudgetMs, mr as DBPROXY_TAG_OPTIONS, mt as withNestedStackContext, oi as s3BucketDualStackDomainName, oo as withheldAccountClause, or as earliestDefined, os as hasMaskableValues, ot as getNestedRevertRun, p as resolveDynamoDbDeleteBudgetClock, pi as outputReferenceProvenanceOf, pr as DBPROXY_TAGS_WHAT, pt as getCurrentNestedStackContext, qt as isRedactedRecordedValue, ri as isSettledInstanceState, si as s3BucketRegionalDomainName, t as DeployEngine, u as beginDeleteWait, uo as withoutSilentDropProperties, ur as acquireIdempotencyToken, v as waitForIndexesSettled, vr as tagMapAsList, vs as markSameGenerationBag, w as markRefusedBeforeApplying, wo as coerceCfnBoolean, ws as withoutPhysicalNameCopies, wt as chunks, x as hasCdkAutoDeleteTag, xo as isWarmThroughputDecrease, xr as stringifyIfAssigned, xs as redactSecretsForState, y as ECR_AUTO_DELETE_IMAGES_TAG, yo as WARM_THROUGHPUT_MEMBERS, yr as tagPlanWarning, ys as recordReferenceProvenanceEntry, zo as lambdaFunctionNameForMask } from "./deploy-engine-HAvm8vSI.js";
6
+ import { n as collectInlinePolicyNamesManagedBySiblings, r as IamCreateClientCache, t as IAMRoleProvider } from "./iam-role-provider-CTpDWSUG.js";
7
+ import { a as resolveSecretDerivedPrincipals, i as isResolvableSecretPrincipalList, n as runDestroyForStack, o as canonicalizeIpProtocolValue, r as holdsUnprovenSecretPrincipalToken, s as resolvedResourceTimeoutMs, t as canonicalizeIpv4Cidr } from "./program-DmPDfDhE.js";
8
+ import { RDSProvider } from "./rds-provider-CxB94DZy.js";
9
+ import { NeptuneProvider } from "./neptune-provider-CXhoiT-P.js";
10
+ import { ASGProvider } from "./asg-provider-DHB498Xq.js";
11
11
  import { createHash, randomUUID } from "node:crypto";
12
12
  import { CreateBucketCommand, DeleteBucketAnalyticsConfigurationCommand, DeleteBucketCommand, DeleteBucketCorsCommand, DeleteBucketEncryptionCommand, DeleteBucketIntelligentTieringConfigurationCommand, DeleteBucketInventoryConfigurationCommand, DeleteBucketLifecycleCommand, DeleteBucketMetricsConfigurationCommand, DeleteBucketOwnershipControlsCommand, DeleteBucketPolicyCommand, DeleteBucketReplicationCommand, DeleteBucketTaggingCommand, DeleteBucketWebsiteCommand, DeleteObjectsCommand, GetBucketAccelerateConfigurationCommand, GetBucketCorsCommand, GetBucketEncryptionCommand, GetBucketLifecycleConfigurationCommand, GetBucketLocationCommand, GetBucketLoggingCommand, GetBucketNotificationConfigurationCommand, GetBucketOwnershipControlsCommand, GetBucketPolicyCommand, GetBucketReplicationCommand, GetBucketTaggingCommand, GetBucketVersioningCommand, GetBucketWebsiteCommand, GetObjectCommand, GetObjectLockConfigurationCommand, GetPublicAccessBlockCommand, HeadBucketCommand, ListBucketAnalyticsConfigurationsCommand, ListBucketIntelligentTieringConfigurationsCommand, ListBucketInventoryConfigurationsCommand, ListBucketMetricsConfigurationsCommand, ListBucketsCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchBucket, PutBucketAccelerateConfigurationCommand, PutBucketAnalyticsConfigurationCommand, PutBucketCorsCommand, PutBucketEncryptionCommand, PutBucketIntelligentTieringConfigurationCommand, PutBucketInventoryConfigurationCommand, PutBucketLifecycleConfigurationCommand, PutBucketLoggingCommand, PutBucketMetricsConfigurationCommand, PutBucketNotificationConfigurationCommand, PutBucketOwnershipControlsCommand, PutBucketPolicyCommand, PutBucketReplicationCommand, PutBucketTaggingCommand, PutBucketVersioningCommand, PutBucketWebsiteCommand, PutObjectLockConfigurationCommand, PutPublicAccessBlockCommand, S3Client } from "@aws-sdk/client-s3";
13
13
  import { AddRoleToInstanceProfileCommand, AddUserToGroupCommand, AttachGroupPolicyCommand, AttachRolePolicyCommand, AttachUserPolicyCommand, CreateAccessKeyCommand, CreateGroupCommand, CreateInstanceProfileCommand, CreateLoginProfileCommand, CreatePolicyCommand, CreatePolicyVersionCommand, CreateUserCommand, DeleteAccessKeyCommand, DeleteGroupCommand, DeleteGroupPolicyCommand, DeleteInstanceProfileCommand, DeleteLoginProfileCommand, DeletePolicyCommand, DeletePolicyVersionCommand, DeleteRolePolicyCommand, DeleteUserCommand, DeleteUserPermissionsBoundaryCommand, DeleteUserPolicyCommand, DetachGroupPolicyCommand, DetachRolePolicyCommand, DetachUserPolicyCommand, GetAccessKeyLastUsedCommand, GetGroupCommand, GetGroupPolicyCommand, GetInstanceProfileCommand, GetPolicyCommand, GetPolicyVersionCommand, GetRolePolicyCommand, GetUserCommand, GetUserPolicyCommand, IAMClient, ListAccessKeysCommand, ListAttachedGroupPoliciesCommand, ListAttachedUserPoliciesCommand, ListEntitiesForPolicyCommand, ListGroupPoliciesCommand, ListGroupsForUserCommand, ListPoliciesCommand, ListPolicyTagsCommand, ListPolicyVersionsCommand, ListUserPoliciesCommand, NoSuchEntityException, PutGroupPolicyCommand, PutRolePolicyCommand, PutUserPermissionsBoundaryCommand, PutUserPolicyCommand, RemoveRoleFromInstanceProfileCommand, RemoveUserFromGroupCommand, TagPolicyCommand, TagUserCommand, UntagPolicyCommand, UntagUserCommand, UpdateAccessKeyCommand, UpdateLoginProfileCommand } from "@aws-sdk/client-iam";
@@ -25254,35 +25254,9 @@ function targetsSecretCause(read) {
25254
25254
  return read.kind === "malformed" && read.onlySecret ? " (an Id holds a dynamic reference or its mask, which names no target Elastic Load Balancing accepts)" : "";
25255
25255
  }
25256
25256
  const TARGETS_WHAT = "targets, each with a string Id and, where given, an integer Port and a string AvailabilityZone";
25257
- const TARGET_GROUP_ATTRIBUTE_DEFAULTS = {
25258
- "deregistration_delay.timeout_seconds": "300",
25259
- "deregistration_delay.connection_termination.enabled": "false",
25260
- "stickiness.enabled": "false",
25261
- "stickiness.lb_cookie.duration_seconds": "86400",
25262
- "stickiness.app_cookie.duration_seconds": "86400",
25263
- "load_balancing.algorithm.type": "round_robin",
25264
- "load_balancing.algorithm.anomaly_mitigation": "off",
25265
- "load_balancing.cross_zone.enabled": "use_load_balancer_configuration",
25266
- "slow_start.duration_seconds": "0",
25267
- "lambda.multi_value_headers.enabled": "false",
25268
- "proxy_protocol_v2.enabled": "false"
25269
- };
25270
- const LOAD_BALANCER_ATTRIBUTE_DEFAULTS = {
25271
- "deletion_protection.enabled": "false",
25272
- "access_logs.s3.enabled": "false",
25273
- "connection_logs.s3.enabled": "false",
25274
- "health_check_logs.s3.enabled": "false",
25275
- "routing.http.desync_mitigation_mode": "defensive",
25276
- "routing.http.drop_invalid_header_fields.enabled": "false",
25277
- "routing.http.preserve_host_header.enabled": "false",
25278
- "routing.http.x_amzn_tls_version_and_cipher_suite.enabled": "false",
25279
- "routing.http.xff_client_port.enabled": "false",
25280
- "routing.http.xff_header_processing.mode": "append",
25281
- "routing.http2.enabled": "true",
25282
- "waf.fail_open.enabled": "false",
25283
- "zonal_shift.config.enabled": "false"
25284
- };
25285
- const LISTENER_ATTRIBUTE_DEFAULTS = { "routing.http.response.server.enabled": "true" };
25257
+ const RETAIN_REMOVED_ATTRIBUTE = () => void 0;
25258
+ const LOG_DELIVERY_ATTRIBUTE = /^[a-z_]+_logs\.s3\./;
25259
+ const MISLEADING_IF_KEPT_ATTRIBUTE = /^routing\.http\.(response\.access_control_|request\.[a-z0-9_]+\.header_name$)/;
25286
25260
  function loadBalancerAttributes(lb, lbArn) {
25287
25261
  return definedAttributes({
25288
25262
  DNSName: lb.DNSName,
@@ -25413,13 +25387,53 @@ var ELBv2Provider = class {
25413
25387
  "Tags"
25414
25388
  ])]
25415
25389
  ]);
25416
- removalHandledInUpdate = /* @__PURE__ */ new Map([["AWS::ElasticLoadBalancingV2::Listener", /* @__PURE__ */ new Set([
25417
- "LoadBalancerArn",
25418
- "DefaultActions",
25419
- "ListenerAttributes",
25420
- "Tags",
25421
- ...LISTENER_LEFT_IN_PLACE_ON_REMOVAL
25422
- ])]]);
25390
+ removalHandledInUpdate = /* @__PURE__ */ new Map([
25391
+ ["AWS::ElasticLoadBalancingV2::LoadBalancer", /* @__PURE__ */ new Set([
25392
+ "Name",
25393
+ "Scheme",
25394
+ "Type",
25395
+ "Subnets",
25396
+ "SubnetMappings",
25397
+ "SecurityGroups",
25398
+ "Tags",
25399
+ "IpAddressType",
25400
+ "Ipv4IpamPoolId",
25401
+ "MinimumLoadBalancerCapacity",
25402
+ "EnableCapacityReservationProvisionStabilize",
25403
+ "LoadBalancerAttributes",
25404
+ "EnablePrefixForIpv6SourceNat",
25405
+ "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic"
25406
+ ])],
25407
+ ["AWS::ElasticLoadBalancingV2::TargetGroup", /* @__PURE__ */ new Set([
25408
+ "Protocol",
25409
+ "Port",
25410
+ "VpcId",
25411
+ "TargetType",
25412
+ "ProtocolVersion",
25413
+ "Name",
25414
+ "IpAddressType",
25415
+ "TargetControlPort",
25416
+ "HealthCheckPort",
25417
+ "Targets",
25418
+ "Tags",
25419
+ "HealthCheckProtocol",
25420
+ "HealthCheckPath",
25421
+ "HealthCheckEnabled",
25422
+ "HealthCheckIntervalSeconds",
25423
+ "HealthCheckTimeoutSeconds",
25424
+ "HealthyThresholdCount",
25425
+ "UnhealthyThresholdCount",
25426
+ "Matcher",
25427
+ "TargetGroupAttributes"
25428
+ ])],
25429
+ ["AWS::ElasticLoadBalancingV2::Listener", /* @__PURE__ */ new Set([
25430
+ "LoadBalancerArn",
25431
+ "DefaultActions",
25432
+ "ListenerAttributes",
25433
+ "Tags",
25434
+ ...LISTENER_LEFT_IN_PLACE_ON_REMOVAL
25435
+ ])]
25436
+ ]);
25423
25437
  lambdaClients = /* @__PURE__ */ new Map();
25424
25438
  getClient() {
25425
25439
  if (!this.elbv2Client) this.elbv2Client = new ElasticLoadBalancingV2Client({
@@ -25681,7 +25695,11 @@ var ELBv2Provider = class {
25681
25695
  }) : "For Name / Type / Scheme re-deploy with cdkd deploy --replace, or destroy + redeploy the stack.";
25682
25696
  throw new ResourceUpdateNotSupportedError("AWS::ElasticLoadBalancingV2::LoadBalancer", logicalId, "ELBv2 LoadBalancer Name / Type / Scheme are immutable on AWS — none of the ELBv2 Modify* / Set* APIs accept these fields; they are fixed at creation. cdkd handles LoadBalancerAttributes / Subnets / SubnetMappings / SecurityGroups / IpAddressType / Tags in-place. " + remedy);
25683
25697
  }
25684
- const submittedAttrs = this.diffAttributeBag("LoadBalancerAttributes", logicalId, properties["LoadBalancerAttributes"], previousProperties["LoadBalancerAttributes"], this.attributeRemovalResolver(LOAD_BALANCER_ATTRIBUTE_DEFAULTS), fromReadback, maskSecrets);
25698
+ const removedLogKeys = [];
25699
+ const submittedAttrs = this.diffAttributeBag("LoadBalancerAttributes", logicalId, properties["LoadBalancerAttributes"], previousProperties["LoadBalancerAttributes"], (key) => {
25700
+ if (LOG_DELIVERY_ATTRIBUTE.test(key)) removedLogKeys.push(key);
25701
+ return RETAIN_REMOVED_ATTRIBUTE();
25702
+ }, fromReadback, maskSecrets);
25685
25703
  if (submittedAttrs.length > 0) {
25686
25704
  await this.getClient().send(new ModifyLoadBalancerAttributesCommand({
25687
25705
  LoadBalancerArn: physicalId,
@@ -25689,6 +25707,14 @@ var ELBv2Provider = class {
25689
25707
  }));
25690
25708
  this.logger.debug(`Applied ${submittedAttrs.length} LoadBalancerAttributes change(s) for ${logicalId}`);
25691
25709
  }
25710
+ const desiredAttrs = new Map(this.normalizeAttributes(properties["LoadBalancerAttributes"]).map((a) => [a.Key, a.Value]));
25711
+ const exposedLogKeys = removedLogKeys.filter((key) => desiredAttrs.get(`${key.split(".")[0]}.s3.enabled`) !== "false");
25712
+ if (exposedLogKeys.length > 0) {
25713
+ const mask = maskerOrIdentity(maskSecrets);
25714
+ const keys = exposedLogKeys.map((key) => mask(key)).join(", ");
25715
+ const one = exposedLogKeys.length === 1;
25716
+ this.logger.warn(safeMsg`${logicalId}: LoadBalancerAttributes ${one ? "key" : "keys"} ${keys} ${one ? "is" : "are"} no longer declared and ${one ? "keeps its live value" : "keep their live values"}, as CloudFormation leaves ${one ? "it" : "them"}, so the load balancer may keep delivering logs to the bucket it names. To stop it, declare the matching '<kind>_logs.s3.enabled' key as 'false' and deploy.`);
25717
+ }
25692
25718
  const newSubnets = properties["Subnets"];
25693
25719
  const oldSubnets = previousProperties["Subnets"];
25694
25720
  const newMappings = properties["SubnetMappings"];
@@ -25718,7 +25744,7 @@ var ELBv2Provider = class {
25718
25744
  }));
25719
25745
  this.logger.debug(`Updated SecurityGroups for ${logicalId}`);
25720
25746
  }
25721
- const newIpType = properties["IpAddressType"];
25747
+ const newIpType = fromReadback ? properties["IpAddressType"] : clearOnUpdateRemoval(properties["IpAddressType"], previousProperties["IpAddressType"], "ipv4");
25722
25748
  const oldIpType = previousProperties["IpAddressType"];
25723
25749
  if (newIpType !== void 0 && newIpType !== oldIpType) {
25724
25750
  await this.getClient().send(new SetIpAddressTypeCommand({
@@ -25928,7 +25954,7 @@ var ELBv2Provider = class {
25928
25954
  try {
25929
25955
  const rawMatcher = properties["Matcher"];
25930
25956
  const matcher = rawMatcher && (rawMatcher.HttpCode !== void 0 || rawMatcher.GrpcCode !== void 0) ? rawMatcher : void 0;
25931
- const healthCheckPort = String(properties["Protocol"] ?? previousProperties["Protocol"] ?? "").toUpperCase() === "GENEVE" ? properties["HealthCheckPort"] : clearOnUpdateRemoval(properties["HealthCheckPort"], previousProperties["HealthCheckPort"], "traffic-port");
25957
+ const healthCheckPort = clearOnUpdateRemoval(properties["HealthCheckPort"], previousProperties["HealthCheckPort"], "traffic-port");
25932
25958
  await this.getClient().send(new ModifyTargetGroupCommand({
25933
25959
  TargetGroupArn: physicalId,
25934
25960
  HealthCheckProtocol: properties["HealthCheckProtocol"],
@@ -25941,14 +25967,7 @@ var ELBv2Provider = class {
25941
25967
  UnhealthyThresholdCount: properties["UnhealthyThresholdCount"] !== void 0 ? Number(properties["UnhealthyThresholdCount"]) : void 0,
25942
25968
  ...matcher && { Matcher: matcher }
25943
25969
  }));
25944
- const tgAttrDiff = this.diffAttributeBag("TargetGroupAttributes", logicalId, properties["TargetGroupAttributes"], previousProperties["TargetGroupAttributes"], (key, currentValue) => {
25945
- const fallback = Object.hasOwn(TARGET_GROUP_ATTRIBUTE_DEFAULTS, key) ? TARGET_GROUP_ATTRIBUTE_DEFAULTS[key] : void 0;
25946
- if (fallback === void 0) {
25947
- this.logger.warn(`TargetGroup attribute ${maskerOrIdentity(maskSecrets)(key)} was removed from the template but has no documented default cdkd can reset it to — the live value is retained. Set the attribute explicitly to change it.`);
25948
- return;
25949
- }
25950
- return currentValue === fallback ? void 0 : fallback;
25951
- }, fromReadback, maskSecrets);
25970
+ const tgAttrDiff = this.diffAttributeBag("TargetGroupAttributes", logicalId, properties["TargetGroupAttributes"], previousProperties["TargetGroupAttributes"], RETAIN_REMOVED_ATTRIBUTE, fromReadback, maskSecrets);
25952
25971
  if (tgAttrDiff.length > 0) {
25953
25972
  await this.getClient().send(new ModifyTargetGroupAttributesCommand({
25954
25973
  TargetGroupArn: physicalId,
@@ -26115,7 +26134,11 @@ var ELBv2Provider = class {
26115
26134
  ...alpnPolicy && alpnPolicy.length > 0 && { AlpnPolicy: alpnPolicy },
26116
26135
  ...mutualAuth !== void 0 && { MutualAuthentication: mutualAuth }
26117
26136
  }));
26118
- const submittedAttrs = this.diffAttributeBag("ListenerAttributes", logicalId, properties["ListenerAttributes"], previousProperties["ListenerAttributes"], this.attributeRemovalResolver(LISTENER_ATTRIBUTE_DEFAULTS), fromReadback, maskSecrets);
26137
+ const removedMisleadingKeys = [];
26138
+ const submittedAttrs = this.diffAttributeBag("ListenerAttributes", logicalId, properties["ListenerAttributes"], previousProperties["ListenerAttributes"], (key) => {
26139
+ if (MISLEADING_IF_KEPT_ATTRIBUTE.test(key)) removedMisleadingKeys.push(key);
26140
+ return RETAIN_REMOVED_ATTRIBUTE();
26141
+ }, fromReadback, maskSecrets);
26119
26142
  if (submittedAttrs.length > 0) {
26120
26143
  const watch = startInterruptWatch(`ELBv2 Listener ${logicalId} attributes`);
26121
26144
  try {
@@ -26134,6 +26157,12 @@ var ELBv2Provider = class {
26134
26157
  }
26135
26158
  await this.applyTagDiff(physicalId, resourceType, logicalId, previousProperties["Tags"], properties["Tags"], maskSecrets);
26136
26159
  this.logger.debug(`Successfully updated Listener ${logicalId}`);
26160
+ if (removedMisleadingKeys.length > 0) {
26161
+ const mask = maskerOrIdentity(maskSecrets);
26162
+ const keys = removedMisleadingKeys.map((key) => mask(key)).join(", ");
26163
+ const one = removedMisleadingKeys.length === 1;
26164
+ this.logger.warn(safeMsg`${logicalId}: ListenerAttributes ${one ? "key" : "keys"} ${keys} ${one ? "is" : "are"} no longer declared and ${one ? "keeps its live value" : "keep their live values"}, as CloudFormation leaves ${one ? "it" : "them"}, so the listener may keep sending a CORS response header, or keep writing a request header under its renamed name. To change ${one ? "it" : "them"}, declare the value you want and deploy, or set ${one ? "it" : "them"} with 'aws elbv2 modify-listener-attributes'.`);
26165
+ }
26137
26166
  if (leftInPlaceNames.length > 0 && !fromReadback) this.logger.warn(listenerLeftInPlaceWarning(logicalId, leftInPlaceNames, context?.replayingState ? "rollback" : "deploy"));
26138
26167
  return {
26139
26168
  physicalId,
@@ -26214,12 +26243,6 @@ var ELBv2Provider = class {
26214
26243
  }
26215
26244
  return submitted;
26216
26245
  }
26217
- attributeRemovalResolver(defaults) {
26218
- return (key, currentValue) => {
26219
- const fallback = Object.hasOwn(defaults, key) ? defaults[key] : "";
26220
- return currentValue === fallback ? void 0 : fallback;
26221
- };
26222
- }
26223
26246
  async readUpdateTargets(logicalId, physicalId, resourceType, desiredRaw, recordedRaw, groupPort) {
26224
26247
  const desired = readTargets(desiredRaw, "desired");
26225
26248
  if (desired.kind === "malformed") throw markNonRetryable(new ProvisioningError(`desired Targets of TargetGroup ${logicalId} is not a list of ${TARGETS_WHAT}${targetsSecretCause(desired)} — the target group was not updated`, resourceType, logicalId, physicalId));
@@ -34027,7 +34050,7 @@ async function refuseCatalogMove(args) {
34027
34050
  try {
34028
34051
  callerAccount = await args.callerAccountId();
34029
34052
  } catch (error) {
34030
- throw wrapMaskedAwsError(mask, error, (text) => new ProvisioningError(`Could not resolve the caller's account id (sts:GetCallerIdentity) to tell whether CatalogId ${mask(literal)} is this account's default Data Catalog, so cdkd did not update Glue ${args.noun} ${args.logicalId}: ${text}`, args.resourceType, args.logicalId, void 0, error instanceof Error ? error : void 0));
34053
+ throw wrapGlueError(mask, args.debug, error, (text) => new ProvisioningError(`Could not resolve the caller's account id (sts:GetCallerIdentity) to tell whether CatalogId ${mask(literal)} is this account's default Data Catalog, so cdkd did not update Glue ${args.noun} ${args.logicalId}: ${text}`, args.resourceType, args.logicalId, void 0, error instanceof Error ? error : void 0));
34031
34054
  }
34032
34055
  if (literal === callerAccount) return;
34033
34056
  }
@@ -34059,6 +34082,13 @@ function newGlueClients(region) {
34059
34082
  }))
34060
34083
  };
34061
34084
  }
34085
+ function wrapGlueError(mask, debug, error, build) {
34086
+ const failure = describeAwsFailure(error);
34087
+ if (!failure.redacted) return wrapMaskedAwsError(mask, error, build);
34088
+ debug(mask(build(failure.detail).message));
34089
+ const wrapped = build(mask(failure.summary));
34090
+ return error instanceof Error ? markRedactedCause(wrapped) : wrapped;
34091
+ }
34062
34092
  var GlueProvider = class {
34063
34093
  client;
34064
34094
  createClient;
@@ -34066,7 +34096,7 @@ var GlueProvider = class {
34066
34096
  callerAccountId = makeCallerAccountResolver(this.providerRegion);
34067
34097
  logger = getLogger().child("GlueProvider");
34068
34098
  wrapMaskedError(mask, error, build) {
34069
- return wrapMaskedAwsError(mask, error, build);
34099
+ return wrapGlueError(mask, (message) => this.logger.debug(message), error, build);
34070
34100
  }
34071
34101
  handledProperties = /* @__PURE__ */ new Map([["AWS::Glue::Database", /* @__PURE__ */ new Set([
34072
34102
  "DatabaseInput",
@@ -34165,6 +34195,7 @@ var GlueProvider = class {
34165
34195
  stateful: true,
34166
34196
  callerAccountId: this.callerAccountId,
34167
34197
  warn: log.warn,
34198
+ debug: log.debug,
34168
34199
  mask: log.mask
34169
34200
  });
34170
34201
  const catalogId = updateCatalogId(properties["CatalogId"]);
@@ -34218,7 +34249,7 @@ var GlueProvider = class {
34218
34249
  return;
34219
34250
  }
34220
34251
  const cause = error instanceof Error ? error : void 0;
34221
- throw new ProvisioningError(log.mask(`Failed to delete Glue Database ${logicalId}: ${describeAwsFailure(error).detail}`), resourceType, logicalId, physicalId, cause);
34252
+ throw this.wrapMaskedError(log.mask, error, (text) => new ProvisioningError(`Failed to delete Glue Database ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
34222
34253
  }
34223
34254
  }
34224
34255
  async createTable(logicalId, resourceType, properties, context) {
@@ -34297,6 +34328,7 @@ var GlueProvider = class {
34297
34328
  stateful: true,
34298
34329
  callerAccountId: this.callerAccountId,
34299
34330
  warn: log.warn,
34331
+ debug: log.debug,
34300
34332
  mask: log.mask
34301
34333
  });
34302
34334
  const catalogId = updateCatalogId(properties["CatalogId"]);
@@ -34326,7 +34358,7 @@ var GlueProvider = class {
34326
34358
  hint += live.versionId !== void 0 ? ` cdkd sent the version it read (${live.versionId}) as a precondition and AWS rejected the write, rather than let it put back the AWS-managed Parameters and StorageDescriptor members read a moment earlier — which for an Apache Iceberg table would have pinned it to an older metadata_location (an effective snapshot rollback).` : " AWS returned no VersionId on the pre-update read, so cdkd could not attach a precondition; AWS rejected the write on its own.";
34327
34359
  hint += ` Re-run the deploy to pick up the current values.`;
34328
34360
  }
34329
- throw this.wrapMaskedError(log.mask, error, (detail) => new ProvisioningError(`Failed to update Glue Table ${logicalId}: ${detail}${hint}`, resourceType, logicalId, physicalId, cause));
34361
+ throw this.wrapMaskedError(log.mask, error, (detail) => new ProvisioningError(`Failed to update Glue Table ${logicalId}: ${hint ? withoutFinalPeriod(detail) : detail}${hint}`, resourceType, logicalId, physicalId, cause));
34330
34362
  }
34331
34363
  }
34332
34364
  async deleteTable(logicalId, physicalId, resourceType, properties, context) {
@@ -34361,7 +34393,7 @@ var GlueProvider = class {
34361
34393
  return;
34362
34394
  }
34363
34395
  const cause = error instanceof Error ? error : void 0;
34364
- throw new ProvisioningError(log.mask(`Failed to delete Glue Table ${logicalId}: ${describeAwsFailure(error).detail}`), resourceType, logicalId, physicalId, cause);
34396
+ throw this.wrapMaskedError(log.mask, error, (text) => new ProvisioningError(`Failed to delete Glue Table ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
34365
34397
  }
34366
34398
  }
34367
34399
  preserveAwsManagedParameters(built, desiredParameters, previousParameters, liveParameters) {
@@ -34741,7 +34773,7 @@ var GlueWorkflowProvider = class {
34741
34773
  providerRegion = ambientRegion();
34742
34774
  logger = getLogger().child("GlueWorkflowProvider");
34743
34775
  wrapMaskedError(mask, error, build) {
34744
- return wrapMaskedAwsError(mask, error, build);
34776
+ return wrapGlueError(mask, (message) => this.logger.debug(message), error, build);
34745
34777
  }
34746
34778
  handledProperties = /* @__PURE__ */ new Map([["AWS::Glue::Workflow", /* @__PURE__ */ new Set([
34747
34779
  "Name",
@@ -34820,7 +34852,7 @@ var GlueWorkflowProvider = class {
34820
34852
  return;
34821
34853
  }
34822
34854
  const cause = error instanceof Error ? error : void 0;
34823
- throw new ProvisioningError(`Failed to delete Glue Workflow ${logicalId}: ${describeAwsFailure(error).detail}`, resourceType, logicalId, physicalId, cause);
34855
+ throw this.wrapMaskedError(context?.maskSecrets ?? ((text) => text), error, (text) => new ProvisioningError(`Failed to delete Glue Workflow ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
34824
34856
  }
34825
34857
  }
34826
34858
  async getAttribute(physicalId, _resourceType, attributeName) {
@@ -34896,7 +34928,7 @@ var GlueSecurityConfigurationProvider = class {
34896
34928
  providerRegion = ambientRegion();
34897
34929
  logger = getLogger().child("GlueSecurityConfigurationProvider");
34898
34930
  wrapMaskedError(mask, error, build) {
34899
- return wrapMaskedAwsError(mask, error, build);
34931
+ return wrapGlueError(mask, (message) => this.logger.debug(message), error, build);
34900
34932
  }
34901
34933
  handledProperties = /* @__PURE__ */ new Map([["AWS::Glue::SecurityConfiguration", /* @__PURE__ */ new Set(["Name", "EncryptionConfiguration"])]]);
34902
34934
  getClient() {
@@ -34948,7 +34980,7 @@ var GlueSecurityConfigurationProvider = class {
34948
34980
  return;
34949
34981
  }
34950
34982
  const cause = error instanceof Error ? error : void 0;
34951
- throw new ProvisioningError(`Failed to delete Glue SecurityConfiguration ${logicalId}: ${describeAwsFailure(error).detail}`, resourceType, logicalId, physicalId, cause);
34983
+ throw this.wrapMaskedError(context?.maskSecrets ?? ((text) => text), error, (text) => new ProvisioningError(`Failed to delete Glue SecurityConfiguration ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
34952
34984
  }
34953
34985
  }
34954
34986
  async getAttribute(physicalId, _resourceType, attributeName) {
@@ -35089,7 +35121,7 @@ var GlueJobProvider = class {
35089
35121
  providerRegion = ambientRegion();
35090
35122
  logger = getLogger().child("GlueJobProvider");
35091
35123
  wrapMaskedError(mask, error, build) {
35092
- return wrapMaskedAwsError(mask, error, build);
35124
+ return wrapGlueError(mask, (message) => this.logger.debug(message), error, build);
35093
35125
  }
35094
35126
  handledProperties = /* @__PURE__ */ new Map([["AWS::Glue::Job", /* @__PURE__ */ new Set([
35095
35127
  "Name",
@@ -35199,7 +35231,7 @@ var GlueJobProvider = class {
35199
35231
  return;
35200
35232
  }
35201
35233
  const cause = error instanceof Error ? error : void 0;
35202
- throw new ProvisioningError(`Failed to delete Glue Job ${logicalId}: ${describeAwsFailure(error).detail}`, resourceType, logicalId, physicalId, cause);
35234
+ throw this.wrapMaskedError(context?.maskSecrets ?? ((text) => text), error, (text) => new ProvisioningError(`Failed to delete Glue Job ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
35203
35235
  }
35204
35236
  }
35205
35237
  async getAttribute(physicalId, _resourceType, attributeName) {
@@ -35335,8 +35367,11 @@ function asRecord$1(value) {
35335
35367
  if (typeof value !== "object" || value === null || Array.isArray(value)) return;
35336
35368
  return value;
35337
35369
  }
35370
+ function withoutFinalPeriod(text) {
35371
+ return text.endsWith(".") ? text.slice(0, -1) : text;
35372
+ }
35338
35373
  function preUpdateReadFailureMessage(kind, iamAction, logicalId, detail) {
35339
- return `Failed to read the current Glue ${kind} ${logicalId} before update: ${detail}. cdkd reads the live ${kind.toLowerCase()} so AWS-managed Parameters (Apache Iceberg's table_type / metadata_location, a crawler's classification, Lake Formation markers) survive an update that Glue applies as a full replace. Grant ${iamAction} to the deploy identity — proceeding without the read would silently erase them.`;
35374
+ return `Failed to read the current Glue ${kind} ${logicalId} before update: ${withoutFinalPeriod(detail)}. cdkd reads the live ${kind.toLowerCase()} so AWS-managed Parameters (Apache Iceberg's table_type / metadata_location, a crawler's classification, Lake Formation markers) survive an update that Glue applies as a full replace. Grant ${iamAction} to the deploy identity — proceeding without the read would silently erase them.`;
35340
35375
  }
35341
35376
  function coerceNumber(value) {
35342
35377
  if (typeof value === "number") return value;
@@ -35383,7 +35418,7 @@ var GlueCrawlerProvider = class {
35383
35418
  providerRegion = ambientRegion();
35384
35419
  logger = getLogger().child("GlueCrawlerProvider");
35385
35420
  wrapMaskedError(mask, error, build) {
35386
- return wrapMaskedAwsError(mask, error, build);
35421
+ return wrapGlueError(mask, (message) => this.logger.debug(message), error, build);
35387
35422
  }
35388
35423
  handledProperties = /* @__PURE__ */ new Map([["AWS::Glue::Crawler", /* @__PURE__ */ new Set([
35389
35424
  "Name",
@@ -35490,14 +35525,23 @@ var GlueCrawlerProvider = class {
35490
35525
  log.debug(`Glue Crawler ${v(physicalId)} does not exist, skipping deletion`);
35491
35526
  return;
35492
35527
  }
35528
+ let failure = error;
35493
35529
  if (error instanceof CrawlerRunningException) {
35494
35530
  log.debug(`Glue Crawler ${v(physicalId)} is running; stopping before delete and retrying`);
35495
- await this.stopCrawlerAndWait(physicalId, log);
35496
- await this.getClient().send(new DeleteCrawlerCommand({ Name: physicalId }));
35497
- return;
35531
+ try {
35532
+ await this.stopCrawlerAndWait(physicalId, log);
35533
+ await this.getClient().send(new DeleteCrawlerCommand({ Name: physicalId }));
35534
+ return;
35535
+ } catch (retryError) {
35536
+ if (retryError instanceof EntityNotFoundException) {
35537
+ log.debug(`Glue Crawler ${v(physicalId)} does not exist, skipping deletion`);
35538
+ return;
35539
+ }
35540
+ failure = retryError;
35541
+ }
35498
35542
  }
35499
- const cause = error instanceof Error ? error : void 0;
35500
- throw new ProvisioningError(log.mask(`Failed to delete Glue Crawler ${logicalId}: ${describeAwsFailure(error).detail}`), resourceType, logicalId, physicalId, cause);
35543
+ const cause = failure instanceof Error ? failure : void 0;
35544
+ throw this.wrapMaskedError(log.mask, failure, (text) => new ProvisioningError(`Failed to delete Glue Crawler ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
35501
35545
  }
35502
35546
  }
35503
35547
  async stopCrawlerAndWait(physicalId, log = {
@@ -35645,7 +35689,7 @@ var GlueConnectionProvider = class {
35645
35689
  callerAccountId = makeCallerAccountResolver(this.providerRegion);
35646
35690
  logger = getLogger().child("GlueConnectionProvider");
35647
35691
  wrapMaskedError(mask, error, build) {
35648
- return wrapMaskedAwsError(mask, error, build);
35692
+ return wrapGlueError(mask, (message) => this.logger.debug(message), error, build);
35649
35693
  }
35650
35694
  handledProperties = /* @__PURE__ */ new Map([["AWS::Glue::Connection", /* @__PURE__ */ new Set(["ConnectionInput", "CatalogId"])]]);
35651
35695
  getClient() {
@@ -35707,6 +35751,7 @@ var GlueConnectionProvider = class {
35707
35751
  stateful: false,
35708
35752
  callerAccountId: this.callerAccountId,
35709
35753
  warn: log.warn,
35754
+ debug: log.debug,
35710
35755
  mask: log.mask
35711
35756
  });
35712
35757
  const catalogId = updateCatalogId(properties["CatalogId"]);
@@ -35746,7 +35791,7 @@ var GlueConnectionProvider = class {
35746
35791
  return;
35747
35792
  }
35748
35793
  const cause = error instanceof Error ? error : void 0;
35749
- throw new ProvisioningError(log.mask(`Failed to delete Glue Connection ${logicalId}: ${describeAwsFailure(error).detail}`), resourceType, logicalId, physicalId, cause);
35794
+ throw this.wrapMaskedError(log.mask, error, (text) => new ProvisioningError(`Failed to delete Glue Connection ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
35750
35795
  }
35751
35796
  }
35752
35797
  async getAttribute(physicalId, _resourceType, attributeName) {
@@ -35821,7 +35866,7 @@ var GlueTriggerProvider = class {
35821
35866
  providerRegion = ambientRegion();
35822
35867
  logger = getLogger().child("GlueTriggerProvider");
35823
35868
  wrapMaskedError(mask, error, build) {
35824
- return wrapMaskedAwsError(mask, error, build);
35869
+ return wrapGlueError(mask, (message) => this.logger.debug(message), error, build);
35825
35870
  }
35826
35871
  handledProperties = /* @__PURE__ */ new Map([["AWS::Glue::Trigger", /* @__PURE__ */ new Set([
35827
35872
  "Name",
@@ -35919,7 +35964,9 @@ var GlueTriggerProvider = class {
35919
35964
  await this.getClient().send(new StartTriggerCommand({ Name: physicalId }));
35920
35965
  } catch (restartError) {
35921
35966
  if (updateError === void 0) throw restartError;
35922
- log.warn(`Failed to re-activate Glue Trigger ${v(physicalId)} after a failed update: ${describeAwsFailure(restartError).detail}`);
35967
+ const restartFailure = describeAwsFailure(restartError);
35968
+ log.warn(`Failed to re-activate Glue Trigger ${v(physicalId)} after a failed update: ${restartFailure.summary}`);
35969
+ if (restartFailure.redacted) log.debug(`Failed to re-activate Glue Trigger ${v(physicalId)} after a failed update: ${restartFailure.detail}`);
35923
35970
  }
35924
35971
  if (updateError !== void 0) throw updateError;
35925
35972
  await applyGlueTagDiff(this.getClient(), () => this.resourceArn(physicalId), previousProperties["Tags"], properties["Tags"], resourceType, logicalId, log.warn);
@@ -35971,7 +36018,7 @@ var GlueTriggerProvider = class {
35971
36018
  return;
35972
36019
  }
35973
36020
  const cause = error instanceof Error ? error : void 0;
35974
- const failure = new ProvisioningError(`Failed to delete Glue Trigger ${logicalId}: ${describeAwsFailure(error).detail}`, resourceType, logicalId, physicalId, cause);
36021
+ const failure = this.wrapMaskedError(context?.maskSecrets ?? ((text) => text), error, (text) => new ProvisioningError(`Failed to delete Glue Trigger ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
35975
36022
  throw stripped ? markDeleteStarted(failure) : failure;
35976
36023
  }
35977
36024
  }
@@ -46716,4 +46763,4 @@ var ACMCertificateProvider = class {
46716
46763
 
46717
46764
  //#endregion
46718
46765
  export { ACMCertificateProvider, ASGProvider, AgentCoreBrowserProvider, AgentCoreCodeInterpreterProvider, AgentCoreEvaluatorProvider, AgentCoreRuntimeProvider, ApiGatewayProvider, ApiGatewayV2Provider, AppSyncProvider, BudgetsBudgetProvider, CloudFrontDistributionProvider, CloudFrontOACProvider, CloudFrontOAIProvider, CloudTrailProvider, CloudWatchAlarmProvider, CloudWatchAnomalyDetectorProvider, CodeBuildProvider, CodeCommitRepositoryProvider, CognitoUserPoolProvider, DLMLifecyclePolicyProvider, DocDBProvider, DocDBSubnetGroupProvider, DynamoDBGlobalTableProvider, DynamoDBTableProvider, EC2Provider, ECRProvider, ECSProvider, EFSProvider, ELBv2Provider, EMRClusterProvider, EMRInstanceFleetConfigProvider, EMRInstanceGroupConfigProvider, ElastiCacheProvider, EventBridgeBusProvider, EventBridgeRuleProvider, FSxFileSystemProvider, FirehoseProvider, GlueConnectionProvider, GlueCrawlerProvider, GlueJobProvider, GlueProvider, GlueSecurityConfigurationProvider, GlueTriggerProvider, GlueWorkflowProvider, IAMAccessKeyProvider, IAMInstanceProfileProvider, IAMManagedPolicyProvider, IAMPolicyProvider, IAMRoleProvider, IAMUserGroupProvider, KMSProvider, KinesisStreamConsumerProvider, KinesisStreamProvider, LambdaEventInvokeConfigProvider, LambdaEventSourceMappingProvider, LambdaFunctionProvider, LambdaLayerVersionProvider, LambdaMicrovmImageProvider, LambdaNetworkConnectorProvider, LambdaPermissionProvider, LambdaUrlProvider, LambdaWebFunctionEndpointProvider, LambdaWebFunctionRevisionProvider, LogsLogGroupProvider, NeptuneProvider, NestedStackProvider, PipesPipeProvider, RDSDBProxyEndpointProvider, RDSDBProxyProvider, RDSDBProxyTargetGroupProvider, RDSProvider, Route53Provider, S3BucketPolicyProvider, S3BucketProvider, S3DirectoryBucketProvider, S3TablesProvider, S3VectorsProvider, SNSSubscriptionProvider, SNSTopicPolicyProvider, SNSTopicProvider, SQSQueuePolicyProvider, SQSQueueProvider, SSMParameterProvider, SchedulerScheduleProvider, SecretsManagerSecretProvider, ServiceDiscoveryProvider, StepFunctionsProvider, WAFv2WebACLProvider, WaitConditionHandleProvider };
46719
- //# sourceMappingURL=provider-classes-BSUoljqw.js.map
46766
+ //# sourceMappingURL=provider-classes-DPwEHVDJ.js.map