@go-to-k/cdkd 0.301.12 → 0.301.14
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-CUvV78Th.js → asg-provider-ak7zMqaQ.js} +4 -4
- package/dist/{asg-provider-CUvV78Th.js.map → asg-provider-ak7zMqaQ.js.map} +1 -1
- package/dist/{aws-failure-text-YMKku1DS.js → aws-failure-text-CdgZn80O.js} +16 -2
- package/dist/{aws-failure-text-YMKku1DS.js.map → aws-failure-text-CdgZn80O.js.map} +1 -1
- package/dist/cli.js +2 -2
- package/dist/{deploy-engine-C_9bc6wV.js → deploy-engine-B0ObJCy0.js} +58 -11
- package/dist/deploy-engine-B0ObJCy0.js.map +1 -0
- package/dist/{iam-policy-targets-Df2XcLrn.js → iam-policy-targets-Dap4bLyq.js} +2 -2
- package/dist/{iam-policy-targets-Df2XcLrn.js.map → iam-policy-targets-Dap4bLyq.js.map} +1 -1
- package/dist/{iam-role-provider-4NDbgxK0.js → iam-role-provider-CukWclVP.js} +4 -4
- package/dist/{iam-role-provider-4NDbgxK0.js.map → iam-role-provider-CukWclVP.js.map} +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/{neptune-provider-BM-ndw-1.js → neptune-provider-BTkMpImX.js} +4 -4
- package/dist/{neptune-provider-BM-ndw-1.js.map → neptune-provider-BTkMpImX.js.map} +1 -1
- package/dist/{program-SAXkerq9.js → program-9BJEui0z.js} +17 -15
- package/dist/program-9BJEui0z.js.map +1 -0
- package/dist/{provider-classes-D1zpvb93.js → provider-classes-Dmz-lVVh.js} +346 -150
- package/dist/provider-classes-Dmz-lVVh.js.map +1 -0
- package/dist/{rds-provider-DUk3Oqhy.js → rds-provider-D0srL6Rb.js} +4 -4
- package/dist/{rds-provider-DUk3Oqhy.js.map → rds-provider-D0srL6Rb.js.map} +1 -1
- package/dist/{version-2S5I2Sx_.js → version-BTi3OoSX.js} +2 -2
- package/dist/{version-2S5I2Sx_.js.map → version-BTi3OoSX.js.map} +1 -1
- package/package.json +1 -1
- package/dist/deploy-engine-C_9bc6wV.js.map +0 -1
- package/dist/program-SAXkerq9.js.map +0 -1
- package/dist/provider-classes-D1zpvb93.js.map +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { r as getAwsClients } from "./aws-clients-B_CEQGE1.js";
|
|
2
|
-
import {
|
|
3
|
-
import { $ as protectedReplacementAdvice, $n as markReplayMayCollide, $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 markNameCollision, 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, Zt as withPasteableAwsProfile, _ as RecentIdSet, _r as markRedactedCause, _t as createMaskedLogSinks, a as onlySecretDerived, at as startInterruptWatch, b as isInsideWindow, bn as ResourceUpdateNotSupportedError, bt as maskDeep, c as recordedPrincipalsRepair, cr as isExplicitDenyError, ct as canonicalizeRoute53QueryName, dr as isTransientServerError, dt as compositeIdSkipResult, en as clientDefaultsFor, er as relayedNameCollision, et as renderDisableCommand, ft as logicalIdShown, g as AmbiguousCreateLatch, gr as markNonRetryable, gt as stateOrphanRecordRemedy, h as AMBIGUOUS_LATCH_TTL_MS, hr as isThrottlingError, ht as segmentAfterAnchor, i as holdsSecretDerivedEntry, in as CdkdError, ir as explicitDenyPolicyKind, it as isInterruptedWaitError, j as normalizeAwsTagsToCfn, jt as markAuxiliaryFailure, k as isPlainImportValue, lt as compositeIdFormatMessage, mr as isMarkedNonRetryable, nn as AccountIdUnavailableError, o as readPrincipalLists, ot as ElapsedBudgetRegistry, p as withRemovalDefaults, pr as THROTTLING_ERROR_NAMES, pt as packCompositeId, q as userPoolProtectionSite, qn as isNameCollisionError, qt as injectiveKeyPrefix, r as SECRET_DERIVED_READ_LIVE, sr as isAmbiguousOutcomeError, tn as credentialFingerprint, u as clearOnUpdateRemoval, ur as isRetryableTransientError, ut as compositeIdSeparatorRefusal, v as ambiguousAttemptLead, vn as ProvisioningError, vr as wrapMaskedAwsError, 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-
|
|
2
|
+
import { A as SECRET_REF_MAX_CODE_POINTS, H as safeMsg, I as displayIdent, L as displaySafe, R as displayStackName, S as generateResourceNameWithFallback, V as plainIdentOr, a as safeStringify, i as isAwsAuthoredFailure, n as describeAwsFailure, r as describeAwsStatusReason, s as getLogger, x as generateResourceName, z as isPasteableIdent } from "./aws-failure-text-CdgZn80O.js";
|
|
3
|
+
import { $ as protectedReplacementAdvice, $n as markReplayMayCollide, $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 markNameCollision, 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, Zt as withPasteableAwsProfile, _ as RecentIdSet, _r as markRedactedCause, _t as createMaskedLogSinks, a as onlySecretDerived, at as startInterruptWatch, b as isInsideWindow, bn as ResourceUpdateNotSupportedError, bt as maskDeep, c as recordedPrincipalsRepair, cr as isExplicitDenyError, ct as canonicalizeRoute53QueryName, dr as isTransientServerError, dt as compositeIdSkipResult, en as clientDefaultsFor, er as relayedNameCollision, et as renderDisableCommand, ft as logicalIdShown, g as AmbiguousCreateLatch, gr as markNonRetryable, gt as stateOrphanRecordRemedy, h as AMBIGUOUS_LATCH_TTL_MS, hr as isThrottlingError, ht as segmentAfterAnchor, i as holdsSecretDerivedEntry, in as CdkdError, ir as explicitDenyPolicyKind, it as isInterruptedWaitError, j as normalizeAwsTagsToCfn, jt as markAuxiliaryFailure, k as isPlainImportValue, lt as compositeIdFormatMessage, mr as isMarkedNonRetryable, nn as AccountIdUnavailableError, o as readPrincipalLists, ot as ElapsedBudgetRegistry, p as withRemovalDefaults, pr as THROTTLING_ERROR_NAMES, pt as packCompositeId, q as userPoolProtectionSite, qn as isNameCollisionError, qt as injectiveKeyPrefix, r as SECRET_DERIVED_READ_LIVE, sr as isAmbiguousOutcomeError, tn as credentialFingerprint, u as clearOnUpdateRemoval, ur as isRetryableTransientError, ut as compositeIdSeparatorRefusal, v as ambiguousAttemptLead, vn as ProvisioningError, vr as wrapMaskedAwsError, 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-Dap4bLyq.js";
|
|
4
4
|
import { s as ambientRegion } from "./aws-client-defaults-DBXBcg0J.js";
|
|
5
|
-
import { $r as reDisableInstanceApiTermination, Aa as refuseMalformedNestedChildOutputs, Ao as configStringRefusal, Bl as renderAssemblyPathEscape, Bo as canonicalLambdaFunctionName, Br as unchangedBehindSecretReference, C as hasCdkAutoDeleteTag, Co as isWarmThroughputDecrease, Cr as stringifyIfAssigned, Dl as canonicalizeRegion, Dn as getStackRecords, Do as coerceCfnInteger, Dt as isAccessDeniedError, E as markRefusedBeforeApplying, Eo as coerceCfnBoolean, Es as withoutPhysicalNameCopies, Et as chunks, F as findNestedTemplateTreeDefect, Fi as getAccountInfo, Fo as requireConfigString, Fs as physicalNameCopiesOf, Gi as parseWebACLArn, Gr as deleteSkipReason, Ho as sameLambdaFunctionAddress, I as isAbsoluteAssetPath, Is as recordAttributeIdCopy, Ji as passedParameterClassesOf, Jn as secretNamedAttributeNamesOf, Jr as markWaitAbandoned, Jt as REDACTED_DELETE_ADDRESS_SKIP_REASON, Kr as withIndeterminateGuard, Kt as getCurrentProducerRegions, L as listNestedTemplateRows, Mo as replayWarn, No as requireConfigArray, Nr as getCurrentResourceSecrets, Ol as derivePartitionAndUrlSuffix, Oo as configBooleanRefusal, Os as dynamicReferenceTokens, Ot as lookupEachName, Po as requireConfigObject, Ps as recoverMaskedOutput, Qr as observeThenDisableInstanceApiTermination, R as renderNestedTemplateTreeDefect, Rl as describeFileReadFailure, S as S3_AUTO_DELETE_OBJECTS_TAG, So as coerceWarmThroughput$1, Sr as definedAttributes, T as getPriorAttempts, Tc as rewriteTemplateAssetReferences, Tn as awaitInFlightSibling, To as toFiniteNumber, Vl as resolveAssemblyPath, Vo as lambdaFunctionNameForMask, Xa as refuseMalformedResourcesForDestroy, Xr as ec2InstanceProtectionSite, Xt as redactedDeleteAddressFields, Yt as isRedactedRecordedValue, Zr as isTerminationProtectionPropagationError, Zt as redactedDeleteAddressSkip, _ as deleteTableWithIndexBusyRetry, _r as planTagDiff, ai as isSettledInstanceState, b as waitForIndexesSettled, bc as stringifyValue, br as tagMapAsList, c as DynamoDBGlobalTableProvider, ci as s3BucketDualStackDomainName, co as withheldAccountClause, cr as earliestDefined, cs as recordReferenceProvenanceEntry, ct as getNestedRevertRun, d as compensateRemovedDeletionProtection, dt as revertNestedChildFromJournal, ei as reEnableInstanceApiTermination, es as passedNoEchoParametersOf, f as deleteBudgetKey, fo as withoutSilentDropProperties, fr as acquireIdempotencyToken, fs as hasMaskableValues, g as INDEX_SETTLE_POLL_INTERVAL_MS, gr as DBPROXY_TAG_OPTIONS, gt as withNestedStackContext, h as DELETE_INDEX_WAIT_PROCEED_NOTE, hi as outputReferenceProvenanceOf, hr as DBPROXY_TAGS_WHAT, ht as getCurrentNestedStackContext, jo as readConfigString, kn as replacedDeleteFailureVerdict, ko as configIntegerRefusal, kr as waitForLambdaFunctionActive, kt as withApiLimit, l as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, li as s3BucketRegionalDomainName, ls as snapshotPassProvenance, m as resolveDynamoDbDeleteBudgetMs, mr as markDeleteStarted, oi as s3BucketArn, os as markSameGenerationBag, p as resolveDynamoDbDeleteBudgetClock, pr as isRefusedByName, qr as isWaitAbandonedError, si as s3BucketDomainName, ss as redactForState, t as DeployEngine, ta as accountArgs, u as beginDeleteWait, ui as s3BucketWebsiteUrl, uo as findSilentDropProperties, ur as reserveStackCreateToken, v as maskedLogger, vr as readTagList, w as isTruthyCfnBoolean, wl as decodeListingKey, wo as toCfnInteger, x as ECR_AUTO_DELETE_IMAGES_TAG, xo as WARM_THROUGHPUT_MEMBERS, xr as tagPlanWarning, y as relayedIndexBusyDelete, yr as refuseMalformedDesiredTags, zl as displayAssemblyPath, zo as withRetry, zr as slowCcOperationTimeoutMs, zs as carriesSecretMask } from "./deploy-engine-
|
|
6
|
-
import { n as collectInlinePolicyNamesManagedBySiblings, r as IamCreateClientCache, t as IAMRoleProvider } from "./iam-role-provider-
|
|
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-
|
|
8
|
-
import { RDSProvider } from "./rds-provider-
|
|
9
|
-
import { NeptuneProvider } from "./neptune-provider-
|
|
10
|
-
import { ASGProvider } from "./asg-provider-
|
|
5
|
+
import { $r as reDisableInstanceApiTermination, Aa as refuseMalformedNestedChildOutputs, Ao as configStringRefusal, Bl as renderAssemblyPathEscape, Bo as canonicalLambdaFunctionName, Br as unchangedBehindSecretReference, C as hasCdkAutoDeleteTag, Co as isWarmThroughputDecrease, Cr as stringifyIfAssigned, Dl as canonicalizeRegion, Dn as getStackRecords, Do as coerceCfnInteger, Dt as isAccessDeniedError, E as markRefusedBeforeApplying, Eo as coerceCfnBoolean, Es as withoutPhysicalNameCopies, Et as chunks, F as findNestedTemplateTreeDefect, Fi as getAccountInfo, Fo as requireConfigString, Fs as physicalNameCopiesOf, Gi as parseWebACLArn, Gr as deleteSkipReason, Ho as sameLambdaFunctionAddress, I as isAbsoluteAssetPath, Is as recordAttributeIdCopy, Ji as passedParameterClassesOf, Jn as secretNamedAttributeNamesOf, Jr as markWaitAbandoned, Jt as REDACTED_DELETE_ADDRESS_SKIP_REASON, Kr as withIndeterminateGuard, Kt as getCurrentProducerRegions, L as listNestedTemplateRows, Mo as replayWarn, No as requireConfigArray, Nr as getCurrentResourceSecrets, Ol as derivePartitionAndUrlSuffix, Oo as configBooleanRefusal, Os as dynamicReferenceTokens, Ot as lookupEachName, Po as requireConfigObject, Ps as recoverMaskedOutput, Qr as observeThenDisableInstanceApiTermination, R as renderNestedTemplateTreeDefect, Rl as describeFileReadFailure, S as S3_AUTO_DELETE_OBJECTS_TAG, So as coerceWarmThroughput$1, Sr as definedAttributes, T as getPriorAttempts, Tc as rewriteTemplateAssetReferences, Tn as awaitInFlightSibling, To as toFiniteNumber, Vl as resolveAssemblyPath, Vo as lambdaFunctionNameForMask, Xa as refuseMalformedResourcesForDestroy, Xr as ec2InstanceProtectionSite, Xt as redactedDeleteAddressFields, Yt as isRedactedRecordedValue, Zr as isTerminationProtectionPropagationError, Zt as redactedDeleteAddressSkip, _ as deleteTableWithIndexBusyRetry, _r as planTagDiff, ai as isSettledInstanceState, b as waitForIndexesSettled, bc as stringifyValue, br as tagMapAsList, c as DynamoDBGlobalTableProvider, ci as s3BucketDualStackDomainName, co as withheldAccountClause, cr as earliestDefined, cs as recordReferenceProvenanceEntry, ct as getNestedRevertRun, d as compensateRemovedDeletionProtection, dt as revertNestedChildFromJournal, ei as reEnableInstanceApiTermination, es as passedNoEchoParametersOf, f as deleteBudgetKey, fo as withoutSilentDropProperties, fr as acquireIdempotencyToken, fs as hasMaskableValues, g as INDEX_SETTLE_POLL_INTERVAL_MS, gr as DBPROXY_TAG_OPTIONS, gt as withNestedStackContext, h as DELETE_INDEX_WAIT_PROCEED_NOTE, hi as outputReferenceProvenanceOf, hr as DBPROXY_TAGS_WHAT, ht as getCurrentNestedStackContext, jo as readConfigString, kn as replacedDeleteFailureVerdict, ko as configIntegerRefusal, kr as waitForLambdaFunctionActive, kt as withApiLimit, l as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, li as s3BucketRegionalDomainName, ls as snapshotPassProvenance, m as resolveDynamoDbDeleteBudgetMs, mr as markDeleteStarted, oi as s3BucketArn, os as markSameGenerationBag, p as resolveDynamoDbDeleteBudgetClock, pr as isRefusedByName, qr as isWaitAbandonedError, si as s3BucketDomainName, ss as redactForState, t as DeployEngine, ta as accountArgs, u as beginDeleteWait, ui as s3BucketWebsiteUrl, uo as findSilentDropProperties, ur as reserveStackCreateToken, v as maskedLogger, vr as readTagList, w as isTruthyCfnBoolean, wl as decodeListingKey, wo as toCfnInteger, x as ECR_AUTO_DELETE_IMAGES_TAG, xo as WARM_THROUGHPUT_MEMBERS, xr as tagPlanWarning, y as relayedIndexBusyDelete, yr as refuseMalformedDesiredTags, zl as displayAssemblyPath, zo as withRetry, zr as slowCcOperationTimeoutMs, zs as carriesSecretMask } from "./deploy-engine-B0ObJCy0.js";
|
|
6
|
+
import { n as collectInlinePolicyNamesManagedBySiblings, r as IamCreateClientCache, t as IAMRoleProvider } from "./iam-role-provider-CukWclVP.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-9BJEui0z.js";
|
|
8
|
+
import { RDSProvider } from "./rds-provider-D0srL6Rb.js";
|
|
9
|
+
import { NeptuneProvider } from "./neptune-provider-BTkMpImX.js";
|
|
10
|
+
import { ASGProvider } from "./asg-provider-ak7zMqaQ.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";
|
|
@@ -8789,8 +8789,12 @@ var LambdaUrlProvider = class {
|
|
|
8789
8789
|
operationSinks(maskSecrets, pairs) {
|
|
8790
8790
|
return withDerivedNameMasks(this.logger, createMaskedLogSinks(this.logger, maskSecrets), pairs);
|
|
8791
8791
|
}
|
|
8792
|
-
wrapMaskedError(
|
|
8793
|
-
|
|
8792
|
+
wrapMaskedError(log, error, build) {
|
|
8793
|
+
const failure = describeAwsFailure(error);
|
|
8794
|
+
if (!(error instanceof Error)) return build(log.mask(failure.detail));
|
|
8795
|
+
if (!failure.redacted) return wrapMaskedAwsError(log.mask, error, build);
|
|
8796
|
+
log.debug(build(log.mask(failure.detail)).message);
|
|
8797
|
+
return markRedactedCause(build(`${log.mask(failure.summary)}${relayedNameCollision(failure.detail)}`));
|
|
8794
8798
|
}
|
|
8795
8799
|
async create(logicalId, resourceType, properties, context) {
|
|
8796
8800
|
const targetFunctionArn = properties["TargetFunctionArn"];
|
|
@@ -8821,7 +8825,7 @@ var LambdaUrlProvider = class {
|
|
|
8821
8825
|
};
|
|
8822
8826
|
} catch (error) {
|
|
8823
8827
|
const cause = error instanceof Error ? error : void 0;
|
|
8824
|
-
throw this.wrapMaskedError(log
|
|
8828
|
+
throw this.wrapMaskedError(log, error, (text) => new ProvisioningError(`Failed to create Lambda URL ${logicalId}: ${text}`, resourceType, logicalId, targetFunctionArn, cause));
|
|
8825
8829
|
}
|
|
8826
8830
|
}
|
|
8827
8831
|
async update(logicalId, physicalId, resourceType, properties, previousProperties, context) {
|
|
@@ -8887,23 +8891,24 @@ var LambdaUrlProvider = class {
|
|
|
8887
8891
|
};
|
|
8888
8892
|
} catch (error) {
|
|
8889
8893
|
const cause = error instanceof Error ? error : void 0;
|
|
8890
|
-
throw this.wrapMaskedError(log
|
|
8894
|
+
throw this.wrapMaskedError(log, error, (text) => new ProvisioningError(`Failed to update Lambda URL ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
8891
8895
|
}
|
|
8892
8896
|
}
|
|
8893
|
-
async delete(logicalId, physicalId, resourceType,
|
|
8894
|
-
this.
|
|
8897
|
+
async delete(logicalId, physicalId, resourceType, properties, context) {
|
|
8898
|
+
const log = this.operationSinks(context?.maskSecrets, [[properties?.["TargetFunctionArn"], physicalId], [properties?.["TargetFunctionArn"], lambdaFunctionNameForMask(physicalId)]]);
|
|
8899
|
+
log.debug(`Deleting Lambda URL ${logicalId}: ${physicalId}`);
|
|
8895
8900
|
try {
|
|
8896
8901
|
await this.lambdaClient.send(new DeleteFunctionUrlConfigCommand({ FunctionName: physicalId }));
|
|
8897
|
-
|
|
8902
|
+
log.debug(`Successfully deleted Lambda URL ${logicalId}`);
|
|
8898
8903
|
} catch (error) {
|
|
8899
8904
|
if (error instanceof ResourceNotFoundException) {
|
|
8900
8905
|
const clientRegion = await this.lambdaClient.config.region();
|
|
8901
8906
|
assertRegionMatch(clientRegion, context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
8902
|
-
|
|
8907
|
+
log.debug(`Lambda URL ${physicalId} does not exist, skipping deletion`);
|
|
8903
8908
|
return;
|
|
8904
8909
|
}
|
|
8905
8910
|
const cause = error instanceof Error ? error : void 0;
|
|
8906
|
-
throw new ProvisioningError(`Failed to delete Lambda URL ${logicalId}: ${
|
|
8911
|
+
throw this.wrapMaskedError(log, error, (text) => new ProvisioningError(`Failed to delete Lambda URL ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
8907
8912
|
}
|
|
8908
8913
|
}
|
|
8909
8914
|
async getAttribute(physicalId, _resourceType, attributeName) {
|
|
@@ -9185,8 +9190,12 @@ var LambdaEventSourceMappingProvider = class {
|
|
|
9185
9190
|
}
|
|
9186
9191
|
return withDerivedNameMasks(this.logger, createMaskedLogSinks(this.logger, maskSecrets), pairs);
|
|
9187
9192
|
}
|
|
9188
|
-
wrapMaskedError(
|
|
9189
|
-
|
|
9193
|
+
wrapMaskedError(log, error, build) {
|
|
9194
|
+
const failure = describeAwsFailure(error);
|
|
9195
|
+
if (!(error instanceof Error)) return build(log.mask(failure.detail));
|
|
9196
|
+
if (!failure.redacted) return wrapMaskedAwsError(log.mask, error, build);
|
|
9197
|
+
log.debug(build(log.mask(failure.detail)).message);
|
|
9198
|
+
return markRedactedCause(build(`${log.mask(failure.summary)}${relayedNameCollision(failure.detail)}`));
|
|
9190
9199
|
}
|
|
9191
9200
|
async create(logicalId, resourceType, properties, context) {
|
|
9192
9201
|
const log = this.operationSinks(context?.maskSecrets, properties);
|
|
@@ -9257,7 +9266,7 @@ var LambdaEventSourceMappingProvider = class {
|
|
|
9257
9266
|
};
|
|
9258
9267
|
} catch (error) {
|
|
9259
9268
|
const cause = error instanceof Error ? error : void 0;
|
|
9260
|
-
throw this.wrapMaskedError(log
|
|
9269
|
+
throw this.wrapMaskedError(log, error, (text) => new ProvisioningError(`Failed to create event source mapping ${logicalId}: ${text}`, resourceType, logicalId, void 0, cause));
|
|
9261
9270
|
}
|
|
9262
9271
|
}
|
|
9263
9272
|
async reportPossibleMappingOrphans(logicalId, window, log, functionName, sourceArn) {
|
|
@@ -9297,7 +9306,7 @@ var LambdaEventSourceMappingProvider = class {
|
|
|
9297
9306
|
} catch (error) {
|
|
9298
9307
|
if (error instanceof CdkdError) throw error;
|
|
9299
9308
|
const cause = error instanceof Error ? error : void 0;
|
|
9300
|
-
throw this.wrapMaskedError(log
|
|
9309
|
+
throw this.wrapMaskedError(log, error, (text) => new ProvisioningError(`Failed to update event source mapping ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
9301
9310
|
}
|
|
9302
9311
|
}
|
|
9303
9312
|
async applyUpdate(logicalId, physicalId, resourceType, properties, previousProperties, log, context) {
|
|
@@ -9378,7 +9387,7 @@ var LambdaEventSourceMappingProvider = class {
|
|
|
9378
9387
|
log.debug(`Added/updated ${Object.keys(tagsToAdd).length} tag(s) on EventSourceMapping ${arn}`);
|
|
9379
9388
|
}
|
|
9380
9389
|
}
|
|
9381
|
-
async delete(logicalId, physicalId, resourceType,
|
|
9390
|
+
async delete(logicalId, physicalId, resourceType, properties, context) {
|
|
9382
9391
|
this.logger.debug(`Deleting event source mapping ${logicalId}: ${physicalId}`);
|
|
9383
9392
|
try {
|
|
9384
9393
|
try {
|
|
@@ -9402,7 +9411,7 @@ var LambdaEventSourceMappingProvider = class {
|
|
|
9402
9411
|
return;
|
|
9403
9412
|
}
|
|
9404
9413
|
const cause = error instanceof Error ? error : void 0;
|
|
9405
|
-
throw new ProvisioningError(`Failed to delete event source mapping ${logicalId}: ${
|
|
9414
|
+
throw this.wrapMaskedError(this.operationSinks(context?.maskSecrets, properties ?? {}), error, (text) => new ProvisioningError(`Failed to delete event source mapping ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
9406
9415
|
}
|
|
9407
9416
|
}
|
|
9408
9417
|
async readCurrentState(physicalId, _logicalId, _resourceType, properties) {
|
|
@@ -9939,7 +9948,7 @@ var LambdaMicrovmImageProvider = class {
|
|
|
9939
9948
|
getMinResourceTimeoutMs() {
|
|
9940
9949
|
return this.maxPollAttempts * this.pollIntervalMs;
|
|
9941
9950
|
}
|
|
9942
|
-
async create(logicalId, resourceType, properties) {
|
|
9951
|
+
async create(logicalId, resourceType, properties, context) {
|
|
9943
9952
|
const tagList = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
|
|
9944
9953
|
this.logger.debug(`Creating MicroVM image ${logicalId}`);
|
|
9945
9954
|
const name = properties["Name"];
|
|
@@ -9988,7 +9997,7 @@ var LambdaMicrovmImageProvider = class {
|
|
|
9988
9997
|
})
|
|
9989
9998
|
};
|
|
9990
9999
|
} catch (error) {
|
|
9991
|
-
const thrown = this.wrapError("create", logicalId, resourceType, void 0, error);
|
|
10000
|
+
const thrown = this.wrapError("create", logicalId, resourceType, void 0, error, context?.maskSecrets);
|
|
9992
10001
|
if (createdArn) markCreatedBeforeFailure(thrown, logicalId, resourceType, createdArn);
|
|
9993
10002
|
throw thrown;
|
|
9994
10003
|
}
|
|
@@ -10046,7 +10055,7 @@ var LambdaMicrovmImageProvider = class {
|
|
|
10046
10055
|
})
|
|
10047
10056
|
};
|
|
10048
10057
|
} catch (error) {
|
|
10049
|
-
throw this.wrapError("update", logicalId, resourceType, physicalId, error);
|
|
10058
|
+
throw this.wrapError("update", logicalId, resourceType, physicalId, error, context?.maskSecrets);
|
|
10050
10059
|
}
|
|
10051
10060
|
}
|
|
10052
10061
|
async delete(logicalId, physicalId, resourceType, _properties, context) {
|
|
@@ -10066,7 +10075,7 @@ var LambdaMicrovmImageProvider = class {
|
|
|
10066
10075
|
await this.waitForDeleted(physicalId, logicalId);
|
|
10067
10076
|
this.logger.debug(`Successfully deleted MicroVM image ${logicalId}`);
|
|
10068
10077
|
} catch (error) {
|
|
10069
|
-
throw this.wrapError("delete", logicalId, resourceType, physicalId, error);
|
|
10078
|
+
throw this.wrapError("delete", logicalId, resourceType, physicalId, error, context?.maskSecrets);
|
|
10070
10079
|
}
|
|
10071
10080
|
}
|
|
10072
10081
|
async getAttribute(physicalId, _resourceType, attributeName) {
|
|
@@ -10173,10 +10182,15 @@ var LambdaMicrovmImageProvider = class {
|
|
|
10173
10182
|
Tags: tagsToAdd
|
|
10174
10183
|
}));
|
|
10175
10184
|
}
|
|
10176
|
-
wrapError(operation, logicalId, resourceType, physicalId, error) {
|
|
10185
|
+
wrapError(operation, logicalId, resourceType, physicalId, error, mask) {
|
|
10177
10186
|
if (error instanceof ProvisioningError) return error;
|
|
10178
10187
|
const cause = error instanceof Error ? error : void 0;
|
|
10179
|
-
|
|
10188
|
+
const build = (text) => new ProvisioningError(`Failed to ${operation} MicroVM image ${logicalIdShown(logicalId)}: ${text}`, resourceType, logicalId, physicalId, cause);
|
|
10189
|
+
const failure = describeAwsFailure(error);
|
|
10190
|
+
if (!(error instanceof Error) || !failure.redacted) return build(failure.detail);
|
|
10191
|
+
const m = mask ?? ((text) => text);
|
|
10192
|
+
this.logger.debug(m(build(m(failure.detail)).message));
|
|
10193
|
+
return markRedactedCause(build(`${m(failure.summary)}${relayedNameCollision(failure.detail)}`));
|
|
10180
10194
|
}
|
|
10181
10195
|
};
|
|
10182
10196
|
const BUILD_AFFECTING_CFN_KEYS = [
|
|
@@ -10352,16 +10366,16 @@ var LambdaWebFunctionRevisionProvider = class {
|
|
|
10352
10366
|
const replayWindow = replayedSendWindow(response, attemptStartMs);
|
|
10353
10367
|
if (replayWindow !== void 0) await this.reportPossibleRevisionOrphans(logicalId, replayWindow, log, input.functionName);
|
|
10354
10368
|
if (!createdArn || !response.revisionId) throw new ProvisioningError(`CreateWebFunctionRevision succeeded but returned no revision ARN for ${logicalIdShown(logicalId)}`, resourceType, logicalId);
|
|
10355
|
-
const active = await this.waitForActive(input.functionName, createdArn, logicalId);
|
|
10369
|
+
const active = await this.waitForActive(input.functionName, createdArn, logicalId, resourceType, log.mask);
|
|
10356
10370
|
return {
|
|
10357
10371
|
physicalId: createdArn,
|
|
10358
10372
|
attributes: buildAttributes$2(active)
|
|
10359
10373
|
};
|
|
10360
10374
|
} catch (error) {
|
|
10361
|
-
const thrown = this.wrapError("create", logicalId, resourceType, void 0, error);
|
|
10375
|
+
const thrown = this.wrapError("create", logicalId, resourceType, void 0, error, log.mask);
|
|
10362
10376
|
let leftBehindArn = createdArn;
|
|
10363
10377
|
if (leftBehindArn) try {
|
|
10364
|
-
await this.delete(logicalId, leftBehindArn, resourceType);
|
|
10378
|
+
await this.delete(logicalId, leftBehindArn, resourceType, void 0, context?.maskSecrets ? { maskSecrets: context.maskSecrets } : void 0);
|
|
10365
10379
|
leftBehindArn = void 0;
|
|
10366
10380
|
} catch (cleanupError) {
|
|
10367
10381
|
log.warn(safeMsg`Failed to delete partially-created Lambda web function revision ${logicalId}: ${describeAwsFailure(cleanupError).detail}. The failed deploy records it for \`cdkd rollback --revert-failed\`, or delete it by hand`);
|
|
@@ -10430,7 +10444,7 @@ var LambdaWebFunctionRevisionProvider = class {
|
|
|
10430
10444
|
}
|
|
10431
10445
|
await this.waitForGone(parts.functionArn, physicalId, logicalId);
|
|
10432
10446
|
} catch (error) {
|
|
10433
|
-
throw this.wrapError("delete", logicalId, resourceType, physicalId, error);
|
|
10447
|
+
throw this.wrapError("delete", logicalId, resourceType, physicalId, error, context?.maskSecrets);
|
|
10434
10448
|
}
|
|
10435
10449
|
}
|
|
10436
10450
|
async getAttribute(physicalId, _resourceType, attributeName) {
|
|
@@ -10563,7 +10577,7 @@ var LambdaWebFunctionRevisionProvider = class {
|
|
|
10563
10577
|
}
|
|
10564
10578
|
return out;
|
|
10565
10579
|
}
|
|
10566
|
-
async waitForActive(functionName, revisionArn, logicalId) {
|
|
10580
|
+
async waitForActive(functionName, revisionArn, logicalId, resourceType, mask) {
|
|
10567
10581
|
for (let attempt = 1; attempt <= LAMBDA_WEB_MAX_POLL_ATTEMPTS; attempt++) {
|
|
10568
10582
|
const resp = await this.client.send(new GetWebFunctionRevisionCommand({
|
|
10569
10583
|
functionName,
|
|
@@ -10571,8 +10585,12 @@ var LambdaWebFunctionRevisionProvider = class {
|
|
|
10571
10585
|
}));
|
|
10572
10586
|
if (resp.state === "Active") return resp;
|
|
10573
10587
|
if (resp.state === "Failed") {
|
|
10574
|
-
const errors = (resp.errors ?? []).map((e) => `${e.errorCode ?? ""} ${e.errorMessage ?? ""}`.trim());
|
|
10575
|
-
|
|
10588
|
+
const errors = (resp.errors ?? []).map((e) => `${e.errorCode ?? ""} ${e.errorMessage ?? ""}`.trim()).filter((e) => e !== "");
|
|
10589
|
+
const reasonText = resp.stateReason || errors.length > 0 ? `${resp.stateReason || "no reason given"}` + (errors.length > 0 ? ` (${errors.join("; ")})` : "") : void 0;
|
|
10590
|
+
throw this.wrapStatusReasonError(mask, {
|
|
10591
|
+
code: resp.errors?.find((e) => e.errorCode)?.errorCode,
|
|
10592
|
+
message: reasonText
|
|
10593
|
+
}, (text, cause) => new ProvisioningError(`Lambda web function revision ${logicalIdShown(logicalId)} entered Failed: ${text}`, resourceType, logicalId, revisionArn, cause));
|
|
10576
10594
|
}
|
|
10577
10595
|
await sleep$1(500);
|
|
10578
10596
|
}
|
|
@@ -10593,10 +10611,23 @@ var LambdaWebFunctionRevisionProvider = class {
|
|
|
10593
10611
|
}
|
|
10594
10612
|
throw new Error(`Lambda web function revision ${logicalIdShown(logicalId)} was not fully deleted within ${LAMBDA_WEB_MAX_POLL_ATTEMPTS * 500 / 1e3}s.`);
|
|
10595
10613
|
}
|
|
10596
|
-
|
|
10614
|
+
wrapStatusReasonError(mask, reason, build) {
|
|
10615
|
+
const text = describeAwsStatusReason(reason, "no reason given");
|
|
10616
|
+
if (!text.redacted) return build(text.detail, void 0);
|
|
10617
|
+
const m = mask ?? ((value) => value);
|
|
10618
|
+
const cause = new Error(text.detail);
|
|
10619
|
+
this.logger.debug(m(build(m(text.detail), cause).message));
|
|
10620
|
+
return markRedactedCause(build(m(text.summary), cause));
|
|
10621
|
+
}
|
|
10622
|
+
wrapError(operation, logicalId, resourceType, physicalId, error, mask) {
|
|
10597
10623
|
if (error instanceof ProvisioningError) return error;
|
|
10598
10624
|
const cause = error instanceof Error ? error : void 0;
|
|
10599
|
-
|
|
10625
|
+
const build = (text) => new ProvisioningError(`Failed to ${operation} Lambda web function revision ${logicalIdShown(logicalId)}: ${text}`, resourceType, logicalId, physicalId, cause);
|
|
10626
|
+
const failure = describeAwsFailure(error);
|
|
10627
|
+
if (!(error instanceof Error) || !failure.redacted) return build(failure.detail);
|
|
10628
|
+
const m = mask ?? ((text) => text);
|
|
10629
|
+
this.logger.debug(m(build(m(failure.detail)).message));
|
|
10630
|
+
return markRedactedCause(build(`${m(failure.summary)}${relayedNameCollision(failure.detail)}`));
|
|
10600
10631
|
}
|
|
10601
10632
|
};
|
|
10602
10633
|
function buildAttributes$2(resp) {
|
|
@@ -10713,13 +10744,13 @@ var LambdaWebFunctionEndpointProvider = class {
|
|
|
10713
10744
|
try {
|
|
10714
10745
|
createdArn = (await this.client.send(new CreateWebFunctionEndpointCommand(input))).endpointArn;
|
|
10715
10746
|
if (!createdArn) throw new ProvisioningError(`CreateWebFunctionEndpoint succeeded but returned no endpoint ARN for ${logicalIdShown(logicalId)}`, resourceType, logicalId);
|
|
10716
|
-
const settled = await this.waitForSettled(input.functionName, input.endpointName, logicalId, "create");
|
|
10747
|
+
const settled = await this.waitForSettled(input.functionName, input.endpointName, logicalId, resourceType, "create", void 0, context?.maskSecrets);
|
|
10717
10748
|
return {
|
|
10718
10749
|
physicalId: createdArn,
|
|
10719
10750
|
attributes: buildAttributes$1(settled)
|
|
10720
10751
|
};
|
|
10721
10752
|
} catch (error) {
|
|
10722
|
-
const thrown = this.wrapError("create", logicalId, resourceType, void 0, error);
|
|
10753
|
+
const thrown = this.wrapError("create", logicalId, resourceType, void 0, error, context?.maskSecrets);
|
|
10723
10754
|
if (createdArn) markCreatedBeforeFailure(thrown, logicalId, resourceType, createdArn);
|
|
10724
10755
|
throw thrown;
|
|
10725
10756
|
}
|
|
@@ -10753,10 +10784,10 @@ var LambdaWebFunctionEndpointProvider = class {
|
|
|
10753
10784
|
return {
|
|
10754
10785
|
physicalId,
|
|
10755
10786
|
wasReplaced: false,
|
|
10756
|
-
attributes: buildAttributes$1(await this.waitForSettled(parts.functionArn, parts.childId, logicalId, "update", input.revisionWeights))
|
|
10787
|
+
attributes: buildAttributes$1(await this.waitForSettled(parts.functionArn, parts.childId, logicalId, resourceType, "update", input.revisionWeights, context?.maskSecrets, physicalId))
|
|
10757
10788
|
};
|
|
10758
10789
|
} catch (error) {
|
|
10759
|
-
throw this.wrapError("update", logicalId, resourceType, physicalId, error);
|
|
10790
|
+
throw this.wrapError("update", logicalId, resourceType, physicalId, error, context?.maskSecrets);
|
|
10760
10791
|
}
|
|
10761
10792
|
}
|
|
10762
10793
|
async delete(logicalId, physicalId, resourceType, _properties, context) {
|
|
@@ -10779,7 +10810,7 @@ var LambdaWebFunctionEndpointProvider = class {
|
|
|
10779
10810
|
}
|
|
10780
10811
|
await this.waitForGone(parts.functionArn, parts.childId, logicalId);
|
|
10781
10812
|
} catch (error) {
|
|
10782
|
-
throw this.wrapError("delete", logicalId, resourceType, physicalId, error);
|
|
10813
|
+
throw this.wrapError("delete", logicalId, resourceType, physicalId, error, context?.maskSecrets);
|
|
10783
10814
|
}
|
|
10784
10815
|
}
|
|
10785
10816
|
async getAttribute(physicalId, _resourceType, attributeName) {
|
|
@@ -10876,7 +10907,7 @@ var LambdaWebFunctionEndpointProvider = class {
|
|
|
10876
10907
|
n
|
|
10877
10908
|
};
|
|
10878
10909
|
}
|
|
10879
|
-
async waitForSettled(functionName, endpointName, logicalId, operation, sentWeights) {
|
|
10910
|
+
async waitForSettled(functionName, endpointName, logicalId, resourceType, operation, sentWeights, mask, physicalId) {
|
|
10880
10911
|
for (let attempt = 1; attempt <= LAMBDA_WEB_MAX_POLL_ATTEMPTS; attempt++) {
|
|
10881
10912
|
let resp;
|
|
10882
10913
|
try {
|
|
@@ -10891,8 +10922,8 @@ var LambdaWebFunctionEndpointProvider = class {
|
|
|
10891
10922
|
}
|
|
10892
10923
|
throw error;
|
|
10893
10924
|
}
|
|
10894
|
-
if (resp.state === "Failed") throw new
|
|
10895
|
-
if (resp.updateStatus === "Failed") throw new
|
|
10925
|
+
if (resp.state === "Failed") throw this.wrapStatusReasonError(mask, { message: resp.stateReason }, (text, cause) => new ProvisioningError(`Lambda web function endpoint ${logicalIdShown(logicalId)} entered Failed: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
10926
|
+
if (resp.updateStatus === "Failed") throw this.wrapStatusReasonError(mask, { message: resp.updateStatusReason }, (text, cause) => new ProvisioningError(`Lambda web function endpoint ${logicalIdShown(logicalId)} ${operation} failed: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
10896
10927
|
if (resp.state === "Active" && resp.updateStatus !== "InProgress" && (sentWeights === void 0 || sameWeights(sentWeights, resp.revisionWeights))) return resp;
|
|
10897
10928
|
await sleep$1(500);
|
|
10898
10929
|
}
|
|
@@ -10913,10 +10944,23 @@ var LambdaWebFunctionEndpointProvider = class {
|
|
|
10913
10944
|
}
|
|
10914
10945
|
throw new Error(`Lambda web function endpoint ${logicalIdShown(logicalId)} was not fully deleted within ${LAMBDA_WEB_MAX_POLL_ATTEMPTS * 500 / 1e3}s.`);
|
|
10915
10946
|
}
|
|
10916
|
-
|
|
10947
|
+
wrapStatusReasonError(mask, reason, build) {
|
|
10948
|
+
const text = describeAwsStatusReason(reason, "no reason given");
|
|
10949
|
+
if (!text.redacted) return build(text.detail, void 0);
|
|
10950
|
+
const m = mask ?? ((value) => value);
|
|
10951
|
+
const cause = new Error(text.detail);
|
|
10952
|
+
this.logger.debug(m(build(m(text.detail), cause).message));
|
|
10953
|
+
return markRedactedCause(build(m(text.summary), cause));
|
|
10954
|
+
}
|
|
10955
|
+
wrapError(operation, logicalId, resourceType, physicalId, error, mask) {
|
|
10917
10956
|
if (error instanceof ProvisioningError) return error;
|
|
10918
10957
|
const cause = error instanceof Error ? error : void 0;
|
|
10919
|
-
|
|
10958
|
+
const build = (text) => new ProvisioningError(`Failed to ${operation} Lambda web function endpoint ${logicalIdShown(logicalId)}: ${text}`, resourceType, logicalId, physicalId, cause);
|
|
10959
|
+
const failure = describeAwsFailure(error);
|
|
10960
|
+
if (!(error instanceof Error) || !failure.redacted) return build(failure.detail);
|
|
10961
|
+
const m = mask ?? ((text) => text);
|
|
10962
|
+
this.logger.debug(m(build(m(failure.detail)).message));
|
|
10963
|
+
return markRedactedCause(build(`${m(failure.summary)}${relayedNameCollision(failure.detail)}`));
|
|
10920
10964
|
}
|
|
10921
10965
|
};
|
|
10922
10966
|
function readRevisionWeights(value, fail) {
|
|
@@ -15969,7 +16013,7 @@ var EC2Provider = class {
|
|
|
15969
16013
|
])],
|
|
15970
16014
|
["AWS::EC2::SubnetNetworkAclAssociation", /* @__PURE__ */ new Set(["SubnetId", "NetworkAclId"])]
|
|
15971
16015
|
]);
|
|
15972
|
-
removalDefaults = /* @__PURE__ */ new Map([["AWS::EC2::VPC", /* @__PURE__ */ new Map([["EnableDnsHostnames", false], ["EnableDnsSupport", true]])]]);
|
|
16016
|
+
removalDefaults = /* @__PURE__ */ new Map([["AWS::EC2::VPC", /* @__PURE__ */ new Map([["EnableDnsHostnames", false], ["EnableDnsSupport", true]])], ["AWS::EC2::Instance", /* @__PURE__ */ new Map([["Monitoring", false]])]]);
|
|
15973
16017
|
unhandledByDesign = /* @__PURE__ */ new Map([
|
|
15974
16018
|
["AWS::EC2::Instance", /* @__PURE__ */ new Map([["ElasticGpuSpecifications", "AWS Elastic GPU end-of-life (announced 2023-11); no replacement API"], ["ElasticInferenceAccelerators", "AWS Elastic Inference end-of-life 2024-04; use AWS Inferentia / Trainium accelerator instance families instead"]])],
|
|
15975
16019
|
["AWS::EC2::SecurityGroupIngress", /* @__PURE__ */ new Map([["GroupName", "EC2-Classic-only — use GroupId for VPC security groups (EC2-Classic retired 2022-08-15)"], ["SourceSecurityGroupName", "EC2-Classic-only — use SourceSecurityGroupId for VPC peer security groups (EC2-Classic retired 2022-08-15)"]])],
|
|
@@ -16145,7 +16189,7 @@ var EC2Provider = class {
|
|
|
16145
16189
|
case "AWS::EC2::SubnetRouteTableAssociation": return this.updateSubnetRouteTableAssociation(logicalId, physicalId);
|
|
16146
16190
|
case "AWS::EC2::SecurityGroup": return this.updateSecurityGroup(logicalId, physicalId, resourceType, properties, previousProperties);
|
|
16147
16191
|
case "AWS::EC2::SecurityGroupIngress": return this.updateSecurityGroupIngress(logicalId, physicalId, resourceType, properties, previousProperties, context?.maskSecrets, context?.replayingState === true, context?.recordedAttributes);
|
|
16148
|
-
case "AWS::EC2::Instance": return this.updateInstance(logicalId, physicalId, resourceType, properties, previousProperties);
|
|
16192
|
+
case "AWS::EC2::Instance": return this.updateInstance(logicalId, physicalId, resourceType, properties, previousProperties, context);
|
|
16149
16193
|
case "AWS::EC2::NetworkAclEntry": return this.updateNetworkAclEntry(logicalId, physicalId, resourceType, properties, previousProperties, context);
|
|
16150
16194
|
case "AWS::EC2::NetworkAcl":
|
|
16151
16195
|
case "AWS::EC2::SubnetNetworkAclAssociation": throw new ResourceUpdateNotSupportedError(resourceType, logicalId, "AWS provides no in-place Update API for this EC2 sub-resource type; every property change requires Delete + Create. Re-deploy with cdkd deploy --replace, or destroy + redeploy.");
|
|
@@ -17914,9 +17958,10 @@ var EC2Provider = class {
|
|
|
17914
17958
|
isInstanceProfilePropagationError(msg) {
|
|
17915
17959
|
return msg.includes("Invalid IAM Instance Profile") || msg.includes("NoSuchEntity") || msg.includes("not authorized") || msg.includes("InvalidParameterValue") && msg.includes("instance profile");
|
|
17916
17960
|
}
|
|
17917
|
-
async updateInstance(logicalId, physicalId, resourceType, properties, previousProperties) {
|
|
17961
|
+
async updateInstance(logicalId, physicalId, resourceType, properties, previousProperties, context) {
|
|
17918
17962
|
this.logger.debug(`Updating EC2 Instance ${logicalId}: ${physicalId}`);
|
|
17919
17963
|
refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId, physicalId);
|
|
17964
|
+
this.guardTerminationProtectionRemoval(logicalId, physicalId, resourceType, properties, previousProperties, context);
|
|
17920
17965
|
try {
|
|
17921
17966
|
await this.applyTagDiff(physicalId, resourceType, logicalId, previousProperties["Tags"], properties["Tags"]);
|
|
17922
17967
|
await this.updateInstanceSecurityProps(physicalId, properties, previousProperties);
|
|
@@ -17931,6 +17976,14 @@ var EC2Provider = class {
|
|
|
17931
17976
|
throw this.wrapCaughtError(error, (text) => new ProvisioningError(`Failed to update EC2 Instance ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
17932
17977
|
}
|
|
17933
17978
|
}
|
|
17979
|
+
guardTerminationProtectionRemoval(logicalId, physicalId, resourceType, properties, previousProperties, context) {
|
|
17980
|
+
if (!(context?.removedProperties !== void 0 ? context.removedProperties.has("DisableApiTermination") : previousProperties["DisableApiTermination"] !== void 0 && properties["DisableApiTermination"] === void 0)) return;
|
|
17981
|
+
if (context?.replayingState === true) {
|
|
17982
|
+
if (this.coerceBool(previousProperties["DisableApiTermination"]) === true) this.logger.warn(safeMsg`${logicalId} (${resourceType}): the state being restored does not declare DisableApiTermination; the rollback leaves termination protection at its current AWS value. Set DisableApiTermination to false to turn termination protection off.`);
|
|
17983
|
+
return;
|
|
17984
|
+
}
|
|
17985
|
+
throw markNonRetryable(new ProvisioningError(safeMsg`${logicalId} (${resourceType}): DisableApiTermination was removed from the template, and CloudFormation fails that update for an existing instance. Keep it declared, and set it to false to turn termination protection off. The instance was not updated.`, resourceType, logicalId, physicalId));
|
|
17986
|
+
}
|
|
17934
17987
|
async updateInstanceSecurityProps(physicalId, properties, previousProperties) {
|
|
17935
17988
|
const newDisableApiTermination = this.coerceBool(properties["DisableApiTermination"]);
|
|
17936
17989
|
const oldDisableApiTermination = this.coerceBool(previousProperties["DisableApiTermination"]);
|
|
@@ -19480,6 +19533,7 @@ var ApiGatewayProvider = class ApiGatewayProvider {
|
|
|
19480
19533
|
])]
|
|
19481
19534
|
]);
|
|
19482
19535
|
unhandledByDesign = /* @__PURE__ */ new Map([["AWS::ApiGateway::Deployment", /* @__PURE__ */ new Map([["StageName", "CFn-only convenience for inline-creating a Stage from a Deployment; declare AWS::ApiGateway::Stage explicitly to attach to this Deployment"], ["StageDescription", "CFn-only convenience for inline-creating a Stage; declare AWS::ApiGateway::Stage with the Description property instead"]])]]);
|
|
19536
|
+
removalDefaults = /* @__PURE__ */ new Map([["AWS::ApiGateway::Account", /* @__PURE__ */ new Map([["CloudWatchRoleArn", ""]])]]);
|
|
19483
19537
|
static MAX_IAM_RETRIES = 3;
|
|
19484
19538
|
static IAM_RETRY_DELAY_MS = 1e4;
|
|
19485
19539
|
constructor() {
|
|
@@ -19528,7 +19582,9 @@ var ApiGatewayProvider = class ApiGatewayProvider {
|
|
|
19528
19582
|
async update(logicalId, physicalId, resourceType, properties, previousProperties, context) {
|
|
19529
19583
|
const log = createMaskedLogSinks(this.logger, context?.maskSecrets);
|
|
19530
19584
|
switch (resourceType) {
|
|
19531
|
-
case "AWS::ApiGateway::Account":
|
|
19585
|
+
case "AWS::ApiGateway::Account":
|
|
19586
|
+
properties = withRemovalDefaults(this.removalDefaults, resourceType, properties, previousProperties, context);
|
|
19587
|
+
return this.updateAccount(logicalId, physicalId, resourceType, properties, log);
|
|
19532
19588
|
case "AWS::ApiGateway::Authorizer": return this.updateAuthorizer(logicalId, physicalId, resourceType, properties, previousProperties, log);
|
|
19533
19589
|
case "AWS::ApiGateway::Resource": return this.updateResource(logicalId, physicalId, resourceType, properties, previousProperties, log);
|
|
19534
19590
|
case "AWS::ApiGateway::Deployment": return this.updateDeployment(logicalId, physicalId, resourceType);
|
|
@@ -23397,6 +23453,14 @@ var AgentCoreEvaluatorProvider = class {
|
|
|
23397
23453
|
"KmsKeyArn",
|
|
23398
23454
|
"Tags"
|
|
23399
23455
|
])]]);
|
|
23456
|
+
removalHandledInUpdate = /* @__PURE__ */ new Map([["AWS::BedrockAgentCore::Evaluator", /* @__PURE__ */ new Set([
|
|
23457
|
+
"EvaluatorName",
|
|
23458
|
+
"EvaluatorConfig",
|
|
23459
|
+
"Level",
|
|
23460
|
+
"Description",
|
|
23461
|
+
"KmsKeyArn",
|
|
23462
|
+
"Tags"
|
|
23463
|
+
])]]);
|
|
23400
23464
|
constructor() {
|
|
23401
23465
|
const awsClients = getAwsClients();
|
|
23402
23466
|
this.client = awsClients.bedrockAgentCoreControl;
|
|
@@ -31608,6 +31672,10 @@ var ElastiCacheProvider = class {
|
|
|
31608
31672
|
//#region src/provisioning/providers/servicediscovery-provider.ts
|
|
31609
31673
|
const PUBLIC_DNS_NAMESPACE_DEFAULT_SOA_TTL = 60;
|
|
31610
31674
|
const PRIVATE_DNS_NAMESPACE_DEFAULT_SOA_TTL = 15;
|
|
31675
|
+
const CREATE_SERVICE_NAMESPACE_LAG_MAX_RETRIES = 9;
|
|
31676
|
+
const CREATE_SERVICE_NAMESPACE_LAG_INITIAL_DELAY_MS = 500;
|
|
31677
|
+
const CREATE_SERVICE_NAMESPACE_LAG_MAX_DELAY_MS = 4e3;
|
|
31678
|
+
const CREATE_SERVICE_NAMESPACE_LAG_BACKOFF_SECONDS = Array.from({ length: CREATE_SERVICE_NAMESPACE_LAG_MAX_RETRIES }, (_, i) => Math.min(CREATE_SERVICE_NAMESPACE_LAG_INITIAL_DELAY_MS * 2 ** i, CREATE_SERVICE_NAMESPACE_LAG_MAX_DELAY_MS)).reduce((a, b) => a + b, 0) / 1e3;
|
|
31611
31679
|
const NAMESPACE_TYPES = [
|
|
31612
31680
|
"AWS::ServiceDiscovery::PrivateDnsNamespace",
|
|
31613
31681
|
"AWS::ServiceDiscovery::HttpNamespace",
|
|
@@ -31618,6 +31686,19 @@ const NAMESPACE_KIND_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
31618
31686
|
["AWS::ServiceDiscovery::PublicDnsNamespace", "DNS_PUBLIC"],
|
|
31619
31687
|
["AWS::ServiceDiscovery::HttpNamespace", "HTTP"]
|
|
31620
31688
|
]);
|
|
31689
|
+
function sameAsRecorded(desired, recorded) {
|
|
31690
|
+
if (typeof recorded === "string" && isRecordedStandIn(recorded)) return false;
|
|
31691
|
+
if (Array.isArray(desired) && Array.isArray(recorded)) return desired.length === recorded.length && desired.every((item, i) => sameAsRecorded(item, recorded[i]));
|
|
31692
|
+
if (desired !== null && recorded !== null && typeof desired === "object" && typeof recorded === "object" && !Array.isArray(desired) && !Array.isArray(recorded)) {
|
|
31693
|
+
const d = desired;
|
|
31694
|
+
const r = recorded;
|
|
31695
|
+
return [.../* @__PURE__ */ new Set([...Object.keys(d), ...Object.keys(r)])].every((key) => Object.hasOwn(d, key) === Object.hasOwn(r, key) && sameAsRecorded(d[key], r[key]));
|
|
31696
|
+
}
|
|
31697
|
+
return isDeepStrictEqual(desired, recorded);
|
|
31698
|
+
}
|
|
31699
|
+
function isRecordedStandIn(value) {
|
|
31700
|
+
return dynamicReferenceTokens(value).length > 0 || value.includes("***");
|
|
31701
|
+
}
|
|
31621
31702
|
const NAMESPACE_ID_PATTERN = /^ns-[a-z0-9]{16}$/;
|
|
31622
31703
|
const SERVICE_ID_PATTERN = /^srv-[a-z0-9]{16}$/;
|
|
31623
31704
|
var ServiceDiscoveryProvider = class ServiceDiscoveryProvider {
|
|
@@ -31669,6 +31750,17 @@ var ServiceDiscoveryProvider = class ServiceDiscoveryProvider {
|
|
|
31669
31750
|
"Name",
|
|
31670
31751
|
"Tags",
|
|
31671
31752
|
"Properties"
|
|
31753
|
+
])],
|
|
31754
|
+
["AWS::ServiceDiscovery::Service", /* @__PURE__ */ new Set([
|
|
31755
|
+
"Name",
|
|
31756
|
+
"NamespaceId",
|
|
31757
|
+
"Type",
|
|
31758
|
+
"HealthCheckCustomConfig",
|
|
31759
|
+
"Tags",
|
|
31760
|
+
"ServiceAttributes",
|
|
31761
|
+
"Description",
|
|
31762
|
+
"DnsConfig",
|
|
31763
|
+
"HealthCheckConfig"
|
|
31672
31764
|
])]
|
|
31673
31765
|
]);
|
|
31674
31766
|
getClient() {
|
|
@@ -31970,16 +32062,31 @@ var ServiceDiscoveryProvider = class ServiceDiscoveryProvider {
|
|
|
31970
32062
|
if (!name) throw new ProvisioningError(`Name is required for ServiceDiscovery Service ${logicalId}`, resourceType, logicalId);
|
|
31971
32063
|
let leftBehindServiceId;
|
|
31972
32064
|
try {
|
|
31973
|
-
const
|
|
31974
|
-
|
|
31975
|
-
|
|
31976
|
-
|
|
31977
|
-
|
|
31978
|
-
|
|
31979
|
-
|
|
31980
|
-
|
|
31981
|
-
|
|
31982
|
-
|
|
32065
|
+
const watch = startInterruptWatch(`Cloud Map service ${logicalId}`);
|
|
32066
|
+
let response;
|
|
32067
|
+
try {
|
|
32068
|
+
response = await withRetry(() => client.send(new CreateServiceCommand$1({
|
|
32069
|
+
Name: name,
|
|
32070
|
+
...namespaceId && { NamespaceId: namespaceId },
|
|
32071
|
+
...description && { Description: description },
|
|
32072
|
+
...dnsConfig && { DnsConfig: dnsConfig },
|
|
32073
|
+
...healthCheckCustomConfig && { HealthCheckCustomConfig: healthCheckCustomConfig },
|
|
32074
|
+
...healthCheckConfig && { HealthCheckConfig: healthCheckConfig },
|
|
32075
|
+
...tags.length > 0 && { Tags: tags },
|
|
32076
|
+
...type && { Type: type }
|
|
32077
|
+
})), logicalId, {
|
|
32078
|
+
maxRetries: CREATE_SERVICE_NAMESPACE_LAG_MAX_RETRIES,
|
|
32079
|
+
initialDelayMs: CREATE_SERVICE_NAMESPACE_LAG_INITIAL_DELAY_MS,
|
|
32080
|
+
maxDelayMs: CREATE_SERVICE_NAMESPACE_LAG_MAX_DELAY_MS,
|
|
32081
|
+
isRetryable: (_text, error) => error instanceof NamespaceNotFound,
|
|
32082
|
+
logger: this.maskedRetryLogger(maskSecrets),
|
|
32083
|
+
isInterrupted: watch.isInterrupted,
|
|
32084
|
+
onInterrupted: watch.onInterrupted
|
|
32085
|
+
});
|
|
32086
|
+
} finally {
|
|
32087
|
+
watch.dispose();
|
|
32088
|
+
}
|
|
32089
|
+
const service = response.Service;
|
|
31983
32090
|
if (!service || !service.Id) throw new Error("CreateService did not return Service ID");
|
|
31984
32091
|
const serviceId = service.Id;
|
|
31985
32092
|
leftBehindServiceId = serviceId;
|
|
@@ -32023,7 +32130,8 @@ var ServiceDiscoveryProvider = class ServiceDiscoveryProvider {
|
|
|
32023
32130
|
};
|
|
32024
32131
|
} catch (error) {
|
|
32025
32132
|
const cause = error instanceof Error ? error : void 0;
|
|
32026
|
-
const
|
|
32133
|
+
const retriedNote = error instanceof NamespaceNotFound ? ` (Cloud Map still rejected the namespace after ${CREATE_SERVICE_NAMESPACE_LAG_BACKOFF_SECONDS}s of retries)` : "";
|
|
32134
|
+
const thrown = this.wrapMaskedError(maskerOrIdentity(maskSecrets), error, (text) => new ProvisioningError(`Failed to create service discovery service ${logicalId}: ${text}${retriedNote}`, resourceType, logicalId, void 0, cause));
|
|
32027
32135
|
if (leftBehindServiceId) markCreatedBeforeFailure(thrown, logicalId, resourceType, leftBehindServiceId);
|
|
32028
32136
|
throw thrown;
|
|
32029
32137
|
}
|
|
@@ -32032,17 +32140,14 @@ var ServiceDiscoveryProvider = class ServiceDiscoveryProvider {
|
|
|
32032
32140
|
this.logger.debug(`Updating service discovery service ${logicalId}: ${physicalId}`);
|
|
32033
32141
|
refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId, physicalId);
|
|
32034
32142
|
const client = this.getClient();
|
|
32035
|
-
const
|
|
32036
|
-
|
|
32037
|
-
const dnsConfig = properties["DnsConfig"];
|
|
32038
|
-
if (dnsConfig?.DnsRecords !== void 0) serviceChange.DnsConfig = { DnsRecords: dnsConfig.DnsRecords };
|
|
32039
|
-
if (properties["HealthCheckConfig"] !== void 0) serviceChange.HealthCheckConfig = properties["HealthCheckConfig"];
|
|
32143
|
+
const servicePlan = this.planServiceChange(properties, previousProperties);
|
|
32144
|
+
const serviceChange = servicePlan?.change ?? {};
|
|
32040
32145
|
const newAttrs = this.normalizeServiceAttributes(properties["ServiceAttributes"]);
|
|
32041
32146
|
const oldAttrs = this.normalizeServiceAttributes(previousProperties["ServiceAttributes"]);
|
|
32042
32147
|
const upsertAttrs = {};
|
|
32043
32148
|
for (const [k, v] of Object.entries(newAttrs)) if (oldAttrs[k] !== v) upsertAttrs[k] = v;
|
|
32044
32149
|
const removedAttrKeys = Object.keys(oldAttrs).filter((k) => !Object.hasOwn(newAttrs, k));
|
|
32045
|
-
const hasServiceChange =
|
|
32150
|
+
const hasServiceChange = servicePlan !== void 0;
|
|
32046
32151
|
const hasAttrUpsert = Object.keys(upsertAttrs).length > 0;
|
|
32047
32152
|
const hasAttrRemove = removedAttrKeys.length > 0;
|
|
32048
32153
|
const tagPlan = planTagDiff(previousProperties["Tags"], properties["Tags"]);
|
|
@@ -32056,8 +32161,10 @@ var ServiceDiscoveryProvider = class ServiceDiscoveryProvider {
|
|
|
32056
32161
|
wasReplaced: false
|
|
32057
32162
|
};
|
|
32058
32163
|
}
|
|
32164
|
+
let knownArn;
|
|
32059
32165
|
try {
|
|
32060
32166
|
if (hasServiceChange) {
|
|
32167
|
+
if (servicePlan.keepRemovedFromLive) knownArn = await this.keepUndeclaredServiceFields(physicalId, serviceChange);
|
|
32061
32168
|
const operationId = (await client.send(new UpdateServiceCommand$1({
|
|
32062
32169
|
Id: physicalId,
|
|
32063
32170
|
Service: serviceChange
|
|
@@ -32094,7 +32201,7 @@ var ServiceDiscoveryProvider = class ServiceDiscoveryProvider {
|
|
|
32094
32201
|
}
|
|
32095
32202
|
}
|
|
32096
32203
|
if (hasTagChange) {
|
|
32097
|
-
const arn = (await client.send(new GetServiceCommand({ Id: physicalId }))).Service?.Arn;
|
|
32204
|
+
const arn = knownArn ?? (await client.send(new GetServiceCommand({ Id: physicalId }))).Service?.Arn;
|
|
32098
32205
|
if (!arn) throw new ProvisioningError(safeMsg`Could not resolve the ARN of service discovery service ${logicalId}; its Tags were not updated`, resourceType, logicalId, physicalId);
|
|
32099
32206
|
if (tagPlan.remove.length > 0) await client.send(new UntagResourceCommand$16({
|
|
32100
32207
|
ResourceARN: arn,
|
|
@@ -32119,6 +32226,30 @@ var ServiceDiscoveryProvider = class ServiceDiscoveryProvider {
|
|
|
32119
32226
|
throw this.wrapMaskedError(maskerOrIdentity(maskSecrets), error, (text) => new ProvisioningError(`Failed to update service discovery service ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
32120
32227
|
}
|
|
32121
32228
|
}
|
|
32229
|
+
planServiceChange(properties, previousProperties) {
|
|
32230
|
+
const declaredDiffers = (key) => properties[key] !== void 0 && !sameAsRecorded(properties[key], previousProperties[key]);
|
|
32231
|
+
const change = {};
|
|
32232
|
+
if (properties["Description"] !== void 0) change.Description = properties["Description"];
|
|
32233
|
+
const desiredRecords = properties["DnsConfig"]?.DnsRecords;
|
|
32234
|
+
const previousRecords = previousProperties["DnsConfig"]?.DnsRecords;
|
|
32235
|
+
if (desiredRecords !== void 0) change.DnsConfig = { DnsRecords: desiredRecords };
|
|
32236
|
+
if (properties["HealthCheckConfig"] !== void 0) change.HealthCheckConfig = properties["HealthCheckConfig"];
|
|
32237
|
+
if (declaredDiffers("Description") || declaredDiffers("HealthCheckConfig")) return {
|
|
32238
|
+
change,
|
|
32239
|
+
keepRemovedFromLive: false
|
|
32240
|
+
};
|
|
32241
|
+
if (desiredRecords !== void 0 && !sameAsRecorded(desiredRecords, previousRecords)) return {
|
|
32242
|
+
change,
|
|
32243
|
+
keepRemovedFromLive: true
|
|
32244
|
+
};
|
|
32245
|
+
}
|
|
32246
|
+
async keepUndeclaredServiceFields(physicalId, serviceChange) {
|
|
32247
|
+
if (serviceChange.Description !== void 0 && serviceChange.HealthCheckConfig !== void 0) return;
|
|
32248
|
+
const live = (await this.getClient().send(new GetServiceCommand({ Id: physicalId }))).Service;
|
|
32249
|
+
if (serviceChange.Description === void 0 && live?.Description !== void 0) serviceChange.Description = live.Description;
|
|
32250
|
+
if (serviceChange.HealthCheckConfig === void 0 && live?.HealthCheckConfig !== void 0) serviceChange.HealthCheckConfig = live.HealthCheckConfig;
|
|
32251
|
+
return live?.Arn;
|
|
32252
|
+
}
|
|
32122
32253
|
async deleteService(logicalId, physicalId, resourceType, context) {
|
|
32123
32254
|
this.logger.debug(`Deleting service discovery service ${logicalId}: ${physicalId}`);
|
|
32124
32255
|
const client = this.getClient();
|
|
@@ -39205,8 +39336,12 @@ var EFSProvider = class {
|
|
|
39205
39336
|
this.getClient();
|
|
39206
39337
|
return this.mountTargetCreateClient;
|
|
39207
39338
|
}
|
|
39208
|
-
wrapMaskedError(
|
|
39209
|
-
|
|
39339
|
+
wrapMaskedError(log, error, build) {
|
|
39340
|
+
const failure = describeAwsFailure(error);
|
|
39341
|
+
if (!(error instanceof Error)) return build(log.mask(failure.detail));
|
|
39342
|
+
if (!failure.redacted) return wrapMaskedAwsError(log.mask, error, build);
|
|
39343
|
+
log.debug(build(log.mask(failure.detail)).message);
|
|
39344
|
+
return markRedactedCause(build(`${log.mask(failure.summary)}${relayedNameCollision(failure.detail)}`));
|
|
39210
39345
|
}
|
|
39211
39346
|
async create(logicalId, resourceType, properties, context) {
|
|
39212
39347
|
const log = createMaskedLogSinks(this.logger, context?.maskSecrets);
|
|
@@ -39278,7 +39413,7 @@ var EFSProvider = class {
|
|
|
39278
39413
|
} catch (error) {
|
|
39279
39414
|
if (error instanceof ProvisioningError) throw error;
|
|
39280
39415
|
const cause = error instanceof Error ? error : void 0;
|
|
39281
|
-
throw this.wrapMaskedError(log
|
|
39416
|
+
throw this.wrapMaskedError(log, error, (text) => new ProvisioningError(`Failed to update EFS FileSystem ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
39282
39417
|
}
|
|
39283
39418
|
}
|
|
39284
39419
|
async updateMountTarget(logicalId, physicalId, resourceType, properties, log) {
|
|
@@ -39303,7 +39438,7 @@ var EFSProvider = class {
|
|
|
39303
39438
|
};
|
|
39304
39439
|
} catch (error) {
|
|
39305
39440
|
const cause = error instanceof Error ? error : void 0;
|
|
39306
|
-
throw this.wrapMaskedError(log
|
|
39441
|
+
throw this.wrapMaskedError(log, error, (text) => new ProvisioningError(`Failed to update EFS MountTarget ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
39307
39442
|
}
|
|
39308
39443
|
}
|
|
39309
39444
|
async delete(logicalId, physicalId, resourceType, _properties, context) {
|
|
@@ -39385,7 +39520,7 @@ var EFSProvider = class {
|
|
|
39385
39520
|
}
|
|
39386
39521
|
}
|
|
39387
39522
|
const cause = error instanceof Error ? error : void 0;
|
|
39388
|
-
const thrown = error instanceof ProvisioningError ? error : this.wrapMaskedError(log
|
|
39523
|
+
const thrown = error instanceof ProvisioningError ? error : this.wrapMaskedError(log, error, (text) => new ProvisioningError(`Failed to create EFS FileSystem ${logicalId}: ${text}`, resourceType, logicalId, void 0, cause));
|
|
39389
39524
|
if (fileSystemLeftBehind && fileSystemId !== void 0) markCreatedBeforeFailure(thrown, logicalId, resourceType, fileSystemId);
|
|
39390
39525
|
throw thrown;
|
|
39391
39526
|
}
|
|
@@ -39510,7 +39645,8 @@ var EFSProvider = class {
|
|
|
39510
39645
|
return;
|
|
39511
39646
|
}
|
|
39512
39647
|
const cause = error instanceof Error ? error : void 0;
|
|
39513
|
-
|
|
39648
|
+
const log = createMaskedLogSinks(this.logger, context?.maskSecrets);
|
|
39649
|
+
throw this.wrapMaskedError(log, error, (text) => new ProvisioningError(`Failed to delete EFS FileSystem ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
39514
39650
|
}
|
|
39515
39651
|
}
|
|
39516
39652
|
async waitForFileSystemAvailable(fileSystemId, logicalId, resourceType, log) {
|
|
@@ -39549,7 +39685,7 @@ var EFSProvider = class {
|
|
|
39549
39685
|
};
|
|
39550
39686
|
} catch (error) {
|
|
39551
39687
|
const cause = error instanceof Error ? error : void 0;
|
|
39552
|
-
const thrown = error instanceof ProvisioningError ? error : this.wrapMaskedError(log
|
|
39688
|
+
const thrown = error instanceof ProvisioningError ? error : this.wrapMaskedError(log, error, (text) => new ProvisioningError(`Failed to create EFS MountTarget ${logicalId}: ${text}`, resourceType, logicalId, void 0, cause));
|
|
39553
39689
|
if (createdMountTargetId) markCreatedBeforeFailure(thrown, logicalId, resourceType, createdMountTargetId);
|
|
39554
39690
|
throw thrown;
|
|
39555
39691
|
}
|
|
@@ -39580,7 +39716,8 @@ var EFSProvider = class {
|
|
|
39580
39716
|
return;
|
|
39581
39717
|
}
|
|
39582
39718
|
const cause = error instanceof Error ? error : void 0;
|
|
39583
|
-
|
|
39719
|
+
const log = createMaskedLogSinks(this.logger, context?.maskSecrets);
|
|
39720
|
+
throw this.wrapMaskedError(log, error, (text) => new ProvisioningError(`Failed to delete EFS MountTarget ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
39584
39721
|
}
|
|
39585
39722
|
}
|
|
39586
39723
|
async waitForMountTargetDeleted(mountTargetId, logicalId) {
|
|
@@ -39648,7 +39785,7 @@ var EFSProvider = class {
|
|
|
39648
39785
|
} catch (error) {
|
|
39649
39786
|
if (error instanceof ProvisioningError) throw error;
|
|
39650
39787
|
const cause = error instanceof Error ? error : void 0;
|
|
39651
|
-
throw this.wrapMaskedError(log
|
|
39788
|
+
throw this.wrapMaskedError(log, error, (text) => new ProvisioningError(`Failed to create EFS AccessPoint ${logicalId}: ${text}`, resourceType, logicalId, void 0, cause));
|
|
39652
39789
|
}
|
|
39653
39790
|
}
|
|
39654
39791
|
async createOrAdoptAccessPoint(logicalId, resourceType, log, input) {
|
|
@@ -39709,7 +39846,8 @@ var EFSProvider = class {
|
|
|
39709
39846
|
return;
|
|
39710
39847
|
}
|
|
39711
39848
|
const cause = error instanceof Error ? error : void 0;
|
|
39712
|
-
|
|
39849
|
+
const log = createMaskedLogSinks(this.logger, context?.maskSecrets);
|
|
39850
|
+
throw this.wrapMaskedError(log, error, (text) => new ProvisioningError(`Failed to delete EFS AccessPoint ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
39713
39851
|
}
|
|
39714
39852
|
}
|
|
39715
39853
|
async readCurrentState(physicalId, _logicalId, resourceType) {
|
|
@@ -39986,6 +40124,21 @@ var FSxFileSystemProvider = class {
|
|
|
39986
40124
|
this.pollIntervalMs = options?.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS$3;
|
|
39987
40125
|
this.maxWaitMs = options?.maxWaitMs ?? DEFAULT_MAX_WAIT_MS$3;
|
|
39988
40126
|
}
|
|
40127
|
+
wrapStatusReasonError(mask, message, build) {
|
|
40128
|
+
const text = describeAwsStatusReason({ message }, "no failure details reported");
|
|
40129
|
+
if (!text.redacted) return build(text.detail, void 0);
|
|
40130
|
+
const m = maskerOrIdentity(mask);
|
|
40131
|
+
const cause = new Error(text.detail);
|
|
40132
|
+
this.logger.debug(m(build(m(text.detail), cause).message));
|
|
40133
|
+
return markRedactedCause(build(m(text.summary), cause));
|
|
40134
|
+
}
|
|
40135
|
+
wrapCaughtError(mask, error, build) {
|
|
40136
|
+
const failure = describeAwsFailure(error);
|
|
40137
|
+
if (!(error instanceof Error) || !failure.redacted) return build(failure.detail);
|
|
40138
|
+
const m = maskerOrIdentity(mask);
|
|
40139
|
+
this.logger.debug(m(build(m(failure.detail)).message));
|
|
40140
|
+
return markRedactedCause(build(`${m(failure.summary)}${relayedNameCollision(failure.detail)}`));
|
|
40141
|
+
}
|
|
39989
40142
|
handledProperties = /* @__PURE__ */ new Map([["AWS::FSx::FileSystem", /* @__PURE__ */ new Set([
|
|
39990
40143
|
"BackupId",
|
|
39991
40144
|
"FileSystemType",
|
|
@@ -40019,7 +40172,7 @@ var FSxFileSystemProvider = class {
|
|
|
40019
40172
|
getMinResourceTimeoutMs() {
|
|
40020
40173
|
return this.maxWaitMs;
|
|
40021
40174
|
}
|
|
40022
|
-
async create(logicalId, resourceType, properties) {
|
|
40175
|
+
async create(logicalId, resourceType, properties, context) {
|
|
40023
40176
|
const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
|
|
40024
40177
|
if (resourceType !== "AWS::FSx::FileSystem") throw new ProvisioningError(`Unsupported resource type: ${resourceType}`, resourceType, logicalId);
|
|
40025
40178
|
const backupId = properties["BackupId"];
|
|
@@ -40085,7 +40238,7 @@ var FSxFileSystemProvider = class {
|
|
|
40085
40238
|
throw markNonRetryable(new ProvisioningError(safeMsg`FSx answered the create of ${logicalId} with file system ${returnedId}, which ${createdAt === void 0 ? "carries no creation time" : "predates this create"}: the create token cdkd derives for this stack's file system is held by it, and it is NOT recorded in cdkd state. It is not one this deploy, or an interrupted earlier deploy of this stack, made: it was created under this token by an earlier cdkd version, or a completed deploy recorded it and cdkd later let go of it, and it may hold data, so cdkd neither records nor deletes it. Inspect it with: ${inspect} --file-system-ids ${returnedId} -- then import it into this stack, or delete it once you are sure its data is not needed, and deploy again.`, resourceType, logicalId));
|
|
40086
40239
|
}
|
|
40087
40240
|
fileSystemId = returnedId;
|
|
40088
|
-
const fs = await this.waitForFileSystemAvailable(fileSystemId, logicalId, resourceType);
|
|
40241
|
+
const fs = await this.waitForFileSystemAvailable(fileSystemId, logicalId, resourceType, context?.maskSecrets);
|
|
40089
40242
|
this.logger.debug(`Successfully created FSx FileSystem ${logicalId}: ${fileSystemId}`);
|
|
40090
40243
|
this.createTokenFirstSentAt.delete(clientRequestToken);
|
|
40091
40244
|
return {
|
|
@@ -40107,13 +40260,9 @@ var FSxFileSystemProvider = class {
|
|
|
40107
40260
|
throw error;
|
|
40108
40261
|
}
|
|
40109
40262
|
const cause = error instanceof Error ? error : void 0;
|
|
40110
|
-
const
|
|
40111
|
-
if (survivorId !== void 0)
|
|
40112
|
-
|
|
40113
|
-
markCreatedBeforeFailure(thrown, logicalId, resourceType, survivorId);
|
|
40114
|
-
throw thrown;
|
|
40115
|
-
}
|
|
40116
|
-
throw new ProvisioningError(message, resourceType, logicalId, void 0, cause);
|
|
40263
|
+
const thrown = this.wrapCaughtError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to create FSx FileSystem ${logicalId}: ${text}`, resourceType, logicalId, void 0, cause));
|
|
40264
|
+
if (survivorId !== void 0) markCreatedBeforeFailure(thrown, logicalId, resourceType, survivorId);
|
|
40265
|
+
throw thrown;
|
|
40117
40266
|
}
|
|
40118
40267
|
}
|
|
40119
40268
|
toCreateLustreConfiguration(config) {
|
|
@@ -40325,7 +40474,7 @@ var FSxFileSystemProvider = class {
|
|
|
40325
40474
|
}))).FileSystem?.AdministrativeActions ?? []).filter((a) => a.AdministrativeActionType === "FILE_SYSTEM_UPDATE" && (a.Status === "PENDING" || a.Status === "IN_PROGRESS"));
|
|
40326
40475
|
const requestTimes = respPendingActions.map((a) => a.RequestTime?.getTime()).filter((t) => t !== void 0);
|
|
40327
40476
|
const actionThresholdMs = requestTimes.length > 0 ? Math.min(...requestTimes) : callTimeMs - 6e4;
|
|
40328
|
-
updatedFs = await this.waitForUpdateActionComplete(physicalId, logicalId, resourceType, actionThresholdMs, respPendingActions.length > 0);
|
|
40477
|
+
updatedFs = await this.waitForUpdateActionComplete(physicalId, logicalId, resourceType, actionThresholdMs, respPendingActions.length > 0, context?.maskSecrets);
|
|
40329
40478
|
}
|
|
40330
40479
|
if (tagsChanged) await this.applyTagDiff(physicalId, resourceType, logicalId, properties["Tags"], previousProperties["Tags"]);
|
|
40331
40480
|
if (!updatedFs) try {
|
|
@@ -40343,7 +40492,7 @@ var FSxFileSystemProvider = class {
|
|
|
40343
40492
|
} catch (error) {
|
|
40344
40493
|
if (error instanceof ProvisioningError) throw error;
|
|
40345
40494
|
const cause = error instanceof Error ? error : void 0;
|
|
40346
|
-
throw new ProvisioningError(`Failed to update FSx FileSystem ${logicalId}: ${
|
|
40495
|
+
throw this.wrapCaughtError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to update FSx FileSystem ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
40347
40496
|
}
|
|
40348
40497
|
}
|
|
40349
40498
|
detectVariantConfigKey(properties, previousProperties) {
|
|
@@ -40536,9 +40685,9 @@ var FSxFileSystemProvider = class {
|
|
|
40536
40685
|
return;
|
|
40537
40686
|
}
|
|
40538
40687
|
const cause = error instanceof Error ? error : void 0;
|
|
40539
|
-
throw new ProvisioningError(`Failed to delete FSx FileSystem ${logicalId}: ${
|
|
40688
|
+
throw this.wrapCaughtError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to delete FSx FileSystem ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
40540
40689
|
}
|
|
40541
|
-
await this.waitForFileSystemDeleted(physicalId, logicalId, resourceType);
|
|
40690
|
+
await this.waitForFileSystemDeleted(physicalId, logicalId, resourceType, context?.maskSecrets);
|
|
40542
40691
|
this.logger.debug(`Successfully deleted FSx FileSystem ${logicalId}`);
|
|
40543
40692
|
}
|
|
40544
40693
|
async isSameResource(journaledPhysicalId, record, resourceType, context) {
|
|
@@ -40581,23 +40730,20 @@ var FSxFileSystemProvider = class {
|
|
|
40581
40730
|
throw error;
|
|
40582
40731
|
}
|
|
40583
40732
|
}
|
|
40584
|
-
async waitForFileSystemAvailable(fileSystemId, logicalId, resourceType) {
|
|
40733
|
+
async waitForFileSystemAvailable(fileSystemId, logicalId, resourceType, mask) {
|
|
40585
40734
|
const startTime = Date.now();
|
|
40586
40735
|
const transientState = { count: 0 };
|
|
40587
40736
|
while (Date.now() - startTime < this.maxWaitMs) {
|
|
40588
40737
|
const fs = await this.describeForPoll(fileSystemId, transientState);
|
|
40589
40738
|
const lifecycle = fs?.Lifecycle;
|
|
40590
40739
|
if (fs && lifecycle === "AVAILABLE") return fs;
|
|
40591
|
-
if (lifecycle === "FAILED" || lifecycle === "MISCONFIGURED") {
|
|
40592
|
-
const detail = fs?.FailureDetails?.Message ?? "no failure details reported";
|
|
40593
|
-
throw new ProvisioningError(`FSx FileSystem ${fileSystemId} entered lifecycle state ${lifecycle}: ${detail}`, resourceType, logicalId, fileSystemId);
|
|
40594
|
-
}
|
|
40740
|
+
if (lifecycle === "FAILED" || lifecycle === "MISCONFIGURED") throw this.wrapStatusReasonError(mask, fs?.FailureDetails?.Message, (text, cause) => new ProvisioningError(`FSx FileSystem ${fileSystemId} entered lifecycle state ${lifecycle}: ${text}`, resourceType, logicalId, fileSystemId, cause));
|
|
40595
40741
|
this.logger.debug(`FSx FileSystem ${fileSystemId} state: ${lifecycle ?? "unknown"}, waiting...`);
|
|
40596
40742
|
await new Promise((resolve) => setTimeout(resolve, this.pollIntervalMs));
|
|
40597
40743
|
}
|
|
40598
40744
|
throw new ProvisioningError(`Timed out waiting for FSx FileSystem ${fileSystemId} to become AVAILABLE (${Math.round(this.maxWaitMs / 6e4)} min)`, resourceType, logicalId, fileSystemId);
|
|
40599
40745
|
}
|
|
40600
|
-
async waitForUpdateActionComplete(fileSystemId, logicalId, resourceType, actionThresholdMs, requireActionObservation) {
|
|
40746
|
+
async waitForUpdateActionComplete(fileSystemId, logicalId, resourceType, actionThresholdMs, requireActionObservation, mask) {
|
|
40601
40747
|
const startTime = Date.now();
|
|
40602
40748
|
const transientState = { count: 0 };
|
|
40603
40749
|
let seenTrackedAction = false;
|
|
@@ -40607,10 +40753,7 @@ var FSxFileSystemProvider = class {
|
|
|
40607
40753
|
const updateActions = (fs.AdministrativeActions ?? []).filter((a) => a.AdministrativeActionType === "FILE_SYSTEM_UPDATE" && (a.RequestTime === void 0 || a.RequestTime.getTime() >= actionThresholdMs));
|
|
40608
40754
|
if (updateActions.length > 0) seenTrackedAction = true;
|
|
40609
40755
|
const failed = updateActions.find((a) => a.Status === "FAILED");
|
|
40610
|
-
if (failed) {
|
|
40611
|
-
const detail = failed.FailureDetails?.Message ?? "no failure details reported";
|
|
40612
|
-
throw new ProvisioningError(`FSx FileSystem ${fileSystemId} update failed (FILE_SYSTEM_UPDATE administrative action): ${detail}`, resourceType, logicalId, fileSystemId);
|
|
40613
|
-
}
|
|
40756
|
+
if (failed) throw this.wrapStatusReasonError(mask, failed.FailureDetails?.Message, (text, cause) => new ProvisioningError(`FSx FileSystem ${fileSystemId} update failed (FILE_SYSTEM_UPDATE administrative action): ${text}`, resourceType, logicalId, fileSystemId, cause));
|
|
40614
40757
|
if (!updateActions.some((a) => a.Status === "PENDING" || a.Status === "IN_PROGRESS") && (!requireActionObservation || seenTrackedAction) && fs.Lifecycle === "AVAILABLE") return fs;
|
|
40615
40758
|
this.logger.debug(`FSx FileSystem ${fileSystemId} update in progress (lifecycle: ${fs.Lifecycle ?? "unknown"}), waiting...`);
|
|
40616
40759
|
}
|
|
@@ -40618,7 +40761,7 @@ var FSxFileSystemProvider = class {
|
|
|
40618
40761
|
}
|
|
40619
40762
|
throw new ProvisioningError(`Timed out waiting for FSx FileSystem ${fileSystemId} update to complete (${Math.round(this.maxWaitMs / 6e4)} min)`, resourceType, logicalId, fileSystemId);
|
|
40620
40763
|
}
|
|
40621
|
-
async waitForFileSystemDeleted(fileSystemId, logicalId, resourceType) {
|
|
40764
|
+
async waitForFileSystemDeleted(fileSystemId, logicalId, resourceType, mask) {
|
|
40622
40765
|
const startTime = Date.now();
|
|
40623
40766
|
const transientState = { count: 0 };
|
|
40624
40767
|
while (Date.now() - startTime < this.maxWaitMs) {
|
|
@@ -40630,17 +40773,14 @@ var FSxFileSystemProvider = class {
|
|
|
40630
40773
|
} catch (error) {
|
|
40631
40774
|
if (error instanceof FileSystemNotFound$1) return;
|
|
40632
40775
|
const cause = error instanceof Error ? error : void 0;
|
|
40633
|
-
throw new ProvisioningError(`Failed to poll FSx FileSystem ${fileSystemId} deletion: ${
|
|
40776
|
+
throw this.wrapCaughtError(mask, error, (text) => new ProvisioningError(`Failed to poll FSx FileSystem ${fileSystemId} deletion: ${text}`, resourceType, logicalId, fileSystemId, cause));
|
|
40634
40777
|
}
|
|
40635
40778
|
if (!fs && sawResponse) return;
|
|
40636
40779
|
if (!fs) {
|
|
40637
40780
|
await new Promise((resolve) => setTimeout(resolve, this.pollIntervalMs));
|
|
40638
40781
|
continue;
|
|
40639
40782
|
}
|
|
40640
|
-
if (fs.Lifecycle === "FAILED") {
|
|
40641
|
-
const detail = fs.FailureDetails?.Message ?? "no failure details reported";
|
|
40642
|
-
throw new ProvisioningError(`FSx FileSystem ${fileSystemId} entered lifecycle state FAILED during deletion: ${detail}`, resourceType, logicalId, fileSystemId);
|
|
40643
|
-
}
|
|
40783
|
+
if (fs.Lifecycle === "FAILED") throw this.wrapStatusReasonError(mask, fs.FailureDetails?.Message, (text, cause) => new ProvisioningError(`FSx FileSystem ${fileSystemId} entered lifecycle state FAILED during deletion: ${text}`, resourceType, logicalId, fileSystemId, cause));
|
|
40644
40784
|
this.logger.debug(`FSx FileSystem ${fileSystemId} state: ${fs.Lifecycle ?? "unknown"}, waiting for deletion...`);
|
|
40645
40785
|
await new Promise((resolve) => setTimeout(resolve, this.pollIntervalMs));
|
|
40646
40786
|
}
|
|
@@ -40976,6 +41116,21 @@ var EMRClusterProvider = class {
|
|
|
40976
41116
|
this.pollIntervalMs = options?.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS$2;
|
|
40977
41117
|
this.maxWaitMs = options?.maxWaitMs ?? DEFAULT_MAX_WAIT_MS$2;
|
|
40978
41118
|
}
|
|
41119
|
+
wrapStatusReasonError(mask, reason, fallback, build) {
|
|
41120
|
+
const text = describeAwsStatusReason(reason, fallback);
|
|
41121
|
+
if (!text.redacted) return build(text.detail, void 0);
|
|
41122
|
+
const m = maskerOrIdentity(mask);
|
|
41123
|
+
const cause = new Error(text.detail);
|
|
41124
|
+
this.logger.debug(m(build(m(text.detail), cause).message));
|
|
41125
|
+
return markRedactedCause(build(m(text.summary), cause));
|
|
41126
|
+
}
|
|
41127
|
+
wrapCaughtError(mask, error, build) {
|
|
41128
|
+
const failure = describeAwsFailure(error);
|
|
41129
|
+
if (!(error instanceof Error) || !failure.redacted) return build(failure.detail);
|
|
41130
|
+
const m = maskerOrIdentity(mask);
|
|
41131
|
+
this.logger.debug(m(build(m(failure.detail)).message));
|
|
41132
|
+
return markRedactedCause(build(`${m(failure.summary)}${relayedNameCollision(failure.detail)}`));
|
|
41133
|
+
}
|
|
40979
41134
|
handledProperties = /* @__PURE__ */ new Map([["AWS::EMR::Cluster", /* @__PURE__ */ new Set([
|
|
40980
41135
|
"AdditionalInfo",
|
|
40981
41136
|
"Applications",
|
|
@@ -41113,7 +41268,7 @@ var EMRClusterProvider = class {
|
|
|
41113
41268
|
const replayWindow = replayedSendWindow(response, attemptStartMs);
|
|
41114
41269
|
if (replayWindow !== void 0) await reportOrphans(replayWindow);
|
|
41115
41270
|
if (!clusterId) throw new ProvisioningError(`EMR RunJobFlow for ${logicalId} returned no JobFlowId`, resourceType, logicalId);
|
|
41116
|
-
const cluster = await this.waitForClusterReady(clusterId, logicalId, resourceType);
|
|
41271
|
+
const cluster = await this.waitForClusterReady(clusterId, logicalId, resourceType, context?.maskSecrets);
|
|
41117
41272
|
this.logger.debug(`Successfully created EMR Cluster ${logicalId}: ${clusterId}`);
|
|
41118
41273
|
return {
|
|
41119
41274
|
physicalId: clusterId,
|
|
@@ -41140,14 +41295,12 @@ var EMRClusterProvider = class {
|
|
|
41140
41295
|
throw error;
|
|
41141
41296
|
}
|
|
41142
41297
|
const cause = error instanceof Error ? error : void 0;
|
|
41143
|
-
const
|
|
41298
|
+
const thrown = this.wrapCaughtError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to create EMR Cluster ${logicalId}: ${text}`, resourceType, logicalId, void 0, cause));
|
|
41144
41299
|
if (survivorId !== void 0) {
|
|
41145
|
-
const thrown = new ProvisioningError(message, resourceType, logicalId, void 0, cause);
|
|
41146
41300
|
markCreatedBeforeFailure(thrown, logicalId, resourceType, survivorId);
|
|
41147
41301
|
markNonRetryable(thrown);
|
|
41148
|
-
throw thrown;
|
|
41149
41302
|
}
|
|
41150
|
-
throw
|
|
41303
|
+
throw thrown;
|
|
41151
41304
|
}
|
|
41152
41305
|
}
|
|
41153
41306
|
toJobFlowInstancesConfig(config) {
|
|
@@ -41338,7 +41491,7 @@ var EMRClusterProvider = class {
|
|
|
41338
41491
|
} catch (error) {
|
|
41339
41492
|
if (error instanceof ProvisioningError) throw error;
|
|
41340
41493
|
const cause = error instanceof Error ? error : void 0;
|
|
41341
|
-
throw new ProvisioningError(`Failed to update EMR Cluster ${logicalId}: ${
|
|
41494
|
+
throw this.wrapCaughtError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to update EMR Cluster ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
41342
41495
|
}
|
|
41343
41496
|
}
|
|
41344
41497
|
async applyTagDiff(physicalId, resourceType, logicalId, prevTagsRaw, nextTagsRaw) {
|
|
@@ -41392,7 +41545,7 @@ var EMRClusterProvider = class {
|
|
|
41392
41545
|
return;
|
|
41393
41546
|
}
|
|
41394
41547
|
const cause = error instanceof Error ? error : void 0;
|
|
41395
|
-
throw new ProvisioningError(`Failed to describe EMR Cluster ${logicalId} before deletion: ${
|
|
41548
|
+
throw this.wrapCaughtError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to describe EMR Cluster ${logicalId} before deletion: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
41396
41549
|
}
|
|
41397
41550
|
const currentState = current?.Status?.State;
|
|
41398
41551
|
if (currentState && TERMINAL_STATES.has(currentState)) {
|
|
@@ -41421,9 +41574,9 @@ var EMRClusterProvider = class {
|
|
|
41421
41574
|
flip.deleteAccepted = true;
|
|
41422
41575
|
} catch (error) {
|
|
41423
41576
|
const cause = error instanceof Error ? error : void 0;
|
|
41424
|
-
throw new ProvisioningError(`Failed to terminate EMR Cluster ${logicalId}: ${
|
|
41577
|
+
throw this.wrapCaughtError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to terminate EMR Cluster ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
41425
41578
|
}
|
|
41426
|
-
await this.waitForClusterTerminated(physicalId, logicalId, resourceType);
|
|
41579
|
+
await this.waitForClusterTerminated(physicalId, logicalId, resourceType, context?.maskSecrets);
|
|
41427
41580
|
this.logger.debug(`Successfully deleted EMR Cluster ${logicalId}`);
|
|
41428
41581
|
}
|
|
41429
41582
|
async describeForPoll(clusterId, transientState, maxConsecutiveTransient = 5) {
|
|
@@ -41442,7 +41595,7 @@ var EMRClusterProvider = class {
|
|
|
41442
41595
|
throw error;
|
|
41443
41596
|
}
|
|
41444
41597
|
}
|
|
41445
|
-
async waitForClusterReady(clusterId, logicalId, resourceType) {
|
|
41598
|
+
async waitForClusterReady(clusterId, logicalId, resourceType, mask) {
|
|
41446
41599
|
const startTime = Date.now();
|
|
41447
41600
|
const transientState = { count: 0 };
|
|
41448
41601
|
while (Date.now() - startTime < this.maxWaitMs) {
|
|
@@ -41450,15 +41603,18 @@ var EMRClusterProvider = class {
|
|
|
41450
41603
|
const state = cluster?.Status?.State;
|
|
41451
41604
|
if (cluster && state && CREATE_READY_STATES.has(state)) return cluster;
|
|
41452
41605
|
if (state && TERMINAL_STATES.has(state)) {
|
|
41453
|
-
const reason = cluster?.Status?.StateChangeReason
|
|
41454
|
-
throw
|
|
41606
|
+
const reason = cluster?.Status?.StateChangeReason;
|
|
41607
|
+
throw this.wrapStatusReasonError(mask, {
|
|
41608
|
+
code: reason?.Code,
|
|
41609
|
+
message: reason?.Message
|
|
41610
|
+
}, "no state-change reason reported", (text, cause) => new ProvisioningError(`EMR Cluster ${clusterId} entered terminal state ${state} during creation: ${text}`, resourceType, logicalId, clusterId, cause));
|
|
41455
41611
|
}
|
|
41456
41612
|
this.logger.debug(`EMR Cluster ${clusterId} state: ${state ?? "unknown"}, waiting...`);
|
|
41457
41613
|
await new Promise((resolve) => setTimeout(resolve, this.pollIntervalMs));
|
|
41458
41614
|
}
|
|
41459
41615
|
throw new ProvisioningError(`Timed out waiting for EMR Cluster ${clusterId} to reach WAITING/RUNNING (${Math.round(this.maxWaitMs / 6e4)} min)`, resourceType, logicalId, clusterId);
|
|
41460
41616
|
}
|
|
41461
|
-
async waitForClusterTerminated(clusterId, logicalId, resourceType) {
|
|
41617
|
+
async waitForClusterTerminated(clusterId, logicalId, resourceType, mask) {
|
|
41462
41618
|
const startTime = Date.now();
|
|
41463
41619
|
const transientState = { count: 0 };
|
|
41464
41620
|
while (Date.now() - startTime < this.maxWaitMs) {
|
|
@@ -41468,7 +41624,7 @@ var EMRClusterProvider = class {
|
|
|
41468
41624
|
} catch (error) {
|
|
41469
41625
|
if (error instanceof InvalidRequestException) return;
|
|
41470
41626
|
const cause = error instanceof Error ? error : void 0;
|
|
41471
|
-
throw new ProvisioningError(`Failed to poll EMR Cluster ${clusterId} termination: ${
|
|
41627
|
+
throw this.wrapCaughtError(mask, error, (text) => new ProvisioningError(`Failed to poll EMR Cluster ${clusterId} termination: ${text}`, resourceType, logicalId, clusterId, cause));
|
|
41472
41628
|
}
|
|
41473
41629
|
const state = cluster?.Status?.State;
|
|
41474
41630
|
if (state && TERMINAL_STATES.has(state)) {
|
|
@@ -41719,6 +41875,21 @@ var EMRInstanceGroupConfigProvider = class {
|
|
|
41719
41875
|
this.pollIntervalMs = options?.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS$1;
|
|
41720
41876
|
this.maxWaitMs = options?.maxWaitMs ?? DEFAULT_MAX_WAIT_MS$1;
|
|
41721
41877
|
}
|
|
41878
|
+
wrapStatusReasonError(mask, reason, fallback, build) {
|
|
41879
|
+
const text = describeAwsStatusReason(reason, fallback);
|
|
41880
|
+
if (!text.redacted) return build(text.detail, void 0);
|
|
41881
|
+
const m = maskerOrIdentity(mask);
|
|
41882
|
+
const cause = new Error(text.detail);
|
|
41883
|
+
this.logger.debug(m(build(m(text.detail), cause).message));
|
|
41884
|
+
return markRedactedCause(build(m(text.summary), cause));
|
|
41885
|
+
}
|
|
41886
|
+
wrapCaughtError(mask, error, build) {
|
|
41887
|
+
const failure = describeAwsFailure(error);
|
|
41888
|
+
if (!(error instanceof Error) || !failure.redacted) return build(failure.detail);
|
|
41889
|
+
const m = maskerOrIdentity(mask);
|
|
41890
|
+
this.logger.debug(m(build(m(failure.detail)).message));
|
|
41891
|
+
return markRedactedCause(build(`${m(failure.summary)}${relayedNameCollision(failure.detail)}`));
|
|
41892
|
+
}
|
|
41722
41893
|
handledProperties = /* @__PURE__ */ new Map([["AWS::EMR::InstanceGroupConfig", /* @__PURE__ */ new Set([
|
|
41723
41894
|
"AutoScalingPolicy",
|
|
41724
41895
|
"BidPrice",
|
|
@@ -41802,7 +41973,7 @@ var EMRInstanceGroupConfigProvider = class {
|
|
|
41802
41973
|
const replayWindow = replayedSendWindow(response, attemptStartMs);
|
|
41803
41974
|
if (replayWindow !== void 0 && group.InstanceRole === "TASK") await reportOrphans(replayWindow);
|
|
41804
41975
|
if (!groupId) throw new ProvisioningError(`EMR AddInstanceGroups for ${logicalId} returned no instance group id`, resourceType, logicalId);
|
|
41805
|
-
await this.waitForGroupReady(jobFlowId, groupId, logicalId, resourceType, toNumber$1(properties["InstanceCount"]) ?? 0);
|
|
41976
|
+
await this.waitForGroupReady(jobFlowId, groupId, logicalId, resourceType, toNumber$1(properties["InstanceCount"]) ?? 0, false, context?.maskSecrets);
|
|
41806
41977
|
this.logger.debug(`Successfully added EMR instance group ${logicalId}: ${groupId}`);
|
|
41807
41978
|
return {
|
|
41808
41979
|
physicalId: groupId,
|
|
@@ -41812,7 +41983,7 @@ var EMRInstanceGroupConfigProvider = class {
|
|
|
41812
41983
|
}
|
|
41813
41984
|
};
|
|
41814
41985
|
} catch (error) {
|
|
41815
|
-
const thrown = error instanceof ProvisioningError ? error : new ProvisioningError(`Failed to add EMR instance group ${logicalId}: ${
|
|
41986
|
+
const thrown = error instanceof ProvisioningError ? error : this.wrapCaughtError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to add EMR instance group ${logicalId}: ${text}`, resourceType, logicalId, void 0, error instanceof Error ? error : void 0));
|
|
41816
41987
|
let leftBehindGroupId = createdGroupId;
|
|
41817
41988
|
if (leftBehindGroupId && properties["InstanceRole"] === "TASK") {
|
|
41818
41989
|
const log = createMaskedLogSinks(this.logger, context?.maskSecrets);
|
|
@@ -41891,7 +42062,7 @@ var EMRInstanceGroupConfigProvider = class {
|
|
|
41891
42062
|
InstanceCount: toNumber$1(properties["InstanceCount"]) ?? 0
|
|
41892
42063
|
}]
|
|
41893
42064
|
}));
|
|
41894
|
-
if (jobFlowId) await this.waitForGroupReady(jobFlowId, physicalId, logicalId, resourceType, toNumber$1(properties["InstanceCount"]) ?? 0, true);
|
|
42065
|
+
if (jobFlowId) await this.waitForGroupReady(jobFlowId, physicalId, logicalId, resourceType, toNumber$1(properties["InstanceCount"]) ?? 0, true, context?.maskSecrets);
|
|
41895
42066
|
}
|
|
41896
42067
|
if (autoScalingChanged) {
|
|
41897
42068
|
if (!jobFlowId) throw new ProvisioningError(`EMR InstanceGroupConfig ${logicalId} AutoScalingPolicy update needs JobFlowId (the cluster id), which is absent`, resourceType, logicalId, physicalId);
|
|
@@ -41918,7 +42089,7 @@ var EMRInstanceGroupConfigProvider = class {
|
|
|
41918
42089
|
} catch (error) {
|
|
41919
42090
|
if (error instanceof ProvisioningError || error instanceof ResourceUpdateNotSupportedError) throw error;
|
|
41920
42091
|
const cause = error instanceof Error ? error : void 0;
|
|
41921
|
-
throw new ProvisioningError(`Failed to update EMR instance group ${logicalId}: ${
|
|
42092
|
+
throw this.wrapCaughtError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to update EMR instance group ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
41922
42093
|
}
|
|
41923
42094
|
}
|
|
41924
42095
|
async delete(logicalId, physicalId, resourceType, properties, context) {
|
|
@@ -41949,7 +42120,7 @@ var EMRInstanceGroupConfigProvider = class {
|
|
|
41949
42120
|
async getAttribute(physicalId, _resourceType, attributeName) {
|
|
41950
42121
|
if (attributeName === "Id" || attributeName === "InstanceGroupId") return physicalId;
|
|
41951
42122
|
}
|
|
41952
|
-
async waitForGroupReady(clusterId, groupId, logicalId, resourceType, expectedCount, toleratesStaleFailedState = false) {
|
|
42123
|
+
async waitForGroupReady(clusterId, groupId, logicalId, resourceType, expectedCount, toleratesStaleFailedState = false, mask) {
|
|
41953
42124
|
const startTime = Date.now();
|
|
41954
42125
|
const transientState = { count: 0 };
|
|
41955
42126
|
let initialState;
|
|
@@ -41964,8 +42135,11 @@ var EMRInstanceGroupConfigProvider = class {
|
|
|
41964
42135
|
if (state && READY_STATES$1.has(state) && group?.RunningInstanceCount === expectedCount) return;
|
|
41965
42136
|
const enforceFailedStates = !toleratesStaleFailedState || hasLeftInitialState;
|
|
41966
42137
|
if (state && enforceFailedStates && FAILED_STATES$1.has(state)) {
|
|
41967
|
-
const reason = group?.Status?.StateChangeReason
|
|
41968
|
-
throw
|
|
42138
|
+
const reason = group?.Status?.StateChangeReason;
|
|
42139
|
+
throw this.wrapStatusReasonError(mask, {
|
|
42140
|
+
code: reason?.Code,
|
|
42141
|
+
message: reason?.Message
|
|
42142
|
+
}, "no state-change reason reported", (text, cause) => new ProvisioningError(`EMR instance group ${groupId} entered failed state ${state}: ${text}`, resourceType, logicalId, groupId, cause));
|
|
41969
42143
|
}
|
|
41970
42144
|
if (state && !enforceFailedStates && FAILED_STATES$1.has(state)) this.logger.debug(`EMR instance group ${groupId} still reads ${state} from before the resize; waiting for it to leave that state before treating it as failed`);
|
|
41971
42145
|
this.logger.debug(`EMR instance group ${groupId} state: ${state ?? "unknown"}, running ${group?.RunningInstanceCount ?? "?"}/${expectedCount}, waiting...`);
|
|
@@ -42036,6 +42210,21 @@ var EMRInstanceFleetConfigProvider = class {
|
|
|
42036
42210
|
this.pollIntervalMs = options?.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS;
|
|
42037
42211
|
this.maxWaitMs = options?.maxWaitMs ?? DEFAULT_MAX_WAIT_MS;
|
|
42038
42212
|
}
|
|
42213
|
+
wrapStatusReasonError(mask, reason, fallback, build) {
|
|
42214
|
+
const text = describeAwsStatusReason(reason, fallback);
|
|
42215
|
+
if (!text.redacted) return build(text.detail, void 0);
|
|
42216
|
+
const m = maskerOrIdentity(mask);
|
|
42217
|
+
const cause = new Error(text.detail);
|
|
42218
|
+
this.logger.debug(m(build(m(text.detail), cause).message));
|
|
42219
|
+
return markRedactedCause(build(m(text.summary), cause));
|
|
42220
|
+
}
|
|
42221
|
+
wrapCaughtError(mask, error, build) {
|
|
42222
|
+
const failure = describeAwsFailure(error);
|
|
42223
|
+
if (!(error instanceof Error) || !failure.redacted) return build(failure.detail);
|
|
42224
|
+
const m = maskerOrIdentity(mask);
|
|
42225
|
+
this.logger.debug(m(build(m(failure.detail)).message));
|
|
42226
|
+
return markRedactedCause(build(`${m(failure.summary)}${relayedNameCollision(failure.detail)}`));
|
|
42227
|
+
}
|
|
42039
42228
|
handledProperties = /* @__PURE__ */ new Map([["AWS::EMR::InstanceFleetConfig", /* @__PURE__ */ new Set([
|
|
42040
42229
|
"ClusterId",
|
|
42041
42230
|
"InstanceFleetType",
|
|
@@ -42128,7 +42317,7 @@ var EMRInstanceFleetConfigProvider = class {
|
|
|
42128
42317
|
await this.waitForFleetReady(clusterId, fleetId, logicalId, resourceType, this.targetCapacities(properties), {
|
|
42129
42318
|
onDemand: 0,
|
|
42130
42319
|
spot: 0
|
|
42131
|
-
});
|
|
42320
|
+
}, false, context?.maskSecrets);
|
|
42132
42321
|
this.logger.debug(`Successfully added EMR instance fleet ${logicalId}: ${fleetId}`);
|
|
42133
42322
|
return {
|
|
42134
42323
|
physicalId: fleetId,
|
|
@@ -42138,7 +42327,7 @@ var EMRInstanceFleetConfigProvider = class {
|
|
|
42138
42327
|
}
|
|
42139
42328
|
};
|
|
42140
42329
|
} catch (error) {
|
|
42141
|
-
const thrown = error instanceof ProvisioningError ? error : new ProvisioningError(`Failed to add EMR instance fleet ${logicalId}: ${
|
|
42330
|
+
const thrown = error instanceof ProvisioningError ? error : this.wrapCaughtError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to add EMR instance fleet ${logicalId}: ${text}`, resourceType, logicalId, void 0, error instanceof Error ? error : void 0));
|
|
42142
42331
|
if (createdFleetId) {
|
|
42143
42332
|
markCreatedBeforeFailure(thrown, logicalId, resourceType, createdFleetId);
|
|
42144
42333
|
markNonRetryable(thrown);
|
|
@@ -42212,7 +42401,7 @@ var EMRInstanceFleetConfigProvider = class {
|
|
|
42212
42401
|
ClusterId: clusterId,
|
|
42213
42402
|
InstanceFleet: modify
|
|
42214
42403
|
}));
|
|
42215
|
-
await this.waitForFleetReady(clusterId, physicalId, logicalId, resourceType, this.targetCapacities(properties), this.targetCapacities(previousProperties), true);
|
|
42404
|
+
await this.waitForFleetReady(clusterId, physicalId, logicalId, resourceType, this.targetCapacities(properties), this.targetCapacities(previousProperties), true, context?.maskSecrets);
|
|
42216
42405
|
this.logger.debug(`Successfully updated EMR instance fleet ${logicalId}`);
|
|
42217
42406
|
warnLeftInPlace();
|
|
42218
42407
|
return {
|
|
@@ -42226,7 +42415,7 @@ var EMRInstanceFleetConfigProvider = class {
|
|
|
42226
42415
|
} catch (error) {
|
|
42227
42416
|
if (error instanceof ProvisioningError || error instanceof ResourceUpdateNotSupportedError) throw error;
|
|
42228
42417
|
const cause = error instanceof Error ? error : void 0;
|
|
42229
|
-
throw new ProvisioningError(`Failed to update EMR instance fleet ${logicalId}: ${
|
|
42418
|
+
throw this.wrapCaughtError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to update EMR instance fleet ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
42230
42419
|
}
|
|
42231
42420
|
}
|
|
42232
42421
|
async delete(logicalId, physicalId, resourceType, properties, context) {
|
|
@@ -42264,7 +42453,7 @@ var EMRInstanceFleetConfigProvider = class {
|
|
|
42264
42453
|
spot: toNumber(properties["TargetSpotCapacity"]) ?? 0
|
|
42265
42454
|
};
|
|
42266
42455
|
}
|
|
42267
|
-
async waitForFleetReady(clusterId, fleetId, logicalId, resourceType, target, previous, toleratesStaleFailedState = false) {
|
|
42456
|
+
async waitForFleetReady(clusterId, fleetId, logicalId, resourceType, target, previous, toleratesStaleFailedState = false, mask) {
|
|
42268
42457
|
const startTime = Date.now();
|
|
42269
42458
|
const transientState = { count: 0 };
|
|
42270
42459
|
let initialState;
|
|
@@ -42284,8 +42473,11 @@ var EMRInstanceFleetConfigProvider = class {
|
|
|
42284
42473
|
if (state && READY_STATES.has(state) && capacityReady) return;
|
|
42285
42474
|
const enforceFailedStates = !toleratesStaleFailedState || hasLeftInitialState;
|
|
42286
42475
|
if (state && enforceFailedStates && FAILED_STATES.has(state)) {
|
|
42287
|
-
const reason = fleet?.Status?.StateChangeReason
|
|
42288
|
-
throw
|
|
42476
|
+
const reason = fleet?.Status?.StateChangeReason;
|
|
42477
|
+
throw this.wrapStatusReasonError(mask, {
|
|
42478
|
+
code: reason?.Code,
|
|
42479
|
+
message: reason?.Message
|
|
42480
|
+
}, "no state-change reason reported", (text, cause) => new ProvisioningError(`EMR instance fleet ${fleetId} entered failed state ${state}: ${text}`, resourceType, logicalId, fleetId, cause));
|
|
42289
42481
|
}
|
|
42290
42482
|
if (state && !enforceFailedStates && FAILED_STATES.has(state)) this.logger.debug(`EMR instance fleet ${fleetId} still reads ${state} from before the resize; waiting for it to leave that state before treating it as failed`);
|
|
42291
42483
|
this.logger.debug(`EMR instance fleet ${fleetId} state: ${state ?? "unknown"}, provisioned ${onDemand}/${target.onDemand} on-demand + ${spot}/${target.spot} spot (${provisioned} total), waiting...`);
|
|
@@ -46666,6 +46858,13 @@ var ACMCertificateProvider = class {
|
|
|
46666
46858
|
logger = getLogger().child("ACMCertificateProvider");
|
|
46667
46859
|
maxPollAttempts = Number(process.env["CDKD_ACM_POLL_ATTEMPTS"] ?? 60);
|
|
46668
46860
|
pollIntervalMs = Number(process.env["CDKD_ACM_POLL_INTERVAL_MS"] ?? 1e4);
|
|
46861
|
+
wrapCaughtError(mask, error, build) {
|
|
46862
|
+
const failure = describeAwsFailure(error);
|
|
46863
|
+
if (!(error instanceof Error) || !failure.redacted) return build(failure.detail);
|
|
46864
|
+
const m = mask ?? ((text) => text);
|
|
46865
|
+
this.logger.debug(m(build(m(failure.detail)).message));
|
|
46866
|
+
return markRedactedCause(build(`${m(failure.summary)}${relayedNameCollision(failure.detail)}`));
|
|
46867
|
+
}
|
|
46669
46868
|
constructor() {
|
|
46670
46869
|
this.acmClient = getAwsClients().acm;
|
|
46671
46870
|
}
|
|
@@ -46691,7 +46890,7 @@ var ACMCertificateProvider = class {
|
|
|
46691
46890
|
"KeyAlgorithm",
|
|
46692
46891
|
"Tags"
|
|
46693
46892
|
])]]);
|
|
46694
|
-
async create(logicalId, resourceType, properties) {
|
|
46893
|
+
async create(logicalId, resourceType, properties, context) {
|
|
46695
46894
|
this.logger.debug(`Requesting ACM certificate ${logicalId}`);
|
|
46696
46895
|
const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
|
|
46697
46896
|
const domainName = properties["DomainName"];
|
|
@@ -46743,14 +46942,11 @@ var ACMCertificateProvider = class {
|
|
|
46743
46942
|
throw thrown;
|
|
46744
46943
|
}
|
|
46745
46944
|
const cause = error instanceof Error ? error : void 0;
|
|
46746
|
-
const
|
|
46747
|
-
|
|
46748
|
-
|
|
46749
|
-
|
|
46750
|
-
|
|
46751
|
-
throw thrown;
|
|
46752
|
-
}
|
|
46753
|
-
throw new ProvisioningError(message, resourceType, logicalId, requestedArn, cause);
|
|
46945
|
+
const build = (text) => new ProvisioningError(`Failed to create ACM certificate ${logicalIdShown(logicalId)}: ` + (survivorNote !== void 0 ? `${text} ${survivorNote}` : text), resourceType, logicalId, requestedArn, cause);
|
|
46946
|
+
if (!requestedArn || survivorNote === void 0) throw this.wrapCaughtError(context?.maskSecrets, error, build);
|
|
46947
|
+
const thrown = this.wrapCaughtError(context?.maskSecrets, error, build);
|
|
46948
|
+
markCreatedBeforeFailure(thrown, logicalId, resourceType, requestedArn);
|
|
46949
|
+
throw thrown;
|
|
46754
46950
|
}
|
|
46755
46951
|
}
|
|
46756
46952
|
regionOfArn(arn) {
|
|
@@ -46802,7 +46998,7 @@ var ACMCertificateProvider = class {
|
|
|
46802
46998
|
}
|
|
46803
46999
|
if (changedImmutable) {
|
|
46804
47000
|
this.logger.debug(`${changedImmutable} changed, replacing ACM certificate: ${physicalId}`);
|
|
46805
|
-
const createResult = await this.create(logicalId, resourceType, properties);
|
|
47001
|
+
const createResult = await this.create(logicalId, resourceType, properties, context?.maskSecrets ? { maskSecrets: context.maskSecrets } : void 0);
|
|
46806
47002
|
let orphanReason;
|
|
46807
47003
|
let oldResourceSurvivor = "unconfirmed";
|
|
46808
47004
|
try {
|
|
@@ -46851,7 +47047,7 @@ var ACMCertificateProvider = class {
|
|
|
46851
47047
|
};
|
|
46852
47048
|
} catch (error) {
|
|
46853
47049
|
const cause = error instanceof Error ? error : void 0;
|
|
46854
|
-
throw new ProvisioningError(`Failed to update ACM certificate ${logicalId}: ${
|
|
47050
|
+
throw this.wrapCaughtError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to update ACM certificate ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
46855
47051
|
}
|
|
46856
47052
|
}
|
|
46857
47053
|
async delete(logicalId, physicalId, resourceType, _properties, context) {
|
|
@@ -46871,7 +47067,7 @@ var ACMCertificateProvider = class {
|
|
|
46871
47067
|
this.logger.debug(`Successfully deleted ACM certificate ${logicalId}`);
|
|
46872
47068
|
} catch (error) {
|
|
46873
47069
|
const cause = error instanceof Error ? error : void 0;
|
|
46874
|
-
throw new ProvisioningError(`Failed to delete ACM certificate ${logicalId}: ${
|
|
47070
|
+
throw this.wrapCaughtError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to delete ACM certificate ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
46875
47071
|
}
|
|
46876
47072
|
}
|
|
46877
47073
|
async getAttribute(physicalId, _resourceType, attributeName) {
|
|
@@ -46993,4 +47189,4 @@ var ACMCertificateProvider = class {
|
|
|
46993
47189
|
|
|
46994
47190
|
//#endregion
|
|
46995
47191
|
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 };
|
|
46996
|
-
//# sourceMappingURL=provider-classes-
|
|
47192
|
+
//# sourceMappingURL=provider-classes-Dmz-lVVh.js.map
|