@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.
- package/dist/{asg-provider-DuAHOXvT.js → asg-provider-CbwOK2TQ.js} +2 -2
- package/dist/{asg-provider-DuAHOXvT.js.map → asg-provider-CbwOK2TQ.js.map} +1 -1
- package/dist/cli.js +2 -2
- package/dist/{deploy-engine-CuI_h_Ml.js → deploy-engine-DG-oC9YK.js} +287 -43
- package/dist/deploy-engine-DG-oC9YK.js.map +1 -0
- package/dist/{iam-role-provider-CyM-wxAp.js → iam-role-provider-DUZtt9lH.js} +2 -2
- package/dist/{iam-role-provider-CyM-wxAp.js.map → iam-role-provider-DUZtt9lH.js.map} +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/{neptune-provider-BGVccWhg.js → neptune-provider-TnGNCeLX.js} +2 -2
- package/dist/{neptune-provider-BGVccWhg.js.map → neptune-provider-TnGNCeLX.js.map} +1 -1
- package/dist/{program-Cbxe8TgI.js → program-DfJFegS1.js} +34 -13
- package/dist/program-DfJFegS1.js.map +1 -0
- package/dist/{provider-classes-DiWFkAOH.js → provider-classes-DUw5QAWI.js} +242 -37
- package/dist/provider-classes-DUw5QAWI.js.map +1 -0
- package/dist/{rds-provider-D6_Rcnub.js → rds-provider-COCDd7bS.js} +2 -2
- package/dist/{rds-provider-D6_Rcnub.js.map → rds-provider-COCDd7bS.js.map} +1 -1
- package/dist/{version-CMMITJVg.js → version-Bqzsng8Y.js} +2 -2
- package/dist/{version-CMMITJVg.js.map → version-Bqzsng8Y.js.map} +1 -1
- package/package.json +4 -4
- package/dist/deploy-engine-CuI_h_Ml.js.map +0 -1
- package/dist/program-Cbxe8TgI.js.map +0 -1
- 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
|
|
6
|
-
import { n as collectInlinePolicyNamesManagedBySiblings, t as IAMRoleProvider } from "./iam-role-provider-
|
|
7
|
-
import { a as canonicalizeIpProtocolValue, i as resolveSecretDerivedPrincipals, n as runDestroyForStack, o as resolvedResourceTimeoutMs, r as isResolvableSecretPrincipalList, 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 { $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.
|
|
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.
|
|
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
|
|
13354
|
-
|
|
13355
|
-
|
|
13356
|
-
|
|
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
|
|
13502
|
-
|
|
13503
|
-
|
|
13504
|
-
|
|
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
|
|
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
|
|
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.
|
|
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 =
|
|
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
|
-
|
|
33608
|
-
|
|
33609
|
-
throw
|
|
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
|
|
33645
|
-
const
|
|
33646
|
-
|
|
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-
|
|
42593
|
+
//# sourceMappingURL=provider-classes-DUw5QAWI.js.map
|