@go-to-k/cdkd 0.295.0 → 0.295.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. package/dist/{asg-provider-DuAHOXvT.js → asg-provider-CbwOK2TQ.js} +2 -2
  2. package/dist/{asg-provider-DuAHOXvT.js.map → asg-provider-CbwOK2TQ.js.map} +1 -1
  3. package/dist/cli.js +2 -2
  4. package/dist/{deploy-engine-CuI_h_Ml.js → deploy-engine-DG-oC9YK.js} +287 -43
  5. package/dist/deploy-engine-DG-oC9YK.js.map +1 -0
  6. package/dist/{iam-role-provider-CyM-wxAp.js → iam-role-provider-DUZtt9lH.js} +2 -2
  7. package/dist/{iam-role-provider-CyM-wxAp.js.map → iam-role-provider-DUZtt9lH.js.map} +1 -1
  8. package/dist/index.d.ts +9 -3
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +2 -2
  11. package/dist/{neptune-provider-BGVccWhg.js → neptune-provider-TnGNCeLX.js} +2 -2
  12. package/dist/{neptune-provider-BGVccWhg.js.map → neptune-provider-TnGNCeLX.js.map} +1 -1
  13. package/dist/{program-Cbxe8TgI.js → program-DfJFegS1.js} +34 -13
  14. package/dist/program-DfJFegS1.js.map +1 -0
  15. package/dist/{provider-classes-DiWFkAOH.js → provider-classes-DUw5QAWI.js} +242 -37
  16. package/dist/provider-classes-DUw5QAWI.js.map +1 -0
  17. package/dist/{rds-provider-D6_Rcnub.js → rds-provider-COCDd7bS.js} +2 -2
  18. package/dist/{rds-provider-D6_Rcnub.js.map → rds-provider-COCDd7bS.js.map} +1 -1
  19. package/dist/{version-CMMITJVg.js → version-Bqzsng8Y.js} +2 -2
  20. package/dist/{version-CMMITJVg.js.map → version-Bqzsng8Y.js.map} +1 -1
  21. package/package.json +4 -4
  22. package/dist/deploy-engine-CuI_h_Ml.js.map +0 -1
  23. package/dist/program-Cbxe8TgI.js.map +0 -1
  24. package/dist/provider-classes-DiWFkAOH.js.map +0 -1
@@ -2,12 +2,12 @@ import { r as getAwsClients } from "./aws-clients-CnmtbrxD.js";
2
2
  import { A as displaySafe, F as safeMsg, M as isPasteableIdent, P as plainIdentOr, g as generateResourceNameWithFallback, h as generateResourceName, j as displayStackName, k as displayIdent, n as getLogger, v as getCurrentStackName, w as SECRET_REF_MAX_CODE_POINTS } from "./logger-B46YMG0h.js";
3
3
  import { $ as compositeIdFormatMessage, A as isTerminalDeleteFailure, B as WITHHELD_AWS_COMMAND, C as refusalTypeShown, Ct as injectiveKeyPrefix, D as ProtectionFlipRegistry, Dn as markNameCollision, Dt as withPasteableAwsProfile, H as pasteableAwsCommand, Hn as markNonRetryable, In as describeAwsFailure, J as isInterruptedWaitError, Jt as ProvisioningError, L as userPoolProtectionSite, Ln as isAwsAuthoredFailure, M as observeThenDisableProtection, Mt as AccountIdUnavailableError, N as protectionFlipKey, Nn as isRetryableTransientError, On as markReplayMayCollide, Ot as ambientClientDefaults, P as rdsFamilyProtectionSite, Pn as isTransientServerError, Pt as CdkdError, Q as canonicalizeRoute53QueryName, Rn as safeStringify, S as quotedRemedyLogicalId, St as injectiveKey, T as resolveExplicitPhysicalId, U as protectedReplacementAdvice, Un as markRedactedCause, V as isAwsCliLiteral, Vn as isThrottlingError, W as renderDisableCommand, Wn as wrapMaskedAwsError, X as ElapsedBudgetRegistry, Xt as ResourceUpdateNotSupportedError, Y as startInterruptWatch, _ as VALUE_NOT_SHOWN, _n as shellQuote, a as onlySecretDerived, at as segmentAfterAnchor, b as isQuotableImportValue, c as recordedPrincipalsRepair, ct as isSecretDerivedValue, dn as isInertUnquoted, dt as withDerivedNameMasks, et as compositeIdSeparatorRefusal, fn as pasteableCommand, g as assertRegionMatch, h as RESOURCE_NOT_FOUND, i as holdsSecretDerivedEntry, j as logGroupProtectionSite, jn as isAmbiguousOutcomeError, jt as credentialFingerprint, k as deleteWithProtectionCompensation, kt as ambientCredentialConfig, ln as commandHole, lt as maskDeep, mn as plainOrDescribed, nt as logicalIdShown, o as readPrincipalLists, ot as createMaskedLogSinks, p as withRemovalDefaults, r as SECRET_DERIVED_READ_LIVE, rt as packCompositeId, st as createMaskedRetryLogger, tt as compositeIdSkipResult, u as clearOnUpdateRemoval, un as hasClauseBreak, ut as maskerOrIdentity, v as isPlainImportJson, vn as withheldTargetClause, w as remedyLogicalId, x as normalizeAwsTagsToCfn, y as isPlainImportValue, z as UNNAMEABLE_ID_CLAUSE, zn as THROTTLING_ERROR_NAMES } from "./iam-policy-targets-CMSQGQnm.js";
4
4
  import { s as ambientRegion } from "./aws-client-defaults-D0q0z4dG.js";
5
- import { $i as isWarmThroughputDecrease, A as resolveDynamoDbDeleteBudgetClock, Ao as rewriteTemplateAssetReferences, B as getPriorAttempts, Bi as findSilentDropProperties, Bn as isTerminationProtectionPropagationError, D as beginDeleteWait, Da as hasMaskableValues, Di as refuseMalformedResourcesForDestroy, Dn as getCurrentResourceSecrets, E as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, F as waitForIndexesSettled, Fn as withIndeterminateGuard, Gs as renderAssemblyPathEscape, Hi as withoutSilentDropProperties, Hn as reDisableInstanceApiTermination, I as ECR_AUTO_DELETE_IMAGES_TAG, In as isWaitAbandonedError, It as REDACTED_DELETE_ADDRESS_SKIP_REASON, Ks as resolveAssemblyPath, L as S3_AUTO_DELETE_OBJECTS_TAG, Ln as markWaitAbandoned, Lt as isRedactedRecordedValue, M as DELETE_INDEX_WAIT_PROCEED_NOTE, Ms as canonicalizeRegion, N as INDEX_SETTLE_POLL_INTERVAL_MS, Ns as derivePartitionAndUrlSuffix, O as compensateRemovedDeletionProtection, Or as passedParameterClassesOf, P as deleteTableWithIndexBusyRetry, Pn as deleteSkipReason, Qi as coerceWarmThroughput$1, R as hasCdkAutoDeleteTag, Ra as markSameGenerationBag, Rt as redactedDeleteAddressFields, T as DynamoDBGlobalTableProvider, To as stringifyValue, Tr as parseWebACLArn, Tt as getCurrentProducerRegions, Ua as dynamicReferenceTokens, Un as reEnableInstanceApiTermination, Us as describeFileReadFailure, V as markRefusedBeforeApplying, Va as recoverMaskedOutput, Vn as observeThenDisableInstanceApiTermination, Ws as displayAssemblyPath, Zi as WARM_THROUGHPUT_MEMBERS, _a as canonicalLambdaFunctionName, _n as refuseMalformedDesiredTags, a as findNestedTemplateTreeDefect, aa as configIntegerRefusal, bn as definedAttributes, c as renderNestedTemplateTreeDefect, ca as replayWarn, ci as refuseMalformedNestedChildOutputs, cn as earliestDefined, cr as s3BucketDomainName, da as requireConfigString, dr as s3BucketWebsiteUrl, ea as toCfnInteger, fn as acquireIdempotencyToken, ft as getCurrentNestedStackContext, ga as markAuxiliaryFailure, gn as readTagList, gt as awaitInFlightSibling, ha as withRetry, hn as planTagDiff, hr as getAccountInfo, ia as configBooleanRefusal, j as resolveDynamoDbDeleteBudgetMs, jn as unchangedBehindSecretReference, k as deleteBudgetKey, kn as slowCcOperationTimeoutMs, ks as decodeListingKey, la as requireConfigArray, lr as s3BucketDualStackDomainName, lt as revertNestedChildFromJournal, mn as DBPROXY_TAG_OPTIONS, na as coerceCfnBoolean, o as isAbsoluteAssetPath, oa as configStringRefusal, or as isSettledInstanceState, ot as getNestedRevertRun, pn as DBPROXY_TAGS_WHAT, pt as withNestedStackContext, qa as carriesSecretMask, ra as coerceCfnInteger, s as listNestedTemplateRows, sa as readConfigString, sr as s3BucketArn, t as DeployEngine, ta as toFiniteNumber, ua as requireConfigObject, un as reserveStackCreateToken, ur as s3BucketRegionalDomainName, va as lambdaFunctionNameForMask, vn as tagMapAsList, vt as getStackRecords, xn as stringifyIfAssigned, ya as sameLambdaFunctionAddress, yn as tagPlanWarning, z as isTruthyCfnBoolean, za as redactSecretsForState, zn as ec2InstanceProtectionSite, zt as redactedDeleteAddressSkip } from "./deploy-engine-CuI_h_Ml.js";
6
- import { n as collectInlinePolicyNamesManagedBySiblings, t as IAMRoleProvider } from "./iam-role-provider-CyM-wxAp.js";
7
- import { a as canonicalizeIpProtocolValue, i as resolveSecretDerivedPrincipals, n as runDestroyForStack, o as resolvedResourceTimeoutMs, r as isResolvableSecretPrincipalList, t as canonicalizeIpv4Cidr } from "./program-Cbxe8TgI.js";
8
- import { RDSProvider } from "./rds-provider-D6_Rcnub.js";
9
- import { NeptuneProvider } from "./neptune-provider-BGVccWhg.js";
10
- import { ASGProvider } from "./asg-provider-DuAHOXvT.js";
5
+ import { $i as WARM_THROUGHPUT_MEMBERS, A as resolveDynamoDbDeleteBudgetClock, Aa as hasMaskableValues, An as slowCcOperationTimeoutMs, B as getPriorAttempts, Bn as ec2InstanceProtectionSite, Bt as redactedDeleteAddressSkip, D as beginDeleteWait, E as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, Er as parseWebACLArn, Et as getCurrentProducerRegions, F as waitForIndexesSettled, Fn as deleteSkipReason, Fs as canonicalizeRegion, Ha as redactSecretsForState, Hi as findSilentDropProperties, Hn as observeThenDisableInstanceApiTermination, I as ECR_AUTO_DELETE_IMAGES_TAG, In as withIndeterminateGuard, Is as derivePartitionAndUrlSuffix, Js as renderAssemblyPathEscape, Ka as dynamicReferenceTokens, Ks as describeFileReadFailure, L as S3_AUTO_DELETE_OBJECTS_TAG, Ln as isWaitAbandonedError, Lt as REDACTED_DELETE_ADDRESS_SKIP_REASON, M as DELETE_INDEX_WAIT_PROCEED_NOTE, Mn as unchangedBehindSecretReference, Ms as decodeListingKey, N as INDEX_SETTLE_POLL_INTERVAL_MS, No as rewriteTemplateAssetReferences, O as compensateRemovedDeletionProtection, On as getCurrentResourceSecrets, Oo as stringifyValue, P as deleteTableWithIndexBusyRetry, R as hasCdkAutoDeleteTag, Rn as markWaitAbandoned, Rt as isRedactedRecordedValue, Sa as sameLambdaFunctionAddress, Sn as stringifyIfAssigned, T as DynamoDBGlobalTableProvider, Un as reDisableInstanceApiTermination, V as markRefusedBeforeApplying, Va as markSameGenerationBag, Vn as isTerminationProtectionPropagationError, Wa as recoverMaskedOutput, Wi as withoutSilentDropProperties, Wn as reEnableInstanceApiTermination, Xa as carriesSecretMask, Ys as resolveAssemblyPath, _a as withRetry, _n as readTagList, a as findNestedTemplateTreeDefect, aa as coerceCfnInteger, ba as canonicalLambdaFunctionName, bn as tagPlanWarning, c as renderNestedTemplateTreeDefect, ca as configStringRefusal, cr as s3BucketArn, da as requireConfigArray, dn as reserveStackCreateToken, dr as s3BucketRegionalDomainName, ea as coerceWarmThroughput$1, fa as requireConfigObject, fr as s3BucketWebsiteUrl, ft as getCurrentNestedStackContext, gn as planTagDiff, gr as getAccountInfo, gt as awaitInFlightSibling, hn as DBPROXY_TAG_OPTIONS, ia as coerceCfnBoolean, j as resolveDynamoDbDeleteBudgetMs, k as deleteBudgetKey, ki as refuseMalformedResourcesForDestroy, kr as passedParameterClassesOf, la as readConfigString, li as refuseMalformedNestedChildOutputs, ln as earliestDefined, lr as s3BucketDomainName, lt as revertNestedChildFromJournal, mn as DBPROXY_TAGS_WHAT, na as toCfnInteger, o as isAbsoluteAssetPath, oa as configBooleanRefusal, ot as getNestedRevertRun, pa as requireConfigString, pn as acquireIdempotencyToken, pt as withNestedStackContext, qs as displayAssemblyPath, ra as toFiniteNumber, s as listNestedTemplateRows, sa as configIntegerRefusal, sr as isSettledInstanceState, t as DeployEngine, ta as isWarmThroughputDecrease, ua as replayWarn, ur as s3BucketDualStackDomainName, va as markAuxiliaryFailure, vn as refuseMalformedDesiredTags, vt as getStackRecords, xa as lambdaFunctionNameForMask, xn as definedAttributes, ya as markCreatedBeforeFailure, yn as tagMapAsList, z as isTruthyCfnBoolean, zt as redactedDeleteAddressFields } from "./deploy-engine-DG-oC9YK.js";
6
+ import { n as collectInlinePolicyNamesManagedBySiblings, t as IAMRoleProvider } from "./iam-role-provider-DUZtt9lH.js";
7
+ import { a as canonicalizeIpProtocolValue, i as resolveSecretDerivedPrincipals, n as runDestroyForStack, o as resolvedResourceTimeoutMs, r as isResolvableSecretPrincipalList, t as canonicalizeIpv4Cidr } from "./program-DfJFegS1.js";
8
+ import { RDSProvider } from "./rds-provider-COCDd7bS.js";
9
+ import { NeptuneProvider } from "./neptune-provider-TnGNCeLX.js";
10
+ import { ASGProvider } from "./asg-provider-CbwOK2TQ.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, 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";
@@ -7771,6 +7771,7 @@ async function reportPossibleOrphans(logicalId, window, log, lookup) {
7771
7771
  const until = new Date(window.ceilingMs).toISOString();
7772
7772
  const remove = lookup.remove;
7773
7773
  const service = lookup.service ?? "API Gateway";
7774
+ const afterward = lookup.afterward ?? "Creating a new one now.";
7774
7775
  const when = remove !== void 0 ? `between ${since} and ${until}` : `at ${since}`;
7775
7776
  let found;
7776
7777
  try {
@@ -7793,10 +7794,10 @@ async function reportPossibleOrphans(logicalId, window, log, lookup) {
7793
7794
  const inspect = [...new Set(shown.map((id) => lookup.inspect(id)))].join(" ; ");
7794
7795
  if (remove !== void 0) {
7795
7796
  const deletion = [...new Set(shown.map((id) => remove(id)))].join(" ; ");
7796
- log.warn(`An earlier ${lookup.action} attempt for ${logicalId} failed without a definite answer, and ${service} may have created ${lookup.subject} then that no cdkd state records. ${found.ids.length} ${lookup.noun} were created ${when} that this deploy did not record: ${shown.join(", ")}${more}. cdkd does not adopt or delete them: nothing listed proves which deploy created one. Creating a new one now. First inspect each candidate: ${inspect}. Only after confirming one is this deploy's orphan and not another deploy's, ${lookup.removeVerb ?? "delete it"}: ${deletion}.${incomplete}`);
7797
+ log.warn(`An earlier ${lookup.action} attempt for ${logicalId} failed without a definite answer, and ${service} may have created ${lookup.subject} then that no cdkd state records. ${found.ids.length} ${lookup.noun} were created ${when} that this deploy did not record: ${shown.join(", ")}${more}. cdkd does not adopt or delete them: nothing listed proves which deploy created one. ${afterward} First inspect each candidate: ${inspect}. Only after confirming one is this deploy's orphan and not another deploy's, ${lookup.removeVerb ?? "delete it"}: ${deletion}.${incomplete}`);
7797
7798
  return;
7798
7799
  }
7799
- log.warn(`An earlier ${lookup.action} attempt for ${logicalId} failed without a definite answer (${when}), and ${service} may have created ${lookup.subject} then that no cdkd state records. ${found.ids.length} ${lookup.noun} match that this deploy did not record: ${shown.join(", ")}${more}. ${service} reports no creation time for them, so any of them may instead be this stack's own recorded one, another stack's, or older than this deploy; cdkd does not adopt or delete them. Creating a new one now. Inspect each before deleting anything: ${inspect}.${incomplete}`);
7800
+ log.warn(`An earlier ${lookup.action} attempt for ${logicalId} failed without a definite answer (${when}), and ${service} may have created ${lookup.subject} then that no cdkd state records. ${found.ids.length} ${lookup.noun} match that this deploy did not record: ${shown.join(", ")}${more}. ${service} reports no creation time for them, so any of them may instead be this stack's own recorded one, another stack's, or older than this deploy; cdkd does not adopt or delete them. ${afterward} Inspect each before deleting anything: ${inspect}.${incomplete}`);
7800
7801
  }
7801
7802
 
7802
7803
  //#endregion
@@ -13137,6 +13138,13 @@ function isEc2NotFoundCode(error) {
13137
13138
  const name = error?.name;
13138
13139
  return typeof name === "string" && name.endsWith(".NotFound");
13139
13140
  }
13141
+ const createVpcLatch = new AmbiguousCreateLatch("ec2:CreateVpc");
13142
+ const createSubnetLatch = new AmbiguousCreateLatch("ec2:CreateSubnet");
13143
+ const createInternetGatewayLatch = new AmbiguousCreateLatch("ec2:CreateInternetGateway");
13144
+ const allocateAddressLatch = new AmbiguousCreateLatch("ec2:AllocateAddress");
13145
+ const ec2IdsCreatedByThisProcess = new RecentIdSet();
13146
+ const isUntagged = (tags) => tags === void 0 || tags.length === 0;
13147
+ const ORPHAN_LIST_PAGE_SIZE$2 = 1e3;
13140
13148
  var EC2Provider = class {
13141
13149
  ec2Client;
13142
13150
  ec2AuthorizeClient;
@@ -13263,11 +13271,128 @@ var EC2Provider = class {
13263
13271
  this.ec2Client = awsClients.ec2;
13264
13272
  this.ec2AuthorizeClient = awsClients.ec2SingleSend ?? awsClients.ec2;
13265
13273
  }
13274
+ createClient;
13275
+ getCreateClient() {
13276
+ const shared = this.ec2Client;
13277
+ if (!(shared instanceof EC2Client)) return Promise.resolve(shared);
13278
+ this.createClient ??= shared.config.region().then((region) => withoutServerErrorRetries(new EC2Client({
13279
+ ...ambientClientDefaults(),
13280
+ region
13281
+ })), (error) => {
13282
+ this.createClient = void 0;
13283
+ throw error;
13284
+ });
13285
+ return this.createClient;
13286
+ }
13287
+ async reportPossibleEc2Orphans(logicalId, window, log, lookup) {
13288
+ const aws = pasteableAwsCommand(log.mask);
13289
+ const regionArg = await orphanCommandRegionArg(this.ec2Client, aws);
13290
+ await reportPossibleOrphans(logicalId, window, log, {
13291
+ action: lookup.action,
13292
+ service: "EC2",
13293
+ listAction: lookup.listAction,
13294
+ subject: lookup.subject,
13295
+ noun: lookup.noun,
13296
+ ...lookup.afterward !== void 0 && { afterward: lookup.afterward },
13297
+ list: lookup.list,
13298
+ inspect: (id) => lookup.inspect(aws, id, regionArg)
13299
+ });
13300
+ }
13301
+ async reportPossibleOrphanVpcs(logicalId, cidrBlock, window, context) {
13302
+ const log = createMaskedLogSinks(this.logger, context?.maskSecrets);
13303
+ const wanted = canonicalizeIpv4Cidr(cidrBlock) ?? cidrBlock;
13304
+ await this.reportPossibleEc2Orphans(logicalId, window, log, {
13305
+ action: "CreateVpc",
13306
+ listAction: "DescribeVpcs",
13307
+ subject: `a VPC with CIDR ${log.value(cidrBlock)}`,
13308
+ noun: "untagged VPC(s)",
13309
+ list: () => collectOrphanIds(async (token) => {
13310
+ const page = await this.ec2Client.send(new DescribeVpcsCommand({
13311
+ MaxResults: ORPHAN_LIST_PAGE_SIZE$2,
13312
+ NextToken: token
13313
+ }));
13314
+ return {
13315
+ items: page.Vpcs ?? [],
13316
+ next: page.NextToken
13317
+ };
13318
+ }, (vpc) => vpc.VpcId !== void 0 && vpc.IsDefault !== true && isUntagged(vpc.Tags) && vpc.CidrBlock !== void 0 && (canonicalizeIpv4Cidr(vpc.CidrBlock) ?? vpc.CidrBlock) === wanted && !ec2IdsCreatedByThisProcess.has(vpc.VpcId) ? vpc.VpcId : void 0),
13319
+ inspect: (aws, id, regionArg) => aws`aws ec2 describe-vpcs --vpc-ids ${id}${regionArg}`.render()
13320
+ });
13321
+ }
13322
+ async reportPossibleOrphanSubnets(logicalId, vpcId, cidrBlock, window, context) {
13323
+ const log = createMaskedLogSinks(this.logger, context?.maskSecrets);
13324
+ const wanted = canonicalizeIpv4Cidr(cidrBlock) ?? cidrBlock;
13325
+ await this.reportPossibleEc2Orphans(logicalId, window, log, {
13326
+ action: "CreateSubnet",
13327
+ listAction: "DescribeSubnets",
13328
+ subject: `a subnet with CIDR ${log.value(cidrBlock)} in VPC ${log.value(vpcId)}`,
13329
+ noun: "untagged subnet(s)",
13330
+ afterward: "Creating it again, which fails with InvalidSubnet.Conflict while that subnet exists.",
13331
+ list: () => collectOrphanIds(async (token) => {
13332
+ const page = await this.ec2Client.send(new DescribeSubnetsCommand({
13333
+ Filters: [{
13334
+ Name: "vpc-id",
13335
+ Values: [vpcId]
13336
+ }],
13337
+ MaxResults: ORPHAN_LIST_PAGE_SIZE$2,
13338
+ NextToken: token
13339
+ }));
13340
+ return {
13341
+ items: page.Subnets ?? [],
13342
+ next: page.NextToken
13343
+ };
13344
+ }, (subnet) => subnet.SubnetId !== void 0 && isUntagged(subnet.Tags) && subnet.CidrBlock !== void 0 && (canonicalizeIpv4Cidr(subnet.CidrBlock) ?? subnet.CidrBlock) === wanted && !ec2IdsCreatedByThisProcess.has(subnet.SubnetId) ? subnet.SubnetId : void 0),
13345
+ inspect: (aws, id, regionArg) => aws`aws ec2 describe-subnets --subnet-ids ${id}${regionArg}`.render()
13346
+ });
13347
+ }
13348
+ async reportPossibleOrphanInternetGateways(logicalId, window, context) {
13349
+ const log = createMaskedLogSinks(this.logger, context?.maskSecrets);
13350
+ await this.reportPossibleEc2Orphans(logicalId, window, log, {
13351
+ action: "CreateInternetGateway",
13352
+ listAction: "DescribeInternetGateways",
13353
+ subject: "an internet gateway",
13354
+ noun: "detached, untagged internet gateway(s)",
13355
+ list: () => collectOrphanIds(async (token) => {
13356
+ const page = await this.ec2Client.send(new DescribeInternetGatewaysCommand({
13357
+ MaxResults: ORPHAN_LIST_PAGE_SIZE$2,
13358
+ NextToken: token
13359
+ }));
13360
+ return {
13361
+ items: page.InternetGateways ?? [],
13362
+ next: page.NextToken
13363
+ };
13364
+ }, (igw) => igw.InternetGatewayId !== void 0 && (igw.Attachments ?? []).length === 0 && isUntagged(igw.Tags) && !ec2IdsCreatedByThisProcess.has(igw.InternetGatewayId) ? igw.InternetGatewayId : void 0),
13365
+ inspect: (aws, id, regionArg) => aws`aws ec2 describe-internet-gateways --internet-gateway-ids ${id}${regionArg}`.render()
13366
+ });
13367
+ }
13368
+ async reportPossibleOrphanAddresses(logicalId, input, window, context) {
13369
+ const log = createMaskedLogSinks(this.logger, context?.maskSecrets);
13370
+ await this.reportPossibleEc2Orphans(logicalId, window, log, {
13371
+ action: "AllocateAddress",
13372
+ listAction: "DescribeAddresses",
13373
+ subject: `an Elastic IP address (domain ${log.value(input.Domain ?? "vpc")})`,
13374
+ noun: "unassociated, untagged Elastic IP address(es)",
13375
+ list: async () => {
13376
+ const response = await this.ec2Client.send(new DescribeAddressesCommand({}));
13377
+ const ids = [];
13378
+ for (const address of response.Addresses ?? []) {
13379
+ const id = address.AllocationId;
13380
+ if (id === void 0 || (address.Domain ?? "vpc") !== (input.Domain ?? "vpc") || address.AssociationId !== void 0 || !isUntagged(address.Tags) || input.NetworkBorderGroup !== void 0 && address.NetworkBorderGroup !== input.NetworkBorderGroup || input.PublicIpv4Pool !== void 0 && address.PublicIpv4Pool !== input.PublicIpv4Pool || ec2IdsCreatedByThisProcess.has(id)) continue;
13381
+ ids.push(id);
13382
+ }
13383
+ return {
13384
+ ids,
13385
+ truncated: false
13386
+ };
13387
+ },
13388
+ inspect: (aws, id, regionArg) => aws`aws ec2 describe-addresses --allocation-ids ${id}${regionArg}`.render()
13389
+ });
13390
+ }
13266
13391
  async create(logicalId, resourceType, properties, context) {
13267
13392
  switch (resourceType) {
13268
- case "AWS::EC2::VPC": return this.createVpc(logicalId, resourceType, properties);
13269
- case "AWS::EC2::Subnet": return this.createSubnet(logicalId, resourceType, properties);
13270
- case "AWS::EC2::InternetGateway": return this.createInternetGateway(logicalId, resourceType, properties);
13393
+ case "AWS::EC2::VPC": return this.createVpc(logicalId, resourceType, properties, context);
13394
+ case "AWS::EC2::Subnet": return this.createSubnet(logicalId, resourceType, properties, context);
13395
+ case "AWS::EC2::InternetGateway": return this.createInternetGateway(logicalId, resourceType, properties, context);
13271
13396
  case "AWS::EC2::EIP": return this.createEip(logicalId, resourceType, properties, context);
13272
13397
  case "AWS::EC2::VPCGatewayAttachment": return this.createVpcGatewayAttachment(logicalId, resourceType, properties, context);
13273
13398
  case "AWS::EC2::NatGateway": return this.createNatGateway(logicalId, resourceType, properties);
@@ -13344,16 +13469,28 @@ var EC2Provider = class {
13344
13469
  default: return;
13345
13470
  }
13346
13471
  }
13347
- async createVpc(logicalId, resourceType, properties) {
13472
+ async createVpc(logicalId, resourceType, properties, context) {
13348
13473
  this.logger.debug(`Creating VPC ${logicalId}`);
13349
13474
  const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
13350
13475
  const cidrBlock = properties["CidrBlock"];
13351
13476
  if (!cidrBlock) throw new ProvisioningError(`CidrBlock is required for VPC ${logicalId}`, resourceType, logicalId);
13352
13477
  try {
13353
- const vpcId = (await this.ec2Client.send(new CreateVpcCommand({
13354
- CidrBlock: cidrBlock,
13355
- InstanceTenancy: properties["InstanceTenancy"] ?? void 0
13356
- }))).Vpc.VpcId;
13478
+ const createClient = await this.getCreateClient();
13479
+ const orphanWindow = createVpcLatch.take(logicalId);
13480
+ if (orphanWindow !== void 0) await this.reportPossibleOrphanVpcs(logicalId, cidrBlock, orphanWindow, context);
13481
+ const attemptStartMs = Date.now();
13482
+ let response;
13483
+ try {
13484
+ response = await createClient.send(new CreateVpcCommand({
13485
+ CidrBlock: cidrBlock,
13486
+ InstanceTenancy: properties["InstanceTenancy"] ?? void 0
13487
+ }));
13488
+ } catch (error) {
13489
+ createVpcLatch.noteFailure(logicalId, error, attemptStartMs, orphanWindow);
13490
+ throw error;
13491
+ }
13492
+ const vpcId = response.Vpc.VpcId;
13493
+ ec2IdsCreatedByThisProcess.add(vpcId);
13357
13494
  let defaultSgId;
13358
13495
  try {
13359
13496
  if (properties["EnableDnsHostnames"] === true || properties["EnableDnsHostnames"] === "true") await this.ec2Client.send(new ModifyVpcAttributeCommand({
@@ -13491,19 +13628,30 @@ var EC2Provider = class {
13491
13628
  return;
13492
13629
  }
13493
13630
  }
13494
- async createSubnet(logicalId, resourceType, properties) {
13631
+ async createSubnet(logicalId, resourceType, properties, context) {
13495
13632
  this.logger.debug(`Creating Subnet ${logicalId}`);
13496
13633
  const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
13497
13634
  const vpcId = properties["VpcId"];
13498
13635
  const cidrBlock = properties["CidrBlock"];
13499
13636
  if (!vpcId || !cidrBlock) throw new ProvisioningError(`VpcId and CidrBlock are required for Subnet ${logicalId}`, resourceType, logicalId);
13500
13637
  try {
13501
- const response = await this.ec2Client.send(new CreateSubnetCommand({
13502
- VpcId: vpcId,
13503
- CidrBlock: cidrBlock,
13504
- AvailabilityZone: properties["AvailabilityZone"] ?? void 0
13505
- }));
13638
+ const createClient = await this.getCreateClient();
13639
+ const orphanWindow = createSubnetLatch.take(logicalId);
13640
+ if (orphanWindow !== void 0) await this.reportPossibleOrphanSubnets(logicalId, vpcId, cidrBlock, orphanWindow, context);
13641
+ const attemptStartMs = Date.now();
13642
+ let response;
13643
+ try {
13644
+ response = await createClient.send(new CreateSubnetCommand({
13645
+ VpcId: vpcId,
13646
+ CidrBlock: cidrBlock,
13647
+ AvailabilityZone: properties["AvailabilityZone"] ?? void 0
13648
+ }));
13649
+ } catch (error) {
13650
+ createSubnetLatch.noteFailure(logicalId, error, attemptStartMs, orphanWindow);
13651
+ throw error;
13652
+ }
13506
13653
  const subnetId = response.Subnet.SubnetId;
13654
+ ec2IdsCreatedByThisProcess.add(subnetId);
13507
13655
  const availabilityZone = response.Subnet.AvailabilityZone;
13508
13656
  try {
13509
13657
  await this.applyTags(subnetId, desiredTags, logicalId);
@@ -13647,11 +13795,23 @@ var EC2Provider = class {
13647
13795
  return;
13648
13796
  }
13649
13797
  }
13650
- async createInternetGateway(logicalId, resourceType, properties) {
13798
+ async createInternetGateway(logicalId, resourceType, properties, context) {
13651
13799
  this.logger.debug(`Creating InternetGateway ${logicalId}`);
13652
13800
  const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
13653
13801
  try {
13654
- const igwId = (await this.ec2Client.send(new CreateInternetGatewayCommand({}))).InternetGateway.InternetGatewayId;
13802
+ const createClient = await this.getCreateClient();
13803
+ const orphanWindow = createInternetGatewayLatch.take(logicalId);
13804
+ if (orphanWindow !== void 0) await this.reportPossibleOrphanInternetGateways(logicalId, orphanWindow, context);
13805
+ const attemptStartMs = Date.now();
13806
+ let response;
13807
+ try {
13808
+ response = await createClient.send(new CreateInternetGatewayCommand({}));
13809
+ } catch (error) {
13810
+ createInternetGatewayLatch.noteFailure(logicalId, error, attemptStartMs, orphanWindow);
13811
+ throw error;
13812
+ }
13813
+ const igwId = response.InternetGateway.InternetGatewayId;
13814
+ ec2IdsCreatedByThisProcess.add(igwId);
13655
13815
  await this.applyTags(igwId, desiredTags, logicalId);
13656
13816
  this.logger.debug(`Successfully created InternetGateway ${logicalId}: ${igwId}`);
13657
13817
  return {
@@ -13709,14 +13869,26 @@ var EC2Provider = class {
13709
13869
  let publicIp;
13710
13870
  let created = false;
13711
13871
  try {
13712
- const response = await this.ec2Client.send(new AllocateAddressCommand({
13872
+ const input = {
13713
13873
  Domain: requireConfigString(properties["Domain"], "vpc", "AWS::EC2::EIP Domain", replayWarn(this.logger, context)),
13714
13874
  NetworkBorderGroup: properties["NetworkBorderGroup"],
13715
13875
  PublicIpv4Pool: properties["PublicIpv4Pool"]
13716
- }));
13876
+ };
13877
+ const createClient = await this.getCreateClient();
13878
+ const orphanWindow = allocateAddressLatch.take(logicalId);
13879
+ if (orphanWindow !== void 0) await this.reportPossibleOrphanAddresses(logicalId, input, orphanWindow, context);
13880
+ const attemptStartMs = Date.now();
13881
+ let response;
13882
+ try {
13883
+ response = await createClient.send(new AllocateAddressCommand(input));
13884
+ } catch (error) {
13885
+ allocateAddressLatch.noteFailure(logicalId, error, attemptStartMs, orphanWindow);
13886
+ throw error;
13887
+ }
13717
13888
  created = true;
13718
13889
  allocationId = response.AllocationId;
13719
13890
  publicIp = response.PublicIp;
13891
+ ec2IdsCreatedByThisProcess.add(allocationId);
13720
13892
  await this.applyTags(allocationId, desiredTags, logicalId);
13721
13893
  const instanceId = properties["InstanceId"];
13722
13894
  if (instanceId) {
@@ -14135,7 +14307,7 @@ var EC2Provider = class {
14135
14307
  const groupDescription = properties["GroupDescription"];
14136
14308
  if (!groupDescription) throw new ProvisioningError(`GroupDescription is required for SecurityGroup ${logicalId}`, resourceType, logicalId);
14137
14309
  try {
14138
- const groupId = (await this.ec2Client.send(new CreateSecurityGroupCommand({
14310
+ const groupId = (await (await this.getCreateClient()).send(new CreateSecurityGroupCommand({
14139
14311
  GroupName: properties["GroupName"] ?? logicalId,
14140
14312
  Description: groupDescription,
14141
14313
  VpcId: properties["VpcId"] ?? void 0
@@ -33498,6 +33670,30 @@ function readMaxRecordSize(value, mask) {
33498
33670
  reason: `AWS::Kinesis::Stream MaxRecordSizeInKiB must be a number, got ${JSON.stringify(maskDeep(value, mask))}`
33499
33671
  };
33500
33672
  }
33673
+ function readRetentionHours(value, mask) {
33674
+ if (value == null) return { kind: "absent" };
33675
+ if (typeof value === "number" && Number.isFinite(value)) return {
33676
+ kind: "usable",
33677
+ hours: value
33678
+ };
33679
+ if (typeof value === "string" && value.trim() !== "" && Number.isFinite(Number(value))) return {
33680
+ kind: "usable",
33681
+ hours: Number(value)
33682
+ };
33683
+ return {
33684
+ kind: "unusable",
33685
+ reason: `AWS::Kinesis::Stream RetentionPeriodHours must be a number, got ${JSON.stringify(maskDeep(value, mask))}`
33686
+ };
33687
+ }
33688
+ function readEncryptionKeyId(value, mask) {
33689
+ if (!isKmsEncryption(value)) return { kind: "absent" };
33690
+ const keyId = value?.["KeyId"];
33691
+ if (typeof keyId === "string" && keyId.trim() !== "") return { kind: "usable" };
33692
+ return {
33693
+ kind: "unusable",
33694
+ reason: `AWS::Kinesis::Stream StreamEncryption selects KMS but KeyId is not a non-empty string, got ${JSON.stringify(maskDeep(keyId, mask)) ?? "undefined"}`
33695
+ };
33696
+ }
33501
33697
  function comparableRecordSize(value, mask) {
33502
33698
  const read = readMaxRecordSize(value, mask);
33503
33699
  return read.kind === "usable" ? read.size : void 0;
@@ -33541,6 +33737,13 @@ var KinesisStreamProvider = class {
33541
33737
  if (context?.replayingState === true) warn(`${maxRecordRead.reason}. Replaying a state record, so ${streamName} is created with AWS's default maximum record size rather than refusing the restore`);
33542
33738
  else throw new ProvisioningError(maxRecordRead.reason, resourceType, logicalId, streamName);
33543
33739
  }
33740
+ const retentionRead = readRetentionHours(properties["RetentionPeriodHours"], mask);
33741
+ if (retentionRead.kind === "unusable") {
33742
+ if (context?.replayingState !== true) throw new ProvisioningError(retentionRead.reason, resourceType, logicalId, streamName);
33743
+ warn(`${retentionRead.reason}. Replaying a state record, so the retention period is left at AWS's default on ${streamName} rather than refusing the restore`);
33744
+ }
33745
+ const encryptionRead = readEncryptionKeyId(properties["StreamEncryption"], mask);
33746
+ if (encryptionRead.kind === "unusable") throw new ProvisioningError(encryptionRead.reason, resourceType, logicalId, streamName);
33544
33747
  let streamCreated = false;
33545
33748
  try {
33546
33749
  const streamModeDetails = properties["StreamModeDetails"];
@@ -33562,7 +33765,7 @@ var KinesisStreamProvider = class {
33562
33765
  StreamName: streamName,
33563
33766
  Tags: tags
33564
33767
  }));
33565
- const retentionPeriodHours = properties["RetentionPeriodHours"];
33768
+ const retentionPeriodHours = retentionRead.kind === "usable" ? retentionRead.hours : void 0;
33566
33769
  if (retentionPeriodHours !== void 0 && retentionPeriodHours !== 24) {
33567
33770
  this.logger.debug(`Setting retention period to ${retentionPeriodHours} hours for ${streamName}`);
33568
33771
  if (retentionPeriodHours > 24) await this.getClient().send(new IncreaseStreamRetentionPeriodCommand({
@@ -33604,9 +33807,9 @@ var KinesisStreamProvider = class {
33604
33807
  };
33605
33808
  } catch (error) {
33606
33809
  if (streamCreated) markAuxiliaryFailure(error, logicalId);
33607
- if (error instanceof ProvisioningError) throw error;
33608
- const cause = error instanceof Error ? error : void 0;
33609
- throw new ProvisioningError(`Failed to create Kinesis stream ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, streamName, cause);
33810
+ const thrown = error instanceof ProvisioningError ? error : new ProvisioningError(`Failed to create Kinesis stream ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, streamName, error instanceof Error ? error : void 0);
33811
+ if (streamCreated) markCreatedBeforeFailure(thrown, logicalId, resourceType, streamName);
33812
+ throw thrown;
33610
33813
  }
33611
33814
  }
33612
33815
  async update(logicalId, physicalId, resourceType, properties, previousProperties, context) {
@@ -33614,6 +33817,10 @@ var KinesisStreamProvider = class {
33614
33817
  const warn = (message) => this.logger.warn(mask(message));
33615
33818
  this.logger.debug(`Updating Kinesis stream ${logicalId}: ${physicalId}`);
33616
33819
  refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId, physicalId);
33820
+ const desiredRetention = readRetentionHours(properties["RetentionPeriodHours"], mask);
33821
+ if (desiredRetention.kind === "unusable" && context?.replayingState !== true) throw new ProvisioningError(desiredRetention.reason, resourceType, logicalId, physicalId);
33822
+ if (desiredRetention.kind === "unusable") warn(`${desiredRetention.reason}. Replaying a state record, so the retention period of ${physicalId} is left as it is rather than refusing the restore`);
33823
+ const previousRetention = readRetentionHours(previousProperties["RetentionPeriodHours"], mask);
33617
33824
  try {
33618
33825
  const streamModeDetails = properties["StreamModeDetails"];
33619
33826
  const streamMode = readConfigString(streamModeDetails, "StreamMode", "PROVISIONED", "AWS::Kinesis::Stream StreamModeDetails");
@@ -33641,11 +33848,9 @@ var KinesisStreamProvider = class {
33641
33848
  await this.waitForStreamActive(physicalId);
33642
33849
  }
33643
33850
  }
33644
- const newRetention = properties["RetentionPeriodHours"];
33645
- const oldRetention = previousProperties["RetentionPeriodHours"];
33646
- const effectiveNewRetention = newRetention ?? 24;
33647
- const effectiveOldRetention = oldRetention ?? 24;
33648
- if (effectiveNewRetention !== effectiveOldRetention) {
33851
+ const effectiveNewRetention = desiredRetention.kind === "usable" ? desiredRetention.hours ?? 24 : 24;
33852
+ const effectiveOldRetention = previousRetention.kind === "usable" ? previousRetention.hours ?? 24 : 24;
33853
+ if (desiredRetention.kind !== "unusable" && effectiveNewRetention !== effectiveOldRetention) {
33649
33854
  this.logger.debug(`Updating retention period for ${physicalId}: from ${effectiveOldRetention} to ${effectiveNewRetention}`);
33650
33855
  if (effectiveNewRetention > effectiveOldRetention) await this.getClient().send(new IncreaseStreamRetentionPeriodCommand({
33651
33856
  StreamName: physicalId,
@@ -42385,4 +42590,4 @@ var ACMCertificateProvider = class {
42385
42590
 
42386
42591
  //#endregion
42387
42592
  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, LambdaPermissionProvider, LambdaUrlProvider, 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 };
42388
- //# sourceMappingURL=provider-classes-DiWFkAOH.js.map
42593
+ //# sourceMappingURL=provider-classes-DUw5QAWI.js.map