@go-to-k/cdkd 0.301.15 → 0.302.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{asg-provider-ClDYCUia.js → asg-provider-BRr_hsky.js} +5 -5
- package/dist/asg-provider-BRr_hsky.js.map +1 -0
- package/dist/{aws-failure-text-CdgZn80O.js → aws-failure-text-BDZdavf4.js} +310 -35
- package/dist/aws-failure-text-BDZdavf4.js.map +1 -0
- package/dist/cli.js +2 -2
- package/dist/{deploy-engine-Dy7N7-Il.js → deploy-engine-DU0BoQqo.js} +1479 -457
- package/dist/deploy-engine-DU0BoQqo.js.map +1 -0
- package/dist/{iam-policy-targets-Dap4bLyq.js → iam-policy-targets-Dnk6FCsr.js} +2 -2
- package/dist/{iam-policy-targets-Dap4bLyq.js.map → iam-policy-targets-Dnk6FCsr.js.map} +1 -1
- package/dist/{iam-role-provider-C8Icvrf7.js → iam-role-provider-WGsb9RxZ.js} +14 -5
- package/dist/iam-role-provider-WGsb9RxZ.js.map +1 -0
- package/dist/index.d.ts +31 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/{neptune-provider-CtnwSAGM.js → neptune-provider-WE1O3kXY.js} +7 -16
- package/dist/neptune-provider-WE1O3kXY.js.map +1 -0
- package/dist/{program-CXvao3wc.js → program-BVLiidXb.js} +172 -30
- package/dist/program-BVLiidXb.js.map +1 -0
- package/dist/{provider-classes-CBbWGsK0.js → provider-classes-CXSiWJVn.js} +96 -89
- package/dist/provider-classes-CXSiWJVn.js.map +1 -0
- package/dist/{rds-provider-BMQvQTTS.js → rds-provider-6RgDTDCV.js} +7 -16
- package/dist/rds-provider-6RgDTDCV.js.map +1 -0
- package/dist/{version-DadUoJjK.js → version-C2XBsD-i.js} +2 -2
- package/dist/{version-DadUoJjK.js.map → version-C2XBsD-i.js.map} +1 -1
- package/package.json +1 -1
- package/dist/asg-provider-ClDYCUia.js.map +0 -1
- package/dist/aws-failure-text-CdgZn80O.js.map +0 -1
- package/dist/deploy-engine-Dy7N7-Il.js.map +0 -1
- package/dist/iam-role-provider-C8Icvrf7.js.map +0 -1
- package/dist/neptune-provider-CtnwSAGM.js.map +0 -1
- package/dist/program-CXvao3wc.js.map +0 -1
- package/dist/provider-classes-CBbWGsK0.js.map +0 -1
- package/dist/rds-provider-BMQvQTTS.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 { C as generateResourceName, G as displayIdent, J as isPasteableIdent, K as displaySafe, T as generatedNameFor, X as plainIdentOr, Z as safeMsg, a as safeStringify, i as isAwsAuthoredFailure, j as recordedGeneratedNameKept, n as describeAwsFailure, q as displayStackName, r as describeAwsStatusReason, s as getLogger, w as generateResourceNameWithFallback, z as SECRET_REF_MAX_CODE_POINTS } from "./aws-failure-text-BDZdavf4.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-Dnk6FCsr.js";
|
|
4
4
|
import { s as ambientRegion } from "./aws-client-defaults-DBXBcg0J.js";
|
|
5
|
-
import {
|
|
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 { Ar as markDeleteStarted, Bo as toCfnInteger, C as hasCdkAutoDeleteTag, Ci as s3BucketDomainName, Cs as redactForState, Dt as isAccessDeniedError, E as markRefusedBeforeApplying, Ei as s3BucketWebsiteUrl, Eo as findSilentDropProperties, Er as reserveStackCreateToken, Et as chunks, F as findNestedTemplateTreeDefect, Fn as replacedDeleteFailureVerdict, Fr as refuseMalformedDesiredTags, Go as configIntegerRefusal, Gr as waitForLambdaFunctionActive, Ho as coerceCfnBoolean, Hs as withoutPhysicalNameCopies, I as isAbsoluteAssetPath, Ir as tagMapAsList, Jo as replayWarn, Jt as REDACTED_DELETE_ADDRESS_SKIP_REASON, Ka as refuseMalformedNestedChildOutputs, Kl as canonicalizeRegion, Ko as configStringRefusal, Kt as getCurrentProducerRegions, L as listNestedTemplateRows, Lo as WARM_THROUGHPUT_MEMBERS, Lr as tagPlanWarning, Mr as DBPROXY_TAG_OPTIONS, Nn as getStackRecords, Nr as planTagDiff, Oo as withoutSilentDropProperties, Or as acquireIdempotencyToken, Os as hasMaskableValues, Ot as lookupEachName, Pr as readTagList, Qs as recordAttributeIdCopy, R as renderNestedTemplateTreeDefect, Ro as coerceWarmThroughput$1, Rr as definedAttributes, S as S3_AUTO_DELETE_OBJECTS_TAG, Si as s3BucketArn, Ss as markSameGenerationBag, T as getPriorAttempts, Ti as s3BucketRegionalDomainName, Ts as snapshotPassProvenance, Ul as decodeListingKey, Uo as coerceCfnInteger, Vo as toFiniteNumber, Wc as rewriteTemplateAssetReferences, Wo as configBooleanRefusal, Ws as dynamicReferenceTokens, Xo as requireConfigObject, Xs as recoverMaskedOutput, Xt as redactedDeleteAddressFields, Yo as requireConfigArray, Yr as getCurrentResourceSecrets, Yt as isRedactedRecordedValue, Zi as getAccountInfo, Zo as requireConfigString, Zs as physicalNameCopiesOf, Zt as redactedDeleteAddressSkip, _ as deleteTableWithIndexBusyRetry, _a as accountArgs, au as renderAssemblyPathEscape, b as waitForIndexesSettled, c as DynamoDBGlobalTableProvider, ci as withIndeterminateGuard, ct as getNestedRevertRun, d as compensateRemovedDeletionProtection, dt as revertNestedChildFromJournal, f as deleteBudgetKey, fi as ec2InstanceProtectionSite, fo as refuseMalformedResourcesForDestroy, g as INDEX_SETTLE_POLL_INTERVAL_MS, gi as reEnableInstanceApiTermination, gs as passedNoEchoParametersOf, gt as withNestedStackContext, h as DELETE_INDEX_WAIT_PROCEED_NOTE, hi as reDisableInstanceApiTermination, ht as getCurrentNestedStackContext, is as sameLambdaFunctionAddress, iu as displayAssemblyPath, ji as outputReferenceProvenanceOf, jn as awaitInFlightSibling, jr as DBPROXY_TAGS_WHAT, kr as isRefusedByName, kt as withApiLimit, l as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, li as isWaitAbandonedError, m as resolveDynamoDbDeleteBudgetMs, mi as observeThenDisableInstanceApiTermination, ni as unchangedBehindSecretReference, ns as canonicalLambdaFunctionName, ou as resolveAssemblyPath, p as resolveDynamoDbDeleteBudgetClock, pi as isTerminationProtectionPropagationError, ql as derivePartitionAndUrlSuffix, qo as readConfigString, rs as lambdaFunctionNameForMask, ru as describeFileReadFailure, sa as parseWebACLArn, si as deleteSkipReason, t as DeployEngine, tc as carriesSecretMask, ti as slowCcOperationTimeoutMs, ts as withRetry, u as beginDeleteWait, ua as passedParameterClassesOf, ui as markWaitAbandoned, ur as secretNamedAttributeNamesOf, v as maskedLogger, w as isTruthyCfnBoolean, wi as s3BucketDualStackDomainName, wo as withheldAccountClause, wr as earliestDefined, ws as recordReferenceProvenanceEntry, x as ECR_AUTO_DELETE_IMAGES_TAG, xi as isSettledInstanceState, y as relayedIndexBusyDelete, zc as stringifyValue, zo as isWarmThroughputDecrease, zr as stringifyIfAssigned } from "./deploy-engine-DU0BoQqo.js";
|
|
6
|
+
import { n as collectInlinePolicyNamesManagedBySiblings, r as IamCreateClientCache, t as IAMRoleProvider } from "./iam-role-provider-WGsb9RxZ.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-BVLiidXb.js";
|
|
8
|
+
import { RDSProvider } from "./rds-provider-6RgDTDCV.js";
|
|
9
|
+
import { NeptuneProvider } from "./neptune-provider-WE1O3kXY.js";
|
|
10
|
+
import { ASGProvider } from "./asg-provider-BRr_hsky.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";
|
|
@@ -133,7 +133,7 @@ var IAMPolicyProvider = class {
|
|
|
133
133
|
const log = createMaskedLogSinks(this.logger, context?.maskSecrets);
|
|
134
134
|
const { value: v } = log;
|
|
135
135
|
log.debug(`Creating IAM policy ${logicalId}`);
|
|
136
|
-
const policyName = properties["PolicyName"] ||
|
|
136
|
+
const policyName = properties["PolicyName"] || generatedNameFor("AWS::IAM::Policy", logicalId);
|
|
137
137
|
const policyDocument = properties["PolicyDocument"];
|
|
138
138
|
const targets = readPolicyTargetLists(properties);
|
|
139
139
|
if ("malformed" in targets) throw new ProvisioningError(`${targets.malformed.join(" / ")} of IAM policy ${logicalId} is not a list of IAM names — no inline policy was attached`, resourceType, logicalId);
|
|
@@ -239,7 +239,15 @@ var IAMPolicyProvider = class {
|
|
|
239
239
|
const log = withDerivedNameMasks(this.logger, createMaskedLogSinks(this.logger, context?.maskSecrets), [[previousProperties["PolicyName"], oldPolicyName]]);
|
|
240
240
|
const { value: v } = log;
|
|
241
241
|
log.debug(`Updating IAM policy ${logicalId}: ${v(physicalId)}`);
|
|
242
|
-
const
|
|
242
|
+
const derivedPolicyName = properties["PolicyName"] || generatedNameFor("AWS::IAM::Policy", logicalId);
|
|
243
|
+
const newPolicyName = oldPolicyName !== void 0 && recordedGeneratedNameKept({
|
|
244
|
+
recorded: oldPolicyName,
|
|
245
|
+
derived: derivedPolicyName,
|
|
246
|
+
declaredName: properties["PolicyName"],
|
|
247
|
+
previousDeclaredName: previousProperties["PolicyName"],
|
|
248
|
+
logicalId,
|
|
249
|
+
options: { maxLength: 64 }
|
|
250
|
+
}) ? oldPolicyName : derivedPolicyName;
|
|
243
251
|
const recordedPolicyName = previousProperties["PolicyName"];
|
|
244
252
|
const oldPolicyNames = [...new Set([oldPolicyName, recordedPolicyName].filter((name) => typeof name === "string" && IAM_POLICY_NAME.test(name)))];
|
|
245
253
|
const newTargets = readPolicyTargetLists(properties);
|
|
@@ -675,7 +683,16 @@ var IAMManagedPolicyProvider = class {
|
|
|
675
683
|
log.debug(`Updating IAM managed policy ${logicalId}: ${v(physicalId)}`);
|
|
676
684
|
const revertKeepsName = context?.desiredFromAwsReadback === true && derivedPolicyName !== oldPolicyName;
|
|
677
685
|
if (revertKeepsName) log.warn(`IAM managed policy ${logicalId}: ManagedPolicyName is not reverted — the policy ${v(oldPolicyName)} keeps its name (the reverted properties derive ${v(derivedPolicyName)}), since a drift revert never replaces a policy. 'cdkd drift' keeps reporting the name until 'cdkd drift --accept' records the live one; only a deploy renames the policy.`);
|
|
678
|
-
const
|
|
686
|
+
const generatedNameKept = recordedGeneratedNameKept({
|
|
687
|
+
recorded: oldPolicyName,
|
|
688
|
+
derived: derivedPolicyName,
|
|
689
|
+
declaredName: properties["ManagedPolicyName"],
|
|
690
|
+
previousDeclaredName: previousProperties["ManagedPolicyName"],
|
|
691
|
+
logicalId,
|
|
692
|
+
options: { maxLength: 128 }
|
|
693
|
+
});
|
|
694
|
+
if (generatedNameKept) log.debug(`IAM managed policy ${logicalId}: keeping its generated name ${v(oldPolicyName)} (the template names no policy)`);
|
|
695
|
+
const newPolicyName = revertKeepsName || generatedNameKept ? oldPolicyName : derivedPolicyName;
|
|
679
696
|
const newPrincipals = principalsOf(properties);
|
|
680
697
|
const oldPrincipals = principalsOf(previousProperties);
|
|
681
698
|
const liveKinds = !("malformed" in newPrincipals) && onlySecretDerived(oldPrincipals) ? oldPrincipals.malformed : [];
|
|
@@ -5403,11 +5420,7 @@ var S3BucketProvider = class S3BucketProvider {
|
|
|
5403
5420
|
}
|
|
5404
5421
|
generatedCreateName(_resourceType, logicalId, properties) {
|
|
5405
5422
|
if (properties["BucketName"]) return void 0;
|
|
5406
|
-
return
|
|
5407
|
-
maxLength: 63,
|
|
5408
|
-
lowercase: true,
|
|
5409
|
-
allowedPattern: /[^a-z0-9.-]/g
|
|
5410
|
-
});
|
|
5423
|
+
return generatedNameFor("AWS::S3::Bucket", logicalId);
|
|
5411
5424
|
}
|
|
5412
5425
|
async import(input) {
|
|
5413
5426
|
const explicit = resolveExplicitPhysicalId(input, "BucketName");
|
|
@@ -5754,7 +5767,7 @@ var SQSQueueProvider = class {
|
|
|
5754
5767
|
}
|
|
5755
5768
|
generatedCreateName(_resourceType, logicalId, properties) {
|
|
5756
5769
|
if (properties["QueueName"]) return void 0;
|
|
5757
|
-
return
|
|
5770
|
+
return generatedNameFor("AWS::SQS::Queue", logicalId);
|
|
5758
5771
|
}
|
|
5759
5772
|
async holderCreatedAt(_resourceType, physicalId) {
|
|
5760
5773
|
const resp = await this.sqsClient.send(new GetQueueAttributesCommand({
|
|
@@ -5835,7 +5848,7 @@ var SQSQueueProvider = class {
|
|
|
5835
5848
|
QueueUrl: physicalId,
|
|
5836
5849
|
AttributeNames: ["QueueArn"]
|
|
5837
5850
|
}));
|
|
5838
|
-
const queueName = properties["QueueName"] ||
|
|
5851
|
+
const queueName = properties["QueueName"] || physicalId.split("/").pop() || generatedNameFor("AWS::SQS::Queue", logicalId);
|
|
5839
5852
|
return {
|
|
5840
5853
|
physicalId,
|
|
5841
5854
|
wasReplaced: false,
|
|
@@ -6845,7 +6858,7 @@ var SNSTopicProvider = class {
|
|
|
6845
6858
|
}
|
|
6846
6859
|
generatedCreateName(_resourceType, logicalId, properties) {
|
|
6847
6860
|
if (properties["TopicName"]) return void 0;
|
|
6848
|
-
return
|
|
6861
|
+
return generatedNameFor("AWS::SNS::Topic", logicalId);
|
|
6849
6862
|
}
|
|
6850
6863
|
async import(input) {
|
|
6851
6864
|
if (input.knownPhysicalId) try {
|
|
@@ -7837,7 +7850,7 @@ var LambdaFunctionProvider = class {
|
|
|
7837
7850
|
this.ec2Client = awsClients.ec2;
|
|
7838
7851
|
}
|
|
7839
7852
|
async create(logicalId, resourceType, properties, context) {
|
|
7840
|
-
const functionName = properties["FunctionName"] ||
|
|
7853
|
+
const functionName = properties["FunctionName"] || generatedNameFor("AWS::Lambda::Function", logicalId);
|
|
7841
7854
|
const log = lambdaOperationSinks(this.logger, context?.maskSecrets, [[properties["FunctionName"], functionName]], properties);
|
|
7842
7855
|
log.debug(`Creating Lambda function ${logicalId}`);
|
|
7843
7856
|
const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
|
|
@@ -9576,7 +9589,7 @@ var LambdaLayerVersionProvider = class {
|
|
|
9576
9589
|
});
|
|
9577
9590
|
}
|
|
9578
9591
|
async create(logicalId, resourceType, properties, context) {
|
|
9579
|
-
const layerName = properties["LayerName"] ||
|
|
9592
|
+
const layerName = properties["LayerName"] || generatedNameFor("AWS::Lambda::LayerVersion", logicalId);
|
|
9580
9593
|
const log = withDerivedNameMasks(this.logger, createMaskedLogSinks(this.logger, context?.maskSecrets), [[properties["LayerName"], layerName], [properties["LayerName"], layerNameSegment(layerName)]]);
|
|
9581
9594
|
log.debug(`Creating Lambda layer version ${logicalId}`);
|
|
9582
9595
|
const content = properties["Content"];
|
|
@@ -11080,7 +11093,7 @@ var LambdaNetworkConnectorProvider = class {
|
|
|
11080
11093
|
async create(logicalId, resourceType, properties, context) {
|
|
11081
11094
|
this.logger.debug(safeMsg`Creating Lambda network connector ${logicalId}`);
|
|
11082
11095
|
const tagList = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
|
|
11083
|
-
const name = typeof properties["Name"] === "string" && properties["Name"] !== "" ? properties["Name"] :
|
|
11096
|
+
const name = typeof properties["Name"] === "string" && properties["Name"] !== "" ? properties["Name"] : generatedNameFor("AWS::Lambda::NetworkConnector", logicalId);
|
|
11084
11097
|
const vpc = this.readVpcEgress(properties, logicalId, resourceType, void 0);
|
|
11085
11098
|
const createToken = acquireIdempotencyToken({
|
|
11086
11099
|
scope: "CreateNetworkConnector",
|
|
@@ -11964,6 +11977,10 @@ const deleteTableRetryDelays = {};
|
|
|
11964
11977
|
function maskLeafValue(value, maskSecrets) {
|
|
11965
11978
|
return maskDeep(value, maskSecrets);
|
|
11966
11979
|
}
|
|
11980
|
+
const tableNameReleaseWait = {
|
|
11981
|
+
maxPolls: 600,
|
|
11982
|
+
intervalMs: INDEX_SETTLE_POLL_INTERVAL_MS
|
|
11983
|
+
};
|
|
11967
11984
|
var DynamoDBTableProvider = class {
|
|
11968
11985
|
dynamoDBClient;
|
|
11969
11986
|
createClient;
|
|
@@ -12024,7 +12041,7 @@ var DynamoDBTableProvider = class {
|
|
|
12024
12041
|
const debug = (message) => this.logger.debug(maskSecrets(message));
|
|
12025
12042
|
this.logger.debug(`Creating DynamoDB table ${logicalId}`);
|
|
12026
12043
|
const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
|
|
12027
|
-
const tableName = properties["TableName"] ||
|
|
12044
|
+
const tableName = properties["TableName"] || generatedNameFor("AWS::DynamoDB::Table", logicalId);
|
|
12028
12045
|
const keySchema = properties["KeySchema"];
|
|
12029
12046
|
const attributeDefinitions = properties["AttributeDefinitions"];
|
|
12030
12047
|
if (!keySchema) throw new ProvisioningError(`KeySchema is required for DynamoDB table ${logicalId}`, resourceType, logicalId);
|
|
@@ -12372,6 +12389,22 @@ var DynamoDBTableProvider = class {
|
|
|
12372
12389
|
throw this.wrapCaughtError(maskSecrets, error, (text) => new ProvisioningError(`Failed to update DynamoDB table ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
12373
12390
|
}
|
|
12374
12391
|
}
|
|
12392
|
+
async waitForNameReleased(logicalId, physicalId, _resourceType, context) {
|
|
12393
|
+
const mask = context.maskSecrets ?? ((text) => text);
|
|
12394
|
+
this.logger.info(mask(` Waiting for the deleted DynamoDB table ${physicalId} to release its name...`));
|
|
12395
|
+
for (let poll = 0; poll < tableNameReleaseWait.maxPolls; poll++) {
|
|
12396
|
+
if (context.isInterrupted()) return;
|
|
12397
|
+
try {
|
|
12398
|
+
await this.dynamoDBClient.send(new DescribeTableCommand({ TableName: physicalId }));
|
|
12399
|
+
} catch (error) {
|
|
12400
|
+
if (error instanceof ResourceNotFoundException$1) return;
|
|
12401
|
+
this.logger.debug(mask(`DynamoDB table ${logicalId}: name-release check failed: ${describeAwsFailure(error).detail}`));
|
|
12402
|
+
if (!isThrottlingError(error) && !isTransientServerError(error)) return;
|
|
12403
|
+
}
|
|
12404
|
+
await new Promise((resolve) => setTimeout(resolve, tableNameReleaseWait.intervalMs));
|
|
12405
|
+
}
|
|
12406
|
+
this.logger.debug(mask(`DynamoDB table ${logicalId} (${physicalId}) still held its name after the wait`));
|
|
12407
|
+
}
|
|
12375
12408
|
async delete(logicalId, physicalId, resourceType, _properties, context) {
|
|
12376
12409
|
const flip = this.protectionFlips.acquire(deleteBudgetKey(physicalId, context?.expectedRegion), DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, resolveDynamoDbDeleteBudgetClock());
|
|
12377
12410
|
try {
|
|
@@ -13433,10 +13466,7 @@ var LogsLogGroupProvider = class {
|
|
|
13433
13466
|
}
|
|
13434
13467
|
generatedCreateName(_resourceType, logicalId, properties) {
|
|
13435
13468
|
if (properties["LogGroupName"]) return void 0;
|
|
13436
|
-
return
|
|
13437
|
-
maxLength: 506,
|
|
13438
|
-
allowedPattern: /[^a-zA-Z0-9-/_]/g
|
|
13439
|
-
})}`;
|
|
13469
|
+
return generatedNameFor("AWS::Logs::LogGroup", logicalId);
|
|
13440
13470
|
}
|
|
13441
13471
|
async holderCreatedAt(_resourceType, physicalId) {
|
|
13442
13472
|
const group = (await this.logsClient.send(new DescribeLogGroupsCommand({ logGroupNamePrefix: physicalId }))).logGroups?.find((g) => g.logGroupName === physicalId);
|
|
@@ -14127,7 +14157,7 @@ var CloudWatchAlarmProvider = class {
|
|
|
14127
14157
|
}
|
|
14128
14158
|
generatedCreateName(_resourceType, logicalId, properties) {
|
|
14129
14159
|
if (properties["AlarmName"]) return void 0;
|
|
14130
|
-
return
|
|
14160
|
+
return generatedNameFor("AWS::CloudWatch::Alarm", logicalId);
|
|
14131
14161
|
}
|
|
14132
14162
|
async lookupNames(_resourceType, names) {
|
|
14133
14163
|
const wanted = new Set(names);
|
|
@@ -14446,10 +14476,7 @@ var SecretsManagerSecretProvider = class {
|
|
|
14446
14476
|
const { value: v } = log;
|
|
14447
14477
|
log.debug(`Creating secret ${logicalId}`);
|
|
14448
14478
|
const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
|
|
14449
|
-
const name = properties["Name"] ||
|
|
14450
|
-
maxLength: 512,
|
|
14451
|
-
allowedPattern: /[^a-zA-Z0-9-/_]/g
|
|
14452
|
-
});
|
|
14479
|
+
const name = properties["Name"] || generatedNameFor("AWS::SecretsManager::Secret", logicalId);
|
|
14453
14480
|
try {
|
|
14454
14481
|
let secretString;
|
|
14455
14482
|
const rawGenerate = properties["GenerateSecretString"];
|
|
@@ -14800,10 +14827,7 @@ var SSMParameterProvider = class SSMParameterProvider {
|
|
|
14800
14827
|
const ssmTags = SSMParameterProvider.desiredSsmTags(properties["Tags"], resourceType, logicalId);
|
|
14801
14828
|
const debug = (message) => this.logger.debug(mask(message));
|
|
14802
14829
|
debug(`Creating SSM parameter ${displaySafe(logicalId)}`);
|
|
14803
|
-
const name = properties["Name"] ||
|
|
14804
|
-
maxLength: 1023,
|
|
14805
|
-
allowedPattern: /[^a-zA-Z0-9-/_]/g
|
|
14806
|
-
})}`;
|
|
14830
|
+
const name = properties["Name"] || generatedNameFor("AWS::SSM::Parameter", logicalId);
|
|
14807
14831
|
const type = properties["Type"] || "String";
|
|
14808
14832
|
const value = properties["Value"];
|
|
14809
14833
|
if (!value) throw new ProvisioningError(`Value is required for SSM parameter ${displaySafe(logicalId)}`, resourceType, logicalId);
|
|
@@ -15191,7 +15215,8 @@ var EventBridgeRuleProvider = class {
|
|
|
15191
15215
|
this.logger.debug(`Updating EventBridge rule ${logicalId}: ${physicalId}`);
|
|
15192
15216
|
assertRegionMatch(context?.expectedRegion ? await this.eventBridgeClient.config.region() : void 0, context?.expectedRegion, resourceType, logicalId, physicalId, "pre-update");
|
|
15193
15217
|
refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId, physicalId);
|
|
15194
|
-
const
|
|
15218
|
+
const recordedRuleName = physicalId.split("/").pop() ?? "";
|
|
15219
|
+
const ruleName = properties["Name"] || recordedRuleName || generatedNameFor("AWS::Events::Rule", logicalId);
|
|
15195
15220
|
const newTargets = properties["Targets"];
|
|
15196
15221
|
const oldTargets = previousProperties["Targets"];
|
|
15197
15222
|
try {
|
|
@@ -15354,7 +15379,7 @@ var EventBridgeRuleProvider = class {
|
|
|
15354
15379
|
}
|
|
15355
15380
|
generatedCreateName(_resourceType, logicalId, properties) {
|
|
15356
15381
|
if (properties["Name"]) return void 0;
|
|
15357
|
-
return
|
|
15382
|
+
return generatedNameFor("AWS::Events::Rule", logicalId);
|
|
15358
15383
|
}
|
|
15359
15384
|
lookupNeedsResolvedProperties(_resourceType, properties) {
|
|
15360
15385
|
const bus = properties["EventBusName"];
|
|
@@ -17289,7 +17314,7 @@ var EC2Provider = class {
|
|
|
17289
17314
|
try {
|
|
17290
17315
|
const createClient = await this.getCreateClient();
|
|
17291
17316
|
const { response, tagsApplied } = await this.sendTaggedCreate(logicalId, "security-group", desiredTags, (TagSpecifications) => createClient.send(new CreateSecurityGroupCommand({
|
|
17292
|
-
GroupName: properties["GroupName"] ?? logicalId,
|
|
17317
|
+
GroupName: properties["GroupName"] ?? generatedNameFor("AWS::EC2::SecurityGroup", logicalId),
|
|
17293
17318
|
Description: groupDescription,
|
|
17294
17319
|
VpcId: properties["VpcId"] ?? void 0,
|
|
17295
17320
|
...TagSpecifications && { TagSpecifications }
|
|
@@ -23852,7 +23877,7 @@ var StepFunctionsProvider = class {
|
|
|
23852
23877
|
}
|
|
23853
23878
|
generatedCreateName(_resourceType, logicalId, properties) {
|
|
23854
23879
|
if (properties["StateMachineName"]) return void 0;
|
|
23855
|
-
return
|
|
23880
|
+
return generatedNameFor("AWS::StepFunctions::StateMachine", logicalId);
|
|
23856
23881
|
}
|
|
23857
23882
|
async holderCreatedAt(_resourceType, physicalId) {
|
|
23858
23883
|
const resp = await this.getClient().send(new DescribeStateMachineCommand({ stateMachineArn: physicalId }));
|
|
@@ -24355,7 +24380,7 @@ var ECSProvider = class {
|
|
|
24355
24380
|
async createTaskDefinition(logicalId, resourceType, properties, log) {
|
|
24356
24381
|
log.debug(`Creating ECS task definition ${logicalId}`);
|
|
24357
24382
|
const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
|
|
24358
|
-
const family = properties["Family"] ||
|
|
24383
|
+
const family = properties["Family"] || generatedNameFor("AWS::ECS::TaskDefinition", logicalId);
|
|
24359
24384
|
try {
|
|
24360
24385
|
const orphanWindow = registerTaskDefinitionLatch.take(logicalId);
|
|
24361
24386
|
if (orphanWindow !== void 0) await this.reportPossibleOrphanTaskDefinitions(logicalId, family, orphanWindow, log);
|
|
@@ -24432,7 +24457,7 @@ var ECSProvider = class {
|
|
|
24432
24457
|
log.debug(`Creating ECS service ${logicalId}`);
|
|
24433
24458
|
const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
|
|
24434
24459
|
const client = this.getClient();
|
|
24435
|
-
const serviceName = properties["ServiceName"] ||
|
|
24460
|
+
const serviceName = properties["ServiceName"] || generatedNameFor("AWS::ECS::Service", logicalId);
|
|
24436
24461
|
let survivorArn;
|
|
24437
24462
|
try {
|
|
24438
24463
|
const heldBefore = process.env["CDKD_FULL_WAIT"] === "true" ? await nameHeldBefore(() => this.serviceNameHeld(properties["Cluster"], serviceName), (error) => hasErrorName(error, ["ClusterNotFoundException"])) : "free";
|
|
@@ -25368,7 +25393,7 @@ var ECSProvider = class {
|
|
|
25368
25393
|
}
|
|
25369
25394
|
generatedCreateName(resourceType, logicalId, properties) {
|
|
25370
25395
|
if (resourceType !== "AWS::ECS::Cluster" || properties["ClusterName"]) return void 0;
|
|
25371
|
-
return
|
|
25396
|
+
return generatedNameFor("AWS::ECS::Cluster", logicalId);
|
|
25372
25397
|
}
|
|
25373
25398
|
async lookupNames(resourceType, names) {
|
|
25374
25399
|
const found = /* @__PURE__ */ new Map();
|
|
@@ -26930,7 +26955,7 @@ var RDSDBProxyProvider = class {
|
|
|
26930
26955
|
}
|
|
26931
26956
|
async create(logicalId, resourceType, properties) {
|
|
26932
26957
|
const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId, void 0, "Tags", DBPROXY_TAGS_WHAT, DBPROXY_TAG_OPTIONS);
|
|
26933
|
-
const dbProxyName = properties["DBProxyName"] ??
|
|
26958
|
+
const dbProxyName = properties["DBProxyName"] ?? generatedNameFor("AWS::RDS::DBProxy", logicalId);
|
|
26934
26959
|
const engineFamily = properties["EngineFamily"];
|
|
26935
26960
|
if (!engineFamily) throw new ProvisioningError(`EngineFamily is required for AWS::RDS::DBProxy ${logicalId}`, resourceType, logicalId);
|
|
26936
26961
|
const auth = properties["Auth"];
|
|
@@ -27253,7 +27278,7 @@ var RDSDBProxyEndpointProvider = class {
|
|
|
27253
27278
|
const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId, void 0, "Tags", DBPROXY_TAGS_WHAT, DBPROXY_TAG_OPTIONS);
|
|
27254
27279
|
const dbProxyName = properties["DBProxyName"];
|
|
27255
27280
|
if (!dbProxyName) throw new ProvisioningError(`DBProxyName is required for AWS::RDS::DBProxyEndpoint ${logicalId}`, resourceType, logicalId);
|
|
27256
|
-
const dbProxyEndpointName = properties["DBProxyEndpointName"] ??
|
|
27281
|
+
const dbProxyEndpointName = properties["DBProxyEndpointName"] ?? generatedNameFor("AWS::RDS::DBProxyEndpoint", logicalId);
|
|
27257
27282
|
const vpcSubnetIds = properties["VpcSubnetIds"];
|
|
27258
27283
|
if (!vpcSubnetIds || vpcSubnetIds.length === 0) throw new ProvisioningError(`VpcSubnetIds (at least one) is required for AWS::RDS::DBProxyEndpoint ${logicalId}`, resourceType, logicalId);
|
|
27259
27284
|
const client = this.getClient();
|
|
@@ -28145,10 +28170,7 @@ var DocDBProvider = class {
|
|
|
28145
28170
|
async createDBCluster(logicalId, resourceType, properties) {
|
|
28146
28171
|
this.logger.debug(`Creating DocDB DBCluster ${logicalId}`);
|
|
28147
28172
|
const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
|
|
28148
|
-
const dbClusterIdentifier = properties["DBClusterIdentifier"] ||
|
|
28149
|
-
maxLength: 63,
|
|
28150
|
-
lowercase: true
|
|
28151
|
-
});
|
|
28173
|
+
const dbClusterIdentifier = properties["DBClusterIdentifier"] || generatedNameFor("AWS::DocDB::DBCluster", logicalId);
|
|
28152
28174
|
let clusterCreated = false;
|
|
28153
28175
|
let createdResourceId;
|
|
28154
28176
|
try {
|
|
@@ -28294,10 +28316,7 @@ var DocDBProvider = class {
|
|
|
28294
28316
|
async createDBInstance(logicalId, resourceType, properties) {
|
|
28295
28317
|
this.logger.debug(`Creating DocDB DBInstance ${logicalId}`);
|
|
28296
28318
|
const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
|
|
28297
|
-
const dbInstanceIdentifier = properties["DBInstanceIdentifier"] ||
|
|
28298
|
-
maxLength: 63,
|
|
28299
|
-
lowercase: true
|
|
28300
|
-
});
|
|
28319
|
+
const dbInstanceIdentifier = properties["DBInstanceIdentifier"] || generatedNameFor("AWS::DocDB::DBInstance", logicalId);
|
|
28301
28320
|
let instanceCreated = false;
|
|
28302
28321
|
let createdResourceId;
|
|
28303
28322
|
try {
|
|
@@ -28613,10 +28632,7 @@ var DocDBSubnetGroupProvider = class {
|
|
|
28613
28632
|
this.assertType(resourceType, logicalId);
|
|
28614
28633
|
this.logger.debug(safeMsg`Creating DocDB DBSubnetGroup ${logicalId}`);
|
|
28615
28634
|
const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
|
|
28616
|
-
const dbSubnetGroupName = properties["DBSubnetGroupName"] ||
|
|
28617
|
-
maxLength: 255,
|
|
28618
|
-
lowercase: true
|
|
28619
|
-
});
|
|
28635
|
+
const dbSubnetGroupName = properties["DBSubnetGroupName"] || generatedNameFor("AWS::DocDB::DBSubnetGroup", logicalId);
|
|
28620
28636
|
try {
|
|
28621
28637
|
await this.getCreateClient().send(new CreateDBSubnetGroupCommand$1({
|
|
28622
28638
|
DBSubnetGroupName: dbSubnetGroupName,
|
|
@@ -30024,7 +30040,7 @@ var WAFv2WebACLProvider = class {
|
|
|
30024
30040
|
async create(logicalId, resourceType, properties, context) {
|
|
30025
30041
|
this.logger.debug(`Creating WAFv2 WebACL ${logicalId}`);
|
|
30026
30042
|
const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
|
|
30027
|
-
const name = properties["Name"] ||
|
|
30043
|
+
const name = properties["Name"] || generatedNameFor("AWS::WAFv2::WebACL", logicalId);
|
|
30028
30044
|
const scope = requireConfigString(properties["Scope"], "REGIONAL", "AWS::WAFv2::WebACL Scope", replayWarn(this.logger, context));
|
|
30029
30045
|
this.warnOnSdkUnsupportedRuleKeys(logicalId, properties["Rules"]);
|
|
30030
30046
|
try {
|
|
@@ -30563,7 +30579,7 @@ var CognitoUserPoolProvider = class {
|
|
|
30563
30579
|
}
|
|
30564
30580
|
async create(logicalId, resourceType, properties, context) {
|
|
30565
30581
|
this.logger.debug(`Creating Cognito User Pool ${logicalId}`);
|
|
30566
|
-
const poolName = properties["UserPoolName"] ||
|
|
30582
|
+
const poolName = properties["UserPoolName"] || generatedNameFor("AWS::Cognito::UserPool", logicalId);
|
|
30567
30583
|
let mfaConfiguration;
|
|
30568
30584
|
try {
|
|
30569
30585
|
mfaConfiguration = readDeclaredMfaConfiguration(properties["MfaConfiguration"], replayWarn(this.logger, context));
|
|
@@ -31326,10 +31342,7 @@ var ElastiCacheProvider = class {
|
|
|
31326
31342
|
async createSubnetGroup(logicalId, resourceType, properties) {
|
|
31327
31343
|
this.logger.debug(`Creating CacheSubnetGroup ${logicalId}`);
|
|
31328
31344
|
const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
|
|
31329
|
-
const cacheSubnetGroupName = properties["CacheSubnetGroupName"] ||
|
|
31330
|
-
maxLength: 255,
|
|
31331
|
-
lowercase: true
|
|
31332
|
-
});
|
|
31345
|
+
const cacheSubnetGroupName = properties["CacheSubnetGroupName"] || generatedNameFor("AWS::ElastiCache::SubnetGroup", logicalId);
|
|
31333
31346
|
try {
|
|
31334
31347
|
await this.getCreateClient().send(new CreateCacheSubnetGroupCommand({
|
|
31335
31348
|
CacheSubnetGroupName: cacheSubnetGroupName,
|
|
@@ -31393,10 +31406,7 @@ var ElastiCacheProvider = class {
|
|
|
31393
31406
|
async createCacheCluster(logicalId, resourceType, properties) {
|
|
31394
31407
|
this.logger.debug(`Creating CacheCluster ${logicalId}`);
|
|
31395
31408
|
const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
|
|
31396
|
-
const cacheClusterId = properties["ClusterName"] ||
|
|
31397
|
-
maxLength: 40,
|
|
31398
|
-
lowercase: true
|
|
31399
|
-
});
|
|
31409
|
+
const cacheClusterId = properties["ClusterName"] || generatedNameFor("AWS::ElastiCache::CacheCluster", logicalId);
|
|
31400
31410
|
let clusterCreated = false;
|
|
31401
31411
|
try {
|
|
31402
31412
|
await this.getCreateClient().send(new CreateCacheClusterCommand({
|
|
@@ -35557,7 +35567,7 @@ var GlueJobProvider = class {
|
|
|
35557
35567
|
const log = glueOperationSinks(this.logger, context?.maskSecrets, secretNamePairs([properties["Name"]]));
|
|
35558
35568
|
const { value: v } = log;
|
|
35559
35569
|
log.debug(`Creating Glue Job ${logicalId}`);
|
|
35560
|
-
const name = properties["Name"] ?? logicalId;
|
|
35570
|
+
const name = properties["Name"] ?? generatedNameFor("AWS::Glue::Job", logicalId);
|
|
35561
35571
|
const role = properties["Role"];
|
|
35562
35572
|
const command = properties["Command"];
|
|
35563
35573
|
if (!role) throw new ProvisioningError(`Role is required for Glue Job ${logicalId}`, resourceType, logicalId);
|
|
@@ -35845,7 +35855,7 @@ var GlueCrawlerProvider = class {
|
|
|
35845
35855
|
const log = glueOperationSinks(this.logger, context?.maskSecrets, secretNamePairs([properties["Name"]]));
|
|
35846
35856
|
const { value: v } = log;
|
|
35847
35857
|
log.debug(`Creating Glue Crawler ${logicalId}`);
|
|
35848
|
-
const name = properties["Name"] ?? logicalId;
|
|
35858
|
+
const name = properties["Name"] ?? generatedNameFor("AWS::Glue::Crawler", logicalId);
|
|
35849
35859
|
const role = properties["Role"];
|
|
35850
35860
|
const targets = properties["Targets"];
|
|
35851
35861
|
if (!role) throw new ProvisioningError(`Role is required for Glue Crawler ${logicalId}`, resourceType, logicalId);
|
|
@@ -36095,7 +36105,7 @@ var GlueConnectionProvider = class {
|
|
|
36095
36105
|
log.debug(`Creating Glue Connection ${logicalId}`);
|
|
36096
36106
|
const connectionInput = properties["ConnectionInput"];
|
|
36097
36107
|
if (!connectionInput) throw new ProvisioningError(`ConnectionInput is required for Glue Connection ${logicalId}`, resourceType, logicalId);
|
|
36098
|
-
const name = connectionInput["Name"] ?? logicalId;
|
|
36108
|
+
const name = connectionInput["Name"] ?? generatedNameFor("AWS::Glue::Connection", logicalId);
|
|
36099
36109
|
const catalogId = properties["CatalogId"];
|
|
36100
36110
|
try {
|
|
36101
36111
|
await this.getCreateClient().send(new CreateConnectionCommand({
|
|
@@ -36300,7 +36310,7 @@ var GlueTriggerProvider = class {
|
|
|
36300
36310
|
const log = glueOperationSinks(this.logger, context?.maskSecrets, secretNamePairs([properties["Name"]]));
|
|
36301
36311
|
const { value: v } = log;
|
|
36302
36312
|
log.debug(`Creating Glue Trigger ${logicalId}`);
|
|
36303
|
-
const name = properties["Name"] ?? logicalId;
|
|
36313
|
+
const name = properties["Name"] ?? generatedNameFor("AWS::Glue::Trigger", logicalId);
|
|
36304
36314
|
const type = properties["Type"];
|
|
36305
36315
|
const actions = properties["Actions"];
|
|
36306
36316
|
if (!type) throw new ProvisioningError(`Type is required for Glue Trigger ${logicalId}`, resourceType, logicalId);
|
|
@@ -37709,7 +37719,7 @@ var KinesisStreamProvider = class {
|
|
|
37709
37719
|
const warn = (message) => this.logger.warn(mask(message));
|
|
37710
37720
|
this.logger.debug(`Creating Kinesis stream ${logicalId}`);
|
|
37711
37721
|
const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
|
|
37712
|
-
const streamName = properties["Name"] ||
|
|
37722
|
+
const streamName = properties["Name"] || generatedNameFor("AWS::Kinesis::Stream", logicalId);
|
|
37713
37723
|
const desiredRead = readShardLevelMetrics(properties["DesiredShardLevelMetrics"], mask);
|
|
37714
37724
|
if (desiredRead.kind === "unusable") {
|
|
37715
37725
|
if (context?.replayingState === true) warn(`${desiredRead.reason}. Replaying a state record, so the shard-level metrics are left unset on ${streamName} rather than refusing the restore`);
|
|
@@ -38455,7 +38465,7 @@ var SchedulerScheduleProvider = class {
|
|
|
38455
38465
|
return result;
|
|
38456
38466
|
}
|
|
38457
38467
|
async create(logicalId, resourceType, properties) {
|
|
38458
|
-
const name = properties["Name"] ??
|
|
38468
|
+
const name = properties["Name"] ?? generatedNameFor("AWS::Scheduler::Schedule", logicalId);
|
|
38459
38469
|
const groupName = this.groupNameOf(properties);
|
|
38460
38470
|
this.logger.debug(`Creating Schedule ${logicalId}: ${name}${groupName ? ` (group: ${groupName})` : ""}`);
|
|
38461
38471
|
try {
|
|
@@ -38995,7 +39005,7 @@ var PipesPipeProvider = class {
|
|
|
38995
39005
|
}
|
|
38996
39006
|
async create(logicalId, resourceType, properties, context) {
|
|
38997
39007
|
const mask = maskerOrIdentity(context?.maskSecrets);
|
|
38998
|
-
const name = properties["Name"] ??
|
|
39008
|
+
const name = properties["Name"] ?? generatedNameFor("AWS::Pipes::Pipe", logicalId);
|
|
38999
39009
|
const tags = desiredTagMap(properties["Tags"], logicalId);
|
|
39000
39010
|
this.logger.debug(mask(`Creating Pipe ${logicalId}: ${name}`));
|
|
39001
39011
|
let createdIdentity;
|
|
@@ -41165,7 +41175,7 @@ const leftInPlaceWarning$1 = (logicalId, names, caller) => {
|
|
|
41165
41175
|
const one = names.length === 1;
|
|
41166
41176
|
const subject = one ? "property" : "properties";
|
|
41167
41177
|
const verb = one ? "is" : "are";
|
|
41168
|
-
return caller === "rollback" ? safeMsg`${logicalId} (AWS::EMR::Cluster): ${subject} ${names.join(", ")} ${verb} absent from the state being restored; ModifyCluster keeps a setting it is not sent, so the rollback leaves the value the failed deploy applied in place.` : safeMsg`${logicalId} (AWS::EMR::Cluster): ${subject} ${names.join(", ")} ${one ? "was" : "were"} removed from the template
|
|
41178
|
+
return caller === "rollback" ? safeMsg`${logicalId} (AWS::EMR::Cluster): ${subject} ${names.join(", ")} ${verb} absent from the state being restored; ModifyCluster keeps a setting it is not sent, so the rollback leaves the value the failed deploy applied in place.` : safeMsg`${logicalId} (AWS::EMR::Cluster): ${subject} ${names.join(", ")} ${one ? "was" : "were"} removed from the template and ${one ? "keeps its" : "keep their"} current AWS value, as CloudFormation leaves ${one ? "it" : "them"}; ModifyCluster keeps a setting it is not sent. Declare the intended value explicitly to change it.`;
|
|
41169
41179
|
};
|
|
41170
41180
|
const toNumber$2 = (v) => {
|
|
41171
41181
|
if (v === void 0) return void 0;
|
|
@@ -42297,7 +42307,7 @@ const leftInPlaceWarning = (logicalId, names, caller) => {
|
|
|
42297
42307
|
const one = names.length === 1;
|
|
42298
42308
|
const subject = one ? "property" : "properties";
|
|
42299
42309
|
const verb = one ? "is" : "are";
|
|
42300
|
-
return caller === "rollback" ? safeMsg`${logicalId} (AWS::EMR::InstanceFleetConfig): ${subject} ${names.join(", ")} ${verb} absent from the state being restored; ModifyInstanceFleet keeps a setting it is not sent, so the rollback leaves the value the failed deploy applied in place.` : safeMsg`${logicalId} (AWS::EMR::InstanceFleetConfig): ${subject} ${names.join(", ")} ${one ? "was" : "were"} removed from the template
|
|
42310
|
+
return caller === "rollback" ? safeMsg`${logicalId} (AWS::EMR::InstanceFleetConfig): ${subject} ${names.join(", ")} ${verb} absent from the state being restored; ModifyInstanceFleet keeps a setting it is not sent, so the rollback leaves the value the failed deploy applied in place.` : safeMsg`${logicalId} (AWS::EMR::InstanceFleetConfig): ${subject} ${names.join(", ")} ${one ? "was" : "were"} removed from the template and ${one ? "keeps its" : "keep their"} current AWS value, as CloudFormation leaves ${one ? "it" : "them"}; ModifyInstanceFleet keeps a setting it is not sent. Declare the intended value explicitly to change it.`;
|
|
42301
42311
|
};
|
|
42302
42312
|
const addInstanceFleetLatch = new AmbiguousCreateLatch("emr:AddInstanceFleet");
|
|
42303
42313
|
const fleetsCreatedByThisProcess = new RecentIdSet();
|
|
@@ -42682,7 +42692,7 @@ var FirehoseProvider = class {
|
|
|
42682
42692
|
let createdStreamName;
|
|
42683
42693
|
try {
|
|
42684
42694
|
const input = {
|
|
42685
|
-
DeliveryStreamName: deliveryStreamName || logicalId,
|
|
42695
|
+
DeliveryStreamName: deliveryStreamName || generatedNameFor("AWS::KinesisFirehose::DeliveryStream", logicalId),
|
|
42686
42696
|
DeliveryStreamType: deliveryStreamType
|
|
42687
42697
|
};
|
|
42688
42698
|
if (properties["S3DestinationConfiguration"]) {
|
|
@@ -43578,7 +43588,7 @@ var CloudTrailProvider = class {
|
|
|
43578
43588
|
let createdTrailArn;
|
|
43579
43589
|
try {
|
|
43580
43590
|
const result = await this.getCreateClient().send(new CreateTrailCommand({
|
|
43581
|
-
Name: trailName ?? logicalId,
|
|
43591
|
+
Name: trailName ?? generatedNameFor("AWS::CloudTrail::Trail", logicalId),
|
|
43582
43592
|
S3BucketName: s3BucketName,
|
|
43583
43593
|
S3KeyPrefix: s3KeyPrefix,
|
|
43584
43594
|
IsMultiRegionTrail: isMultiRegionTrail,
|
|
@@ -43923,8 +43933,8 @@ var CodeBuildProvider = class {
|
|
|
43923
43933
|
artifactIdentifier: artifacts["ArtifactIdentifier"]
|
|
43924
43934
|
};
|
|
43925
43935
|
}
|
|
43926
|
-
mapProperties(
|
|
43927
|
-
const name = properties["Name"] ??
|
|
43936
|
+
mapProperties(undeclaredName, properties) {
|
|
43937
|
+
const name = properties["Name"] ?? undeclaredName();
|
|
43928
43938
|
const source = properties["Source"];
|
|
43929
43939
|
const environment = properties["Environment"];
|
|
43930
43940
|
const sanitizeOptionalString = (value) => {
|
|
@@ -44053,7 +44063,7 @@ var CodeBuildProvider = class {
|
|
|
44053
44063
|
async create(logicalId, resourceType, properties) {
|
|
44054
44064
|
this.logger.debug(`Creating CodeBuild Project ${logicalId}`);
|
|
44055
44065
|
try {
|
|
44056
|
-
const input = this.mapProperties(logicalId, properties);
|
|
44066
|
+
const input = this.mapProperties(() => generatedNameFor("AWS::CodeBuild::Project", logicalId), properties);
|
|
44057
44067
|
const result = await this.getCreateClient().send(new CreateProjectCommand(input));
|
|
44058
44068
|
const projectName = result.project.name;
|
|
44059
44069
|
const projectArn = result.project.arn;
|
|
@@ -44071,7 +44081,7 @@ var CodeBuildProvider = class {
|
|
|
44071
44081
|
this.logger.debug(`Updating CodeBuild Project ${logicalId}: ${physicalId}`);
|
|
44072
44082
|
assertRegionMatch(context?.expectedRegion ? await this.getClient().config.region() : void 0, context?.expectedRegion, resourceType, logicalId, physicalId, "pre-update");
|
|
44073
44083
|
try {
|
|
44074
|
-
const input = this.mapProperties(
|
|
44084
|
+
const input = this.mapProperties(() => physicalId, properties);
|
|
44075
44085
|
input.name = physicalId;
|
|
44076
44086
|
if (properties["BuildBatchConfig"] == null && previousProperties["BuildBatchConfig"] != null) input.buildBatchConfig = {};
|
|
44077
44087
|
await this.getClient().send(new UpdateProjectCommand(input));
|
|
@@ -44425,7 +44435,7 @@ var CodeCommitRepositoryProvider = class {
|
|
|
44425
44435
|
}
|
|
44426
44436
|
async create(logicalId, resourceType, properties) {
|
|
44427
44437
|
this.logger.debug(`Creating CodeCommit Repository ${logicalId}`);
|
|
44428
|
-
const repositoryName = properties["RepositoryName"] ||
|
|
44438
|
+
const repositoryName = properties["RepositoryName"] || generatedNameFor("AWS::CodeCommit::Repository", logicalId);
|
|
44429
44439
|
const lists = this.readDesiredLists(logicalId, resourceType, {
|
|
44430
44440
|
Triggers: properties["Triggers"],
|
|
44431
44441
|
Tags: properties["Tags"]
|
|
@@ -45367,10 +45377,7 @@ var S3DirectoryBucketProvider = class {
|
|
|
45367
45377
|
const azName = properties["LocationName"]?.replace(/--x-s3$/, "") || "us-east-1a";
|
|
45368
45378
|
const azId = await this.getAzId(azName);
|
|
45369
45379
|
let bucketName = properties["BucketName"];
|
|
45370
|
-
if (!bucketName) bucketName =
|
|
45371
|
-
maxLength: 64,
|
|
45372
|
-
lowercase: true
|
|
45373
|
-
})}--${azId}--x-s3`;
|
|
45380
|
+
if (!bucketName) bucketName = generatedNameFor("AWS::S3Express::DirectoryBucket", logicalId, { zoneId: azId });
|
|
45374
45381
|
const tags = desiredTags;
|
|
45375
45382
|
const includeTags = tags.length > 0;
|
|
45376
45383
|
try {
|
|
@@ -46304,7 +46311,7 @@ var ECRProvider = class {
|
|
|
46304
46311
|
async create(logicalId, resourceType, properties) {
|
|
46305
46312
|
this.logger.debug(`Creating ECR Repository ${logicalId}`);
|
|
46306
46313
|
const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
|
|
46307
|
-
const repositoryName = properties["RepositoryName"] ||
|
|
46314
|
+
const repositoryName = properties["RepositoryName"] || generatedNameFor("AWS::ECR::Repository", logicalId);
|
|
46308
46315
|
let repositoryCreated = false;
|
|
46309
46316
|
try {
|
|
46310
46317
|
const tags = properties["Tags"] !== void 0 && properties["Tags"] !== null ? desiredTags : void 0;
|
|
@@ -47292,4 +47299,4 @@ var ACMCertificateProvider = class {
|
|
|
47292
47299
|
|
|
47293
47300
|
//#endregion
|
|
47294
47301
|
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 };
|
|
47295
|
-
//# sourceMappingURL=provider-classes-
|
|
47302
|
+
//# sourceMappingURL=provider-classes-CXSiWJVn.js.map
|