@go-to-k/cdkd 0.302.2 → 0.302.3
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-B5RKfCs2.js → asg-provider-DCrwgSCZ.js} +2 -2
- package/dist/{asg-provider-B5RKfCs2.js.map → asg-provider-DCrwgSCZ.js.map} +1 -1
- package/dist/cli.js +2 -2
- package/dist/{deploy-engine-B_xWnZ4Q.js → deploy-engine-D9SDE-Pj.js} +22 -5
- package/dist/deploy-engine-D9SDE-Pj.js.map +1 -0
- package/dist/{iam-role-provider-TdX7t0Ac.js → iam-role-provider-Q1sv3tF1.js} +2 -2
- package/dist/{iam-role-provider-TdX7t0Ac.js.map → iam-role-provider-Q1sv3tF1.js.map} +1 -1
- package/dist/index.js +2 -2
- package/dist/{neptune-provider-CUoBJ6Ys.js → neptune-provider-DjVgEWGf.js} +2 -2
- package/dist/{neptune-provider-CUoBJ6Ys.js.map → neptune-provider-DjVgEWGf.js.map} +1 -1
- package/dist/{program-DDJHp1K3.js → program-DSbJoNKe.js} +555 -305
- package/dist/program-DSbJoNKe.js.map +1 -0
- package/dist/{provider-classes-CUKmyCQ8.js → provider-classes-CDtquwkU.js} +321 -34
- package/dist/provider-classes-CDtquwkU.js.map +1 -0
- package/dist/{rds-provider-Bxh9YW5y.js → rds-provider-ByCpdpUq.js} +2 -2
- package/dist/{rds-provider-Bxh9YW5y.js.map → rds-provider-ByCpdpUq.js.map} +1 -1
- package/dist/{version-CZS6bEuG.js → version-DDpKuzTw.js} +2 -2
- package/dist/{version-CZS6bEuG.js.map → version-DDpKuzTw.js.map} +1 -1
- package/package.json +2 -2
- package/dist/deploy-engine-B_xWnZ4Q.js.map +0 -1
- package/dist/program-DDJHp1K3.js.map +0 -1
- package/dist/provider-classes-CUKmyCQ8.js.map +0 -1
|
@@ -2,13 +2,13 @@ import { r as getAwsClients } from "./aws-clients-B_CEQGE1.js";
|
|
|
2
2
|
import { B as SECRET_REF_MAX_CODE_POINTS, C as generateResourceName, D as getCurrentStackInstanceId, J as displayStackName, K as displayIdent, M as recordedGeneratedNameKept, Q as safeMsg, T as generatedNameFor, Y as isPasteableIdent, Z as plainIdentOr, a as safeStringify, i as isAwsAuthoredFailure, k as isBeforeStateRead, n as describeAwsFailure, q as displaySafe, r as describeAwsStatusReason, s as getLogger, w as generateResourceNameWithFallback } from "./aws-failure-text-e_ddrDDo.js";
|
|
3
3
|
import { $ as protectedReplacementAdvice, $t as ambientCredentialConfig, A as isQuotableImportValue, B as isTerminalDeleteFailure, Bn as plainOrDescribed, C as setBounded, D as VALUE_NOT_SHOWN, E as assertRegionMatch, F as resolveExplicitPhysicalId, Fn as commandHole, H as observeThenDisableProtection, In as hasClauseBreak, Kt as injectiveKey, L as ProtectionFlipRegistry, Ln as isInertUnquoted, M as quotedRemedyLogicalId, Mt as markCreatedBeforeFailure, N as refusalTypeShown, Nt as markSupersedesEarlierCreate, O as isPlainImportJson, P as remedyLogicalId, Q as pasteableAwsCommand, Qt as ambientClientDefaults, Rn as pasteableCommand, S as replayedSendWindow, St as withDerivedNameMasks, T as RESOURCE_NOT_FOUND, Tt as clearCreatedBeforeFailure, U as protectionFlipKey, Un as shellQuote, V as logGroupProtectionSite, W as rdsFamilyProtectionSite, Wn as withheldTargetClause, X as WITHHELD_AWS_COMMAND, Y as UNNAMEABLE_ID_CLAUSE, Yn as isNameCollisionError, Z as isAwsCliLiteral, Zt as withPasteableAwsProfile, _ as RecentIdSet, _r as isThrottlingError, _t as createMaskedLogSinks, a as onlySecretDerived, at as startInterruptWatch, b as isInsideWindow, br as wrapMaskedAwsError, bt as maskDeep, c as recordedPrincipalsRepair, ct as canonicalizeRoute53QueryName, dt as compositeIdSkipResult, en as clientDefaultsFor, er as markNameCollision, et as renderDisableCommand, fr as isRetryableTransientError, ft as logicalIdShown, g as AmbiguousCreateLatch, gr as isMarkedNonRetryable, gt as stateOrphanRecordRemedy, h as AMBIGUOUS_LATCH_TTL_MS, hr as THROTTLING_ERROR_NAMES, ht as segmentAfterAnchor, i as holdsSecretDerivedEntry, in as CdkdError, it as isInterruptedWaitError, j as normalizeAwsTagsToCfn, jt as markAuxiliaryFailure, k as isPlainImportValue, kt as isAuxiliaryFailure, lr as isAmbiguousOutcomeError, lt as compositeIdFormatMessage, nn as AccountIdUnavailableError, nr as relayedNameCollision, o as readPrincipalLists, or as explicitDenyPolicyKind, ot as ElapsedBudgetRegistry, p as withRemovalDefaults, pr as isTransientServerError, pt as packCompositeId, q as userPoolProtectionSite, qt as injectiveKeyPrefix, r as SECRET_DERIVED_READ_LIVE, tn as credentialFingerprint, tr as markReplayMayCollide, u as clearOnUpdateRemoval, ur as isExplicitDenyError, ut as compositeIdSeparatorRefusal, v as ambiguousAttemptLead, vr as markNonRetryable, vt as createMaskedRetryLogger, w as withoutServerErrorRetries, x as replayFollowedAmbiguousAttempt, xn as ResourceUpdateNotSupportedError, xt as maskerOrIdentity, y as createAttemptKey, yn as ProvisioningError, yr as markRedactedCause, yt as isSecretDerivedValue, z as deleteWithProtectionCompensation } from "./iam-policy-targets-OtGPguLH.js";
|
|
4
4
|
import { s as ambientRegion } from "./aws-client-defaults-DBXBcg0J.js";
|
|
5
|
-
import { An as awaitInFlightSibling, Ar as isRefusedByName, Bc as decodeListingKey, Bo as isWarmThroughputDecrease, Br as stringifyIfAssigned, C as hasCdkAutoDeleteTag, Ci as s3BucketArn, Di as s3BucketWebsiteUrl, Do as findSilentDropProperties, Dt as lookupEachName, E as markRefusedBeforeApplying, Ei as s3BucketRegionalDomainName, Er as acquireIdempotencyToken, Et as isAccessDeniedError, F as findNestedTemplateTreeDefect, Fr as readTagList, Go as configBooleanRefusal, Gt as getCurrentProducerRegions, Ho as toFiniteNumber, I as isAbsoluteAssetPath, Ir as refuseMalformedDesiredTags, Is as stringifyValue, Jo as readConfigString, Jt as isRedactedRecordedValue, Ko as configIntegerRefusal, Kr as waitForLambdaFunctionActive, L as listNestedTemplateRows, Lr as tagMapAsList, Mi as outputReferenceProvenanceOf, Mn as getStackRecords, Mr as DBPROXY_TAGS_WHAT, Nr as DBPROXY_TAG_OPTIONS, Ot as withApiLimit, Pn as replacedDeleteFailureVerdict, Pr as planTagDiff, Qi as getAccountInfo, Qo as requireConfigString, R as renderNestedTemplateTreeDefect, Ro as WARM_THROUGHPUT_MEMBERS, Rr as tagPlanWarning, S as S3_AUTO_DELETE_OBJECTS_TAG, Si as isSettledInstanceState, Sr as earliestDefined, T as getPriorAttempts, Ti as s3BucketDualStackDomainName, To as withheldAccountClause, Tt as chunks, Uc as canonicalizeRegion, Uo as coerceCfnBoolean, Vo as toCfnInteger, Vs as rewriteTemplateAssetReferences, W as enclosingDeadlineRemainingMs, Wc as derivePartitionAndUrlSuffix, Wo as coerceCfnInteger, Xo as requireConfigArray, Xr as getCurrentResourceSecrets, Xt as redactedDeleteAddressSkip, Yo as replayWarn, Yt as redactedDeleteAddressFields, Zo as requireConfigObject, _ as deleteTableWithIndexBusyRetry, _i as reEnableInstanceApiTermination, as as sameLambdaFunctionAddress, b as waitForIndexesSettled, c as DynamoDBGlobalTableProvider, ca as parseWebACLArn, ci as deleteSkipReason, d as compensateRemovedDeletionProtection, da as passedParameterClassesOf, di as markWaitAbandoned, el as describeFileReadFailure, f as deleteBudgetKey, g as INDEX_SETTLE_POLL_INTERVAL_MS, gi as reDisableInstanceApiTermination, h as DELETE_INDEX_WAIT_PROCEED_NOTE, hi as observeThenDisableInstanceApiTermination, ht as withNestedStackContext, is as lambdaFunctionNameForMask, jr as markDeleteStarted, ko as withoutSilentDropProperties, l as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, li as withIndeterminateGuard, lr as secretNamedAttributeNamesOf, m as resolveDynamoDbDeleteBudgetMs, mi as isTerminationProtectionPropagationError, mt as getCurrentNestedStackContext, ni as slowCcOperationTimeoutMs, nl as renderAssemblyPathEscape, ns as withRetry, p as resolveDynamoDbDeleteBudgetClock, pi as ec2InstanceProtectionSite, po as refuseMalformedResourcesForDestroy, qa as refuseMalformedNestedChildOutputs, qo as configStringRefusal, qt as REDACTED_DELETE_ADDRESS_SKIP_REASON, ri as unchangedBehindSecretReference, rl as resolveAssemblyPath, rs as canonicalLambdaFunctionName, st as getNestedRevertRun, t as DeployEngine, tl as displayAssemblyPath, u as beginDeleteWait, ui as isWaitAbandonedError, ut as revertNestedChildFromJournal, v as maskedLogger, va as accountArgs, w as isTruthyCfnBoolean, wi as s3BucketDomainName, wr as reserveStackCreateToken, x as ECR_AUTO_DELETE_IMAGES_TAG, y as relayedIndexBusyDelete, zo as coerceWarmThroughput$1, zr as definedAttributes } from "./deploy-engine-
|
|
5
|
+
import { An as awaitInFlightSibling, Ar as isRefusedByName, Bc as decodeListingKey, Bo as isWarmThroughputDecrease, Br as stringifyIfAssigned, C as hasCdkAutoDeleteTag, Ci as s3BucketArn, Di as s3BucketWebsiteUrl, Do as findSilentDropProperties, Dt as lookupEachName, E as markRefusedBeforeApplying, Ei as s3BucketRegionalDomainName, Er as acquireIdempotencyToken, Et as isAccessDeniedError, F as findNestedTemplateTreeDefect, Fr as readTagList, Go as configBooleanRefusal, Gt as getCurrentProducerRegions, Ho as toFiniteNumber, I as isAbsoluteAssetPath, Ir as refuseMalformedDesiredTags, Is as stringifyValue, Jo as readConfigString, Jt as isRedactedRecordedValue, Ko as configIntegerRefusal, Kr as waitForLambdaFunctionActive, L as listNestedTemplateRows, Lr as tagMapAsList, Mi as outputReferenceProvenanceOf, Mn as getStackRecords, Mr as DBPROXY_TAGS_WHAT, Nr as DBPROXY_TAG_OPTIONS, Ot as withApiLimit, Pn as replacedDeleteFailureVerdict, Pr as planTagDiff, Qi as getAccountInfo, Qo as requireConfigString, R as renderNestedTemplateTreeDefect, Ro as WARM_THROUGHPUT_MEMBERS, Rr as tagPlanWarning, S as S3_AUTO_DELETE_OBJECTS_TAG, Si as isSettledInstanceState, Sr as earliestDefined, T as getPriorAttempts, Ti as s3BucketDualStackDomainName, To as withheldAccountClause, Tt as chunks, Uc as canonicalizeRegion, Uo as coerceCfnBoolean, Vo as toCfnInteger, Vs as rewriteTemplateAssetReferences, W as enclosingDeadlineRemainingMs, Wc as derivePartitionAndUrlSuffix, Wo as coerceCfnInteger, Xo as requireConfigArray, Xr as getCurrentResourceSecrets, Xt as redactedDeleteAddressSkip, Yo as replayWarn, Yt as redactedDeleteAddressFields, Zo as requireConfigObject, _ as deleteTableWithIndexBusyRetry, _i as reEnableInstanceApiTermination, as as sameLambdaFunctionAddress, b as waitForIndexesSettled, c as DynamoDBGlobalTableProvider, ca as parseWebACLArn, ci as deleteSkipReason, d as compensateRemovedDeletionProtection, da as passedParameterClassesOf, di as markWaitAbandoned, el as describeFileReadFailure, f as deleteBudgetKey, g as INDEX_SETTLE_POLL_INTERVAL_MS, gi as reDisableInstanceApiTermination, h as DELETE_INDEX_WAIT_PROCEED_NOTE, hi as observeThenDisableInstanceApiTermination, ht as withNestedStackContext, is as lambdaFunctionNameForMask, jr as markDeleteStarted, ko as withoutSilentDropProperties, l as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, li as withIndeterminateGuard, lr as secretNamedAttributeNamesOf, m as resolveDynamoDbDeleteBudgetMs, mi as isTerminationProtectionPropagationError, mt as getCurrentNestedStackContext, ni as slowCcOperationTimeoutMs, nl as renderAssemblyPathEscape, ns as withRetry, p as resolveDynamoDbDeleteBudgetClock, pi as ec2InstanceProtectionSite, po as refuseMalformedResourcesForDestroy, qa as refuseMalformedNestedChildOutputs, qo as configStringRefusal, qt as REDACTED_DELETE_ADDRESS_SKIP_REASON, ri as unchangedBehindSecretReference, rl as resolveAssemblyPath, rs as canonicalLambdaFunctionName, st as getNestedRevertRun, t as DeployEngine, tl as displayAssemblyPath, u as beginDeleteWait, ui as isWaitAbandonedError, ut as revertNestedChildFromJournal, v as maskedLogger, va as accountArgs, w as isTruthyCfnBoolean, wi as s3BucketDomainName, wr as reserveStackCreateToken, x as ECR_AUTO_DELETE_IMAGES_TAG, y as relayedIndexBusyDelete, zo as coerceWarmThroughput$1, zr as definedAttributes } from "./deploy-engine-D9SDE-Pj.js";
|
|
6
6
|
import { D as markSameGenerationBag, F as redactForState, H as recordReferenceProvenanceEntry, Jt as physicalNameCopiesOf, Tt as dynamicReferenceTokens, W as snapshotPassProvenance, Y as hasMaskableValues, Yt as recordAttributeIdCopy, m as passedNoEchoParametersOf, nn as carriesSecretMask, qt as recoverMaskedOutput, xt as withoutPhysicalNameCopies } from "./secret-redaction-BHWS-PZK.js";
|
|
7
|
-
import { n as collectInlinePolicyNamesManagedBySiblings, r as IamCreateClientCache, t as IAMRoleProvider } from "./iam-role-provider-
|
|
8
|
-
import { a as resolveSecretDerivedPrincipals, i as isResolvableSecretPrincipalList, n as runDestroyForStack, o as canonicalizeIpProtocolValue, r as holdsUnprovenSecretPrincipalToken, s as resolvedResourceTimeoutMs, t as canonicalizeIpv4Cidr } from "./program-
|
|
9
|
-
import { RDSProvider } from "./rds-provider-
|
|
10
|
-
import { NeptuneProvider } from "./neptune-provider-
|
|
11
|
-
import { ASGProvider } from "./asg-provider-
|
|
7
|
+
import { n as collectInlinePolicyNamesManagedBySiblings, r as IamCreateClientCache, t as IAMRoleProvider } from "./iam-role-provider-Q1sv3tF1.js";
|
|
8
|
+
import { a as resolveSecretDerivedPrincipals, i as isResolvableSecretPrincipalList, n as runDestroyForStack, o as canonicalizeIpProtocolValue, r as holdsUnprovenSecretPrincipalToken, s as resolvedResourceTimeoutMs, t as canonicalizeIpv4Cidr } from "./program-DSbJoNKe.js";
|
|
9
|
+
import { RDSProvider } from "./rds-provider-ByCpdpUq.js";
|
|
10
|
+
import { NeptuneProvider } from "./neptune-provider-DjVgEWGf.js";
|
|
11
|
+
import { ASGProvider } from "./asg-provider-DCrwgSCZ.js";
|
|
12
12
|
import { createHash, randomUUID } from "node:crypto";
|
|
13
13
|
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";
|
|
14
14
|
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";
|
|
@@ -49,8 +49,8 @@ import { AddCustomAttributesCommand, CognitoIdentityProviderClient, CreateUserPo
|
|
|
49
49
|
import { CreateHttpNamespaceCommand, CreatePrivateDnsNamespaceCommand, CreatePublicDnsNamespaceCommand, CreateServiceCommand as CreateServiceCommand$1, DeleteNamespaceCommand, DeleteServiceAttributesCommand, DeleteServiceCommand as DeleteServiceCommand$1, GetNamespaceCommand, GetOperationCommand, GetServiceAttributesCommand, GetServiceCommand, ListNamespacesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$14, NamespaceNotFound, ResourceInUse, ServiceDiscoveryClient, ServiceNotFound, TagResourceCommand as TagResourceCommand$16, UntagResourceCommand as UntagResourceCommand$16, UpdateHttpNamespaceCommand, UpdatePrivateDnsNamespaceCommand, UpdatePublicDnsNamespaceCommand, UpdateServiceAttributesCommand, UpdateServiceCommand as UpdateServiceCommand$1 } from "@aws-sdk/client-servicediscovery";
|
|
50
50
|
import { AppSyncClient, CreateApiKeyCommand, CreateDataSourceCommand, CreateGraphqlApiCommand, CreateResolverCommand, DeleteApiKeyCommand, DeleteDataSourceCommand, DeleteGraphqlApiCommand, DeleteResolverCommand, GetDataSourceCommand, GetGraphqlApiCommand, GetGraphqlApiEnvironmentVariablesCommand, GetIntrospectionSchemaCommand, GetResolverCommand, ListApiKeysCommand, ListGraphqlApisCommand, NotFoundException as NotFoundException$4, PutGraphqlApiEnvironmentVariablesCommand, StartSchemaCreationCommand, TagResourceCommand as TagResourceCommand$17, UntagResourceCommand as UntagResourceCommand$17, UpdateApiKeyCommand, UpdateDataSourceCommand, UpdateGraphqlApiCommand, UpdateResolverCommand } from "@aws-sdk/client-appsync";
|
|
51
51
|
import { ConcurrentModificationException, CrawlerRunningException, CreateConnectionCommand, CreateCrawlerCommand, CreateDatabaseCommand, CreateJobCommand, CreateSecurityConfigurationCommand, CreateTableCommand as CreateTableCommand$1, CreateTriggerCommand, CreateWorkflowCommand, DeleteConnectionCommand, DeleteCrawlerCommand, DeleteDatabaseCommand, DeleteJobCommand, DeleteSecurityConfigurationCommand, DeleteTableCommand as DeleteTableCommand$1, DeleteTriggerCommand, DeleteWorkflowCommand, EntityNotFoundException, GetConnectionCommand, GetCrawlerCommand, GetDatabaseCommand, GetJobCommand, GetSecurityConfigurationCommand, GetTableCommand, GetTagsCommand, GetTriggerCommand, GetWorkflowCommand, GlueClient, StartCrawlerScheduleCommand, StartTriggerCommand, StopCrawlerCommand, StopCrawlerScheduleCommand, StopTriggerCommand, TagResourceCommand as TagResourceCommand$18, UntagResourceCommand as UntagResourceCommand$18, UpdateConnectionCommand, UpdateCrawlerCommand, UpdateDatabaseCommand, UpdateJobCommand, UpdateTableCommand as UpdateTableCommand$1, UpdateTriggerCommand, UpdateWorkflowCommand } from "@aws-sdk/client-glue";
|
|
52
|
-
import { BudgetsClient, CreateBudgetCommand, CreateNotificationCommand, CreateSubscriberCommand, DeleteBudgetCommand, DeleteNotificationCommand, DeleteSubscriberCommand, DescribeBudgetCommand, DuplicateRecordException, NotFoundException as NotFoundException$5, TagResourceCommand as TagResourceCommand$19, UntagResourceCommand as UntagResourceCommand$19, UpdateBudgetCommand } from "@aws-sdk/client-budgets";
|
|
53
|
-
import { AddTagsToStreamCommand, CreateStreamCommand, DecreaseStreamRetentionPeriodCommand, DeleteStreamCommand, DeregisterStreamConsumerCommand, DescribeStreamCommand, DescribeStreamConsumerCommand, DescribeStreamSummaryCommand, DisableEnhancedMonitoringCommand, EnableEnhancedMonitoringCommand, IncreaseStreamRetentionPeriodCommand, KinesisClient, ListTagsForResourceCommand as ListTagsForResourceCommand$
|
|
52
|
+
import { BudgetsClient, CreateBudgetCommand, CreateNotificationCommand, CreateSubscriberCommand, DeleteBudgetCommand, DeleteNotificationCommand, DeleteSubscriberCommand, DescribeBudgetCommand, DescribeNotificationsForBudgetCommand, DescribeSubscribersForNotificationCommand, DuplicateRecordException, ListTagsForResourceCommand as ListTagsForResourceCommand$15, NotFoundException as NotFoundException$5, TagResourceCommand as TagResourceCommand$19, UntagResourceCommand as UntagResourceCommand$19, UpdateBudgetCommand } from "@aws-sdk/client-budgets";
|
|
53
|
+
import { AddTagsToStreamCommand, CreateStreamCommand, DecreaseStreamRetentionPeriodCommand, DeleteStreamCommand, DeregisterStreamConsumerCommand, DescribeStreamCommand, DescribeStreamConsumerCommand, DescribeStreamSummaryCommand, DisableEnhancedMonitoringCommand, EnableEnhancedMonitoringCommand, IncreaseStreamRetentionPeriodCommand, KinesisClient, ListTagsForResourceCommand as ListTagsForResourceCommand$16, ListTagsForStreamCommand, RegisterStreamConsumerCommand, RemoveTagsFromStreamCommand, ResourceNotFoundException as ResourceNotFoundException$12, StartStreamEncryptionCommand, StopStreamEncryptionCommand, TagResourceCommand as TagResourceCommand$20, UntagResourceCommand as UntagResourceCommand$20, UpdateMaxRecordSizeCommand, UpdateShardCountCommand, UpdateStreamModeCommand } from "@aws-sdk/client-kinesis";
|
|
54
54
|
import { CreateScheduleCommand, DeleteScheduleCommand, GetScheduleCommand, ListSchedulesCommand, ResourceNotFoundException as ResourceNotFoundException$13, SchedulerClient, UpdateScheduleCommand } from "@aws-sdk/client-scheduler";
|
|
55
55
|
import { CreatePipeCommand, DeletePipeCommand, DescribePipeCommand, NotFoundException as NotFoundException$6, PipesClient, TagResourceCommand as TagResourceCommand$21, UntagResourceCommand as UntagResourceCommand$21, UpdatePipeCommand } from "@aws-sdk/client-pipes";
|
|
56
56
|
import { AccessPointAlreadyExists, AccessPointNotFound, CreateAccessPointCommand, CreateFileSystemCommand, CreateMountTargetCommand, DeleteAccessPointCommand, DeleteFileSystemCommand, DeleteMountTargetCommand, DescribeAccessPointsCommand, DescribeBackupPolicyCommand, DescribeFileSystemPolicyCommand, DescribeFileSystemsCommand, DescribeLifecycleConfigurationCommand, DescribeMountTargetSecurityGroupsCommand, DescribeMountTargetsCommand, EFSClient, FileSystemAlreadyExists, FileSystemNotFound, ModifyMountTargetSecurityGroupsCommand, MountTargetNotFound, PutBackupPolicyCommand, PutFileSystemPolicyCommand, PutLifecycleConfigurationCommand, UpdateFileSystemCommand, UpdateFileSystemProtectionCommand } from "@aws-sdk/client-efs";
|
|
@@ -59,11 +59,11 @@ import { AddInstanceFleetCommand, AddInstanceGroupsCommand, AddTagsCommand as Ad
|
|
|
59
59
|
import { CreateDeliveryStreamCommand, DeleteDeliveryStreamCommand, DescribeDeliveryStreamCommand, FirehoseClient, ListTagsForDeliveryStreamCommand, ResourceNotFoundException as ResourceNotFoundException$14, TagDeliveryStreamCommand, UntagDeliveryStreamCommand, UpdateDestinationCommand } from "@aws-sdk/client-firehose";
|
|
60
60
|
import { AddTagsCommand as AddTagsCommand$2, CloudTrailClient, CreateTrailCommand, DeleteTrailCommand, GetEventSelectorsCommand, GetInsightSelectorsCommand, GetTrailCommand, GetTrailStatusCommand, ListTagsCommand as ListTagsCommand$2, PutEventSelectorsCommand, PutInsightSelectorsCommand, RemoveTagsCommand as RemoveTagsCommand$2, StartLoggingCommand, StopLoggingCommand, TrailNotFoundException, UpdateTrailCommand } from "@aws-sdk/client-cloudtrail";
|
|
61
61
|
import { BatchGetProjectsCommand, CodeBuildClient, CreateProjectCommand, DeleteProjectCommand, ResourceNotFoundException as ResourceNotFoundException$15, UpdateProjectCommand } from "@aws-sdk/client-codebuild";
|
|
62
|
-
import { CodeCommitClient, CreateCommitCommand, CreateRepositoryCommand as CreateRepositoryCommand$1, DeleteRepositoryCommand as DeleteRepositoryCommand$1, GetRepositoryCommand, GetRepositoryTriggersCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$
|
|
62
|
+
import { CodeCommitClient, CreateCommitCommand, CreateRepositoryCommand as CreateRepositoryCommand$1, DeleteRepositoryCommand as DeleteRepositoryCommand$1, GetRepositoryCommand, GetRepositoryTriggersCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$17, PutRepositoryTriggersCommand, RepositoryDoesNotExistException, TagResourceCommand as TagResourceCommand$23, UntagResourceCommand as UntagResourceCommand$23, UpdateRepositoryDescriptionCommand, UpdateRepositoryEncryptionKeyCommand, UpdateRepositoryNameCommand } from "@aws-sdk/client-codecommit";
|
|
63
63
|
import { CreateLifecyclePolicyCommand, DLMClient, DeleteLifecyclePolicyCommand as DeleteLifecyclePolicyCommand$1, GetLifecyclePoliciesCommand, GetLifecyclePolicyCommand as GetLifecyclePolicyCommand$1, ResourceNotFoundException as ResourceNotFoundException$16, TagResourceCommand as TagResourceCommand$24, UntagResourceCommand as UntagResourceCommand$24, UpdateLifecyclePolicyCommand } from "@aws-sdk/client-dlm";
|
|
64
|
-
import { CreateVectorBucketCommand, DeleteIndexCommand, DeleteVectorBucketCommand, GetVectorBucketCommand, ListIndexesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$
|
|
65
|
-
import { ListTagsForResourceCommand as ListTagsForResourceCommand$
|
|
66
|
-
import { CreateNamespaceCommand, CreateTableBucketCommand, CreateTableCommand as CreateTableCommand$2, DeleteNamespaceCommand as DeleteNamespaceCommand$1, DeleteTableBucketCommand, DeleteTableCommand as DeleteTableCommand$2, GetNamespaceCommand as GetNamespaceCommand$1, GetTableBucketCommand, GetTableCommand as GetTableCommand$1, ListNamespacesCommand as ListNamespacesCommand$1, ListTableBucketsCommand, ListTablesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$
|
|
64
|
+
import { CreateVectorBucketCommand, DeleteIndexCommand, DeleteVectorBucketCommand, GetVectorBucketCommand, ListIndexesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$18, S3VectorsClient, TagResourceCommand as TagResourceCommand$25, UntagResourceCommand as UntagResourceCommand$25 } from "@aws-sdk/client-s3vectors";
|
|
65
|
+
import { ListTagsForResourceCommand as ListTagsForResourceCommand$19, S3ControlClient, TagResourceCommand as TagResourceCommand$26, UntagResourceCommand as UntagResourceCommand$26 } from "@aws-sdk/client-s3-control";
|
|
66
|
+
import { CreateNamespaceCommand, CreateTableBucketCommand, CreateTableCommand as CreateTableCommand$2, DeleteNamespaceCommand as DeleteNamespaceCommand$1, DeleteTableBucketCommand, DeleteTableCommand as DeleteTableCommand$2, GetNamespaceCommand as GetNamespaceCommand$1, GetTableBucketCommand, GetTableCommand as GetTableCommand$1, ListNamespacesCommand as ListNamespacesCommand$1, ListTableBucketsCommand, ListTablesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$20, NotFoundException as NotFoundException$7, S3TablesClient, TagResourceCommand as TagResourceCommand$27, UntagResourceCommand as UntagResourceCommand$27 } from "@aws-sdk/client-s3tables";
|
|
67
67
|
|
|
68
68
|
//#region src/provisioning/providers/iam-policy-provider.ts
|
|
69
69
|
const POLICY_NAME_SKIP_REASON = "no policy name in state — no delete issued";
|
|
@@ -117,7 +117,11 @@ var IAMPolicyProvider = class {
|
|
|
117
117
|
iamClient;
|
|
118
118
|
logger = getLogger().child("IAMPolicyProvider");
|
|
119
119
|
wrapMaskedError(mask, error, build) {
|
|
120
|
-
|
|
120
|
+
const failure = describeAwsFailure(error);
|
|
121
|
+
if (!(error instanceof Error)) return build(mask(failure.detail));
|
|
122
|
+
if (!failure.redacted) return wrapMaskedAwsError(mask, error, build);
|
|
123
|
+
this.logger.debug(mask(build(mask(failure.detail)).message));
|
|
124
|
+
return markRedactedCause(build(`${mask(failure.summary)}${relayedNameCollision(failure.detail)}`));
|
|
121
125
|
}
|
|
122
126
|
handledProperties = /* @__PURE__ */ new Map([["AWS::IAM::Policy", /* @__PURE__ */ new Set([
|
|
123
127
|
"PolicyName",
|
|
@@ -516,7 +520,8 @@ var IAMPolicyProvider = class {
|
|
|
516
520
|
this.logger.debug(`Successfully deleted IAM policy ${logicalId}`);
|
|
517
521
|
} catch (error) {
|
|
518
522
|
const cause = error instanceof Error ? error : void 0;
|
|
519
|
-
const
|
|
523
|
+
const opMask = createMaskedLogSinks(this.logger, context?.maskSecrets).mask;
|
|
524
|
+
const failure = this.wrapMaskedError((text) => mask(opMask(text)), error, (text) => new ProvisioningError(`Failed to delete IAM policy ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
520
525
|
throw maskError(removedAny ? markDeleteStarted(failure) : failure);
|
|
521
526
|
}
|
|
522
527
|
}
|
|
@@ -1213,7 +1218,11 @@ var IAMInstanceProfileProvider = class {
|
|
|
1213
1218
|
createClient = new IamCreateClientCache(() => this.iamClient);
|
|
1214
1219
|
logger = getLogger().child("IAMInstanceProfileProvider");
|
|
1215
1220
|
wrapMaskedError(mask, error, build) {
|
|
1216
|
-
|
|
1221
|
+
const failure = describeAwsFailure(error);
|
|
1222
|
+
if (!(error instanceof Error)) return build(mask(failure.detail));
|
|
1223
|
+
if (!failure.redacted) return wrapMaskedAwsError(mask, error, build);
|
|
1224
|
+
this.logger.debug(mask(build(mask(failure.detail)).message));
|
|
1225
|
+
return markRedactedCause(build(`${mask(failure.summary)}${relayedNameCollision(failure.detail)}`));
|
|
1217
1226
|
}
|
|
1218
1227
|
handledProperties = /* @__PURE__ */ new Map([["AWS::IAM::InstanceProfile", /* @__PURE__ */ new Set([
|
|
1219
1228
|
"InstanceProfileName",
|
|
@@ -1346,7 +1355,8 @@ var IAMInstanceProfileProvider = class {
|
|
|
1346
1355
|
}
|
|
1347
1356
|
}
|
|
1348
1357
|
async delete(logicalId, physicalId, resourceType, _properties, context) {
|
|
1349
|
-
this.logger
|
|
1358
|
+
const log = createMaskedLogSinks(this.logger, context?.maskSecrets);
|
|
1359
|
+
log.debug(`Deleting IAM instance profile ${logicalId}: ${physicalId}`);
|
|
1350
1360
|
let stripped = false;
|
|
1351
1361
|
try {
|
|
1352
1362
|
let roles = [];
|
|
@@ -1356,7 +1366,7 @@ var IAMInstanceProfileProvider = class {
|
|
|
1356
1366
|
if (error instanceof NoSuchEntityException) {
|
|
1357
1367
|
const clientRegion = await this.iamClient.config.region();
|
|
1358
1368
|
assertRegionMatch(clientRegion, context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
1359
|
-
this.logGoneOnDelete(logicalId, physicalId, context);
|
|
1369
|
+
this.logGoneOnDelete(logicalId, physicalId, context, log);
|
|
1360
1370
|
return;
|
|
1361
1371
|
}
|
|
1362
1372
|
throw error;
|
|
@@ -1367,27 +1377,28 @@ var IAMInstanceProfileProvider = class {
|
|
|
1367
1377
|
RoleName: roleName
|
|
1368
1378
|
}));
|
|
1369
1379
|
stripped = true;
|
|
1370
|
-
|
|
1380
|
+
log.debug(`Removed role ${roleName} from instance profile ${physicalId}`);
|
|
1371
1381
|
} catch (error) {
|
|
1372
1382
|
if (!(error instanceof NoSuchEntityException)) throw error;
|
|
1373
1383
|
}
|
|
1374
1384
|
await this.iamClient.send(new DeleteInstanceProfileCommand({ InstanceProfileName: physicalId }));
|
|
1375
|
-
|
|
1385
|
+
log.debug(`Successfully deleted IAM instance profile ${logicalId}`);
|
|
1376
1386
|
} catch (error) {
|
|
1377
1387
|
if (error instanceof NoSuchEntityException) {
|
|
1378
1388
|
const clientRegion = await this.iamClient.config.region();
|
|
1379
1389
|
assertRegionMatch(clientRegion, context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
1380
|
-
this.logGoneOnDelete(logicalId, physicalId, context);
|
|
1390
|
+
this.logGoneOnDelete(logicalId, physicalId, context, log);
|
|
1381
1391
|
return;
|
|
1382
1392
|
}
|
|
1383
1393
|
const cause = error instanceof Error ? error : void 0;
|
|
1384
|
-
const
|
|
1394
|
+
const { mask } = log;
|
|
1395
|
+
const failure = this.wrapMaskedError(mask, error, (text) => new ProvisioningError(mask(`Failed to delete IAM instance profile ${logicalId}: ${text}`), resourceType, logicalId, physicalId, cause));
|
|
1385
1396
|
throw stripped ? markDeleteStarted(failure) : failure;
|
|
1386
1397
|
}
|
|
1387
1398
|
}
|
|
1388
|
-
logGoneOnDelete(logicalId, physicalId, context) {
|
|
1399
|
+
logGoneOnDelete(logicalId, physicalId, context, log) {
|
|
1389
1400
|
if (context?.failedCreateOrphan === true) this.logger.info(safeMsg` IAM instance profile ${physicalId} (${logicalId}), which a failed deploy created, is already gone; nothing to delete`);
|
|
1390
|
-
else
|
|
1401
|
+
else log.debug(`Instance profile ${log.value(physicalId)} does not exist, skipping deletion`);
|
|
1391
1402
|
}
|
|
1392
1403
|
async isSameResource(journaledPhysicalId, record, resourceType, context) {
|
|
1393
1404
|
if (resourceType !== INSTANCE_PROFILE_TYPE) return "unknown";
|
|
@@ -1825,7 +1836,11 @@ var IAMUserGroupProvider = class {
|
|
|
1825
1836
|
createClient = new IamCreateClientCache(() => this.iamClient);
|
|
1826
1837
|
logger = getLogger().child("IAMUserGroupProvider");
|
|
1827
1838
|
wrapMaskedError(mask, error, build) {
|
|
1828
|
-
|
|
1839
|
+
const failure = describeAwsFailure(error);
|
|
1840
|
+
if (!(error instanceof Error)) return build(mask(failure.detail));
|
|
1841
|
+
if (!failure.redacted) return wrapMaskedAwsError(mask, error, build);
|
|
1842
|
+
this.logger.debug(mask(build(mask(failure.detail)).message));
|
|
1843
|
+
return markRedactedCause(build(`${mask(failure.summary)}${relayedNameCollision(failure.detail)}`));
|
|
1829
1844
|
}
|
|
1830
1845
|
handledProperties = /* @__PURE__ */ new Map([
|
|
1831
1846
|
["AWS::IAM::User", /* @__PURE__ */ new Set([
|
|
@@ -2086,7 +2101,7 @@ var IAMUserGroupProvider = class {
|
|
|
2086
2101
|
log.debug(`Successfully deleted IAM user ${logicalId}`);
|
|
2087
2102
|
} catch (error) {
|
|
2088
2103
|
const cause = error instanceof Error ? error : void 0;
|
|
2089
|
-
const failure = new ProvisioningError(log.mask(`Failed to delete IAM user ${logicalId}: ${
|
|
2104
|
+
const failure = this.wrapMaskedError(log.mask, error, (text) => new ProvisioningError(log.mask(`Failed to delete IAM user ${logicalId}: ${text}`), resourceType, logicalId, physicalId, cause));
|
|
2090
2105
|
throw progress.stripped ? markDeleteStarted(failure) : failure;
|
|
2091
2106
|
}
|
|
2092
2107
|
}
|
|
@@ -2367,7 +2382,7 @@ var IAMUserGroupProvider = class {
|
|
|
2367
2382
|
return;
|
|
2368
2383
|
}
|
|
2369
2384
|
const cause = error instanceof Error ? error : void 0;
|
|
2370
|
-
const failure = new ProvisioningError(log.mask(`Failed to delete IAM group ${logicalId}: ${
|
|
2385
|
+
const failure = this.wrapMaskedError(log.mask, error, (text) => new ProvisioningError(log.mask(`Failed to delete IAM group ${logicalId}: ${text}`), resourceType, logicalId, physicalId, cause));
|
|
2371
2386
|
throw progress.stripped ? markDeleteStarted(failure) : failure;
|
|
2372
2387
|
}
|
|
2373
2388
|
}
|
|
@@ -2651,7 +2666,8 @@ var IAMUserGroupProvider = class {
|
|
|
2651
2666
|
this.logger.debug(`Successfully deleted IAM UserToGroupAddition ${logicalId}`);
|
|
2652
2667
|
} catch (error) {
|
|
2653
2668
|
const cause = error instanceof Error ? error : void 0;
|
|
2654
|
-
const
|
|
2669
|
+
const opMask = createMaskedLogSinks(this.logger, context?.maskSecrets).mask;
|
|
2670
|
+
const failure = this.wrapMaskedError((text) => mask(opMask(text)), error, (text) => new ProvisioningError(`Failed to delete IAM UserToGroupAddition ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
2655
2671
|
throw maskError(removedAny ? markDeleteStarted(failure) : failure);
|
|
2656
2672
|
}
|
|
2657
2673
|
}
|
|
@@ -24788,7 +24804,7 @@ var ECSProvider = class {
|
|
|
24788
24804
|
const serviceConnectConfigurationInput = JSON.stringify(previousProperties["ServiceConnectConfiguration"] ?? null) !== JSON.stringify(properties["ServiceConnectConfiguration"] ?? null) ? clearOnUpdateRemoval(this.convertServiceConnectConfiguration(properties["ServiceConnectConfiguration"]), previousProperties["ServiceConnectConfiguration"], { enabled: false }) : void 0;
|
|
24789
24805
|
const volumeConfigurationsInput = JSON.stringify(previousProperties["VolumeConfigurations"] ?? null) !== JSON.stringify(properties["VolumeConfigurations"] ?? null) ? clearOnUpdateRemoval(this.convertServiceVolumeConfigurations(properties["VolumeConfigurations"]), previousProperties["VolumeConfigurations"], []) : void 0;
|
|
24790
24806
|
const vpcLatticeConfigurationsInput = JSON.stringify(previousProperties["VpcLatticeConfigurations"] ?? null) !== JSON.stringify(properties["VpcLatticeConfigurations"] ?? null) ? clearOnUpdateRemoval(this.convertVpcLatticeConfigurations(properties["VpcLatticeConfigurations"]), previousProperties["VpcLatticeConfigurations"], []) : void 0;
|
|
24791
|
-
const monitoringInput = JSON.stringify(previousProperties["Monitoring"] ?? null) !== JSON.stringify(properties["Monitoring"] ?? null)
|
|
24807
|
+
const monitoringInput = JSON.stringify(previousProperties["Monitoring"] ?? null) !== JSON.stringify(properties["Monitoring"] ?? null) ? clearOnUpdateRemoval(this.convertMonitoringConfiguration(properties["Monitoring"]), previousProperties["Monitoring"], { metricConfigurations: [] }) : void 0;
|
|
24792
24808
|
const forceNewDeploymentInput = this.resolveForceNewDeployment(properties, previousProperties, log);
|
|
24793
24809
|
const deploymentConfigurationInput = this.resolveDeploymentConfiguration(properties, previousProperties);
|
|
24794
24810
|
try {
|
|
@@ -37428,6 +37444,117 @@ function removableRecorded(kind, items) {
|
|
|
37428
37444
|
Subscribers: e["Subscribers"].filter((s) => !holdsSecretDerivedEntry(s["Address"]))
|
|
37429
37445
|
} : e);
|
|
37430
37446
|
}
|
|
37447
|
+
function finiteNumber(value) {
|
|
37448
|
+
if (typeof value === "number") return Number.isFinite(value) ? value : void 0;
|
|
37449
|
+
if (typeof value === "string" && value.trim() !== "") {
|
|
37450
|
+
const n = Number(value);
|
|
37451
|
+
return Number.isFinite(n) ? n : void 0;
|
|
37452
|
+
}
|
|
37453
|
+
}
|
|
37454
|
+
function isoDate(value) {
|
|
37455
|
+
let date;
|
|
37456
|
+
if (typeof value === "number") date = new Date(value < 0xe8d4a51000 ? value * 1e3 : value);
|
|
37457
|
+
else if (typeof value === "string" && /^\d+$/.test(value)) {
|
|
37458
|
+
const n = Number(value);
|
|
37459
|
+
date = new Date(n < 0xe8d4a51000 ? n * 1e3 : n);
|
|
37460
|
+
} else if (typeof value === "string") date = new Date(value);
|
|
37461
|
+
else if (value instanceof Date) date = value;
|
|
37462
|
+
else return void 0;
|
|
37463
|
+
return Number.isNaN(date.getTime()) ? void 0 : date.toISOString();
|
|
37464
|
+
}
|
|
37465
|
+
function canonicalSpend(spend) {
|
|
37466
|
+
if (!isPlainRecord(spend)) return spend;
|
|
37467
|
+
const amount = finiteNumber(spend["Amount"]);
|
|
37468
|
+
return amount === void 0 || amount === spend["Amount"] ? spend : {
|
|
37469
|
+
...spend,
|
|
37470
|
+
Amount: amount
|
|
37471
|
+
};
|
|
37472
|
+
}
|
|
37473
|
+
function canonicalizeBudgetDriftBag(side) {
|
|
37474
|
+
let out = side;
|
|
37475
|
+
const budget = side["Budget"];
|
|
37476
|
+
if (isPlainRecord(budget)) {
|
|
37477
|
+
let nextBudget = budget;
|
|
37478
|
+
const set = (key, value) => {
|
|
37479
|
+
if (value === nextBudget[key]) return;
|
|
37480
|
+
if (nextBudget === budget) nextBudget = { ...budget };
|
|
37481
|
+
nextBudget[key] = value;
|
|
37482
|
+
};
|
|
37483
|
+
set("BudgetLimit", canonicalSpend(budget["BudgetLimit"]));
|
|
37484
|
+
const planned = budget["PlannedBudgetLimits"];
|
|
37485
|
+
if (isPlainRecord(planned)) {
|
|
37486
|
+
const entries = Object.entries(planned).map(([key, spend]) => [key, canonicalSpend(spend)]);
|
|
37487
|
+
if (entries.some(([key, spend]) => spend !== planned[key])) set("PlannedBudgetLimits", Object.fromEntries(entries));
|
|
37488
|
+
}
|
|
37489
|
+
const period = budget["TimePeriod"];
|
|
37490
|
+
if (isPlainRecord(period)) {
|
|
37491
|
+
let nextPeriod = period;
|
|
37492
|
+
for (const key of ["Start", "End"]) {
|
|
37493
|
+
if (period[key] === void 0) continue;
|
|
37494
|
+
const iso = isoDate(period[key]);
|
|
37495
|
+
if (iso === void 0 || iso === period[key]) continue;
|
|
37496
|
+
if (nextPeriod === period) nextPeriod = { ...period };
|
|
37497
|
+
nextPeriod[key] = iso;
|
|
37498
|
+
}
|
|
37499
|
+
set("TimePeriod", nextPeriod);
|
|
37500
|
+
}
|
|
37501
|
+
if (nextBudget !== budget) out = {
|
|
37502
|
+
...out,
|
|
37503
|
+
Budget: nextBudget
|
|
37504
|
+
};
|
|
37505
|
+
}
|
|
37506
|
+
const list = side["NotificationsWithSubscribers"];
|
|
37507
|
+
if (Array.isArray(list)) {
|
|
37508
|
+
let changed = false;
|
|
37509
|
+
const nextList = list.map((entry) => {
|
|
37510
|
+
if (!isPlainRecord(entry) || !isPlainRecord(entry["Notification"])) return entry;
|
|
37511
|
+
const notification = entry["Notification"];
|
|
37512
|
+
const threshold = finiteNumber(notification["Threshold"]);
|
|
37513
|
+
const fillType = notification["ThresholdType"] == null;
|
|
37514
|
+
const fixThreshold = threshold !== void 0 && threshold !== notification["Threshold"];
|
|
37515
|
+
if (!fillType && !fixThreshold) return entry;
|
|
37516
|
+
changed = true;
|
|
37517
|
+
return {
|
|
37518
|
+
...entry,
|
|
37519
|
+
Notification: {
|
|
37520
|
+
...notification,
|
|
37521
|
+
...fixThreshold && { Threshold: threshold },
|
|
37522
|
+
...fillType && { ThresholdType: "PERCENTAGE" }
|
|
37523
|
+
}
|
|
37524
|
+
};
|
|
37525
|
+
});
|
|
37526
|
+
if (changed) out = {
|
|
37527
|
+
...out,
|
|
37528
|
+
NotificationsWithSubscribers: nextList
|
|
37529
|
+
};
|
|
37530
|
+
}
|
|
37531
|
+
return out;
|
|
37532
|
+
}
|
|
37533
|
+
function declaresLegacyFilterShape(properties) {
|
|
37534
|
+
const budget = properties?.["Budget"];
|
|
37535
|
+
if (!isPlainRecord(budget)) return false;
|
|
37536
|
+
const legacy = budget["CostFilters"] != null || budget["CostTypes"] != null;
|
|
37537
|
+
const current = budget["FilterExpression"] != null || budget["Metrics"] != null;
|
|
37538
|
+
return legacy && !current;
|
|
37539
|
+
}
|
|
37540
|
+
function dropElapsedPlannedLimits(baseline, aws, nowMs) {
|
|
37541
|
+
const budget = baseline["Budget"];
|
|
37542
|
+
const awsBudget = aws["Budget"];
|
|
37543
|
+
if (!isPlainRecord(budget) || !isPlainRecord(awsBudget)) return baseline;
|
|
37544
|
+
const planned = budget["PlannedBudgetLimits"];
|
|
37545
|
+
if (!isPlainRecord(planned)) return baseline;
|
|
37546
|
+
const awsPlanned = isPlainRecord(awsBudget["PlannedBudgetLimits"]) ? awsBudget["PlannedBudgetLimits"] : {};
|
|
37547
|
+
const elapsed = (key) => !Object.hasOwn(awsPlanned, key) && /^\d+$/.test(key) && Number(key) * 1e3 < nowMs;
|
|
37548
|
+
const kept = Object.entries(planned).filter(([key]) => !elapsed(key));
|
|
37549
|
+
if (kept.length === Object.keys(planned).length) return baseline;
|
|
37550
|
+
return {
|
|
37551
|
+
...baseline,
|
|
37552
|
+
Budget: {
|
|
37553
|
+
...budget,
|
|
37554
|
+
PlannedBudgetLimits: Object.fromEntries(kept)
|
|
37555
|
+
}
|
|
37556
|
+
};
|
|
37557
|
+
}
|
|
37431
37558
|
var BudgetsBudgetProvider = class {
|
|
37432
37559
|
client;
|
|
37433
37560
|
createClient;
|
|
@@ -37820,6 +37947,166 @@ var BudgetsBudgetProvider = class {
|
|
|
37820
37947
|
throw this.wrapMaskedError(maskerOrIdentity(void 0), error, (text) => new ProvisioningError(`Failed to resolve Arn for budget ${physicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
37821
37948
|
}
|
|
37822
37949
|
}
|
|
37950
|
+
async readCurrentState(physicalId, _logicalId, resourceType, properties) {
|
|
37951
|
+
if (resourceType !== "AWS::Budgets::Budget") return void 0;
|
|
37952
|
+
const accountId = await this.resolveAccountId();
|
|
37953
|
+
const client = this.getClient();
|
|
37954
|
+
const describe = async () => {
|
|
37955
|
+
try {
|
|
37956
|
+
return (await client.send(new DescribeBudgetCommand({
|
|
37957
|
+
AccountId: accountId,
|
|
37958
|
+
BudgetName: physicalId,
|
|
37959
|
+
ShowFilterExpression: !declaresLegacyFilterShape(properties)
|
|
37960
|
+
}))).Budget;
|
|
37961
|
+
} catch (error) {
|
|
37962
|
+
if (error instanceof NotFoundException$5) return RESOURCE_NOT_FOUND;
|
|
37963
|
+
throw error;
|
|
37964
|
+
}
|
|
37965
|
+
};
|
|
37966
|
+
const budget = await describe();
|
|
37967
|
+
if (budget === RESOURCE_NOT_FOUND || budget === void 0) return budget;
|
|
37968
|
+
const notifications = await this.listNotifications(accountId, physicalId);
|
|
37969
|
+
if (notifications === void 0 && await describe() === RESOURCE_NOT_FOUND) return RESOURCE_NOT_FOUND;
|
|
37970
|
+
const notificationsWithSubscribers = (await Promise.all((notifications ?? []).map(async (notification) => {
|
|
37971
|
+
const subscribers = await this.listSubscribers(accountId, physicalId, notification);
|
|
37972
|
+
return subscribers === void 0 ? void 0 : {
|
|
37973
|
+
notification,
|
|
37974
|
+
subscribers
|
|
37975
|
+
};
|
|
37976
|
+
}))).filter((e) => e !== void 0).map(({ notification, subscribers }) => ({
|
|
37977
|
+
Notification: {
|
|
37978
|
+
NotificationType: notification.NotificationType,
|
|
37979
|
+
ComparisonOperator: notification.ComparisonOperator,
|
|
37980
|
+
Threshold: notification.Threshold,
|
|
37981
|
+
...notification.ThresholdType !== void 0 && notification.ThresholdType !== "PERCENTAGE" && { ThresholdType: notification.ThresholdType }
|
|
37982
|
+
},
|
|
37983
|
+
Subscribers: subscribers.map((s) => ({
|
|
37984
|
+
SubscriptionType: s.SubscriptionType,
|
|
37985
|
+
Address: s.Address
|
|
37986
|
+
}))
|
|
37987
|
+
}));
|
|
37988
|
+
let tags;
|
|
37989
|
+
try {
|
|
37990
|
+
tags = await client.send(new ListTagsForResourceCommand$15({ ResourceARN: await this.budgetArn(accountId, physicalId) }));
|
|
37991
|
+
} catch (error) {
|
|
37992
|
+
if (error instanceof NotFoundException$5 && await describe() === RESOURCE_NOT_FOUND) return RESOURCE_NOT_FOUND;
|
|
37993
|
+
throw error;
|
|
37994
|
+
}
|
|
37995
|
+
return {
|
|
37996
|
+
Budget: this.budgetFromSdk(budget),
|
|
37997
|
+
NotificationsWithSubscribers: notificationsWithSubscribers,
|
|
37998
|
+
ResourceTags: (tags.ResourceTags ?? []).map((t) => ({
|
|
37999
|
+
Key: t.Key,
|
|
38000
|
+
Value: t.Value
|
|
38001
|
+
}))
|
|
38002
|
+
};
|
|
38003
|
+
}
|
|
38004
|
+
async listNotifications(accountId, budgetName) {
|
|
38005
|
+
const out = [];
|
|
38006
|
+
let token;
|
|
38007
|
+
try {
|
|
38008
|
+
do {
|
|
38009
|
+
const page = await this.getClient().send(new DescribeNotificationsForBudgetCommand({
|
|
38010
|
+
AccountId: accountId,
|
|
38011
|
+
BudgetName: budgetName,
|
|
38012
|
+
MaxResults: 100,
|
|
38013
|
+
...token !== void 0 && { NextToken: token }
|
|
38014
|
+
}));
|
|
38015
|
+
out.push(...page.Notifications ?? []);
|
|
38016
|
+
token = page.NextToken;
|
|
38017
|
+
} while (token);
|
|
38018
|
+
} catch (error) {
|
|
38019
|
+
if (error instanceof NotFoundException$5) return void 0;
|
|
38020
|
+
throw error;
|
|
38021
|
+
}
|
|
38022
|
+
return out;
|
|
38023
|
+
}
|
|
38024
|
+
async listSubscribers(accountId, budgetName, notification) {
|
|
38025
|
+
const out = [];
|
|
38026
|
+
let token;
|
|
38027
|
+
try {
|
|
38028
|
+
do {
|
|
38029
|
+
const page = await this.getClient().send(new DescribeSubscribersForNotificationCommand({
|
|
38030
|
+
AccountId: accountId,
|
|
38031
|
+
BudgetName: budgetName,
|
|
38032
|
+
Notification: {
|
|
38033
|
+
NotificationType: notification.NotificationType,
|
|
38034
|
+
ComparisonOperator: notification.ComparisonOperator,
|
|
38035
|
+
Threshold: notification.Threshold,
|
|
38036
|
+
...notification.ThresholdType !== void 0 && { ThresholdType: notification.ThresholdType }
|
|
38037
|
+
},
|
|
38038
|
+
MaxResults: 100,
|
|
38039
|
+
...token !== void 0 && { NextToken: token }
|
|
38040
|
+
}));
|
|
38041
|
+
out.push(...page.Subscribers ?? []);
|
|
38042
|
+
token = page.NextToken;
|
|
38043
|
+
} while (token);
|
|
38044
|
+
} catch (error) {
|
|
38045
|
+
if (error instanceof NotFoundException$5) return void 0;
|
|
38046
|
+
throw error;
|
|
38047
|
+
}
|
|
38048
|
+
return out;
|
|
38049
|
+
}
|
|
38050
|
+
budgetFromSdk(budget) {
|
|
38051
|
+
const raw = budget;
|
|
38052
|
+
const spend = (s) => s === void 0 ? void 0 : {
|
|
38053
|
+
Amount: finiteNumber(s.Amount) ?? s.Amount,
|
|
38054
|
+
Unit: s.Unit
|
|
38055
|
+
};
|
|
38056
|
+
const out = {
|
|
38057
|
+
BudgetName: budget.BudgetName,
|
|
38058
|
+
BudgetType: raw["BudgetType"],
|
|
38059
|
+
TimeUnit: budget.TimeUnit
|
|
38060
|
+
};
|
|
38061
|
+
if (budget.BudgetLimit) out["BudgetLimit"] = spend(budget.BudgetLimit);
|
|
38062
|
+
if (budget.PlannedBudgetLimits && Object.keys(budget.PlannedBudgetLimits).length > 0) out["PlannedBudgetLimits"] = Object.fromEntries(Object.entries(budget.PlannedBudgetLimits).map(([key, s]) => [key, spend(s)]));
|
|
38063
|
+
if (budget.TimePeriod) out["TimePeriod"] = {
|
|
38064
|
+
...budget.TimePeriod.Start && { Start: isoDate(budget.TimePeriod.Start) },
|
|
38065
|
+
...budget.TimePeriod.End && { End: isoDate(budget.TimePeriod.End) }
|
|
38066
|
+
};
|
|
38067
|
+
if (budget.CostFilters && Object.keys(budget.CostFilters).length > 0) out["CostFilters"] = budget.CostFilters;
|
|
38068
|
+
if (budget.CostTypes) out["CostTypes"] = { ...budget.CostTypes };
|
|
38069
|
+
const autoAdjust = raw["AutoAdjustData"];
|
|
38070
|
+
if (isPlainRecord(autoAdjust)) {
|
|
38071
|
+
const historical = autoAdjust["HistoricalOptions"];
|
|
38072
|
+
out["AutoAdjustData"] = {
|
|
38073
|
+
AutoAdjustType: autoAdjust["AutoAdjustType"],
|
|
38074
|
+
...isPlainRecord(historical) && { HistoricalOptions: { BudgetAdjustmentPeriod: historical["BudgetAdjustmentPeriod"] } }
|
|
38075
|
+
};
|
|
38076
|
+
}
|
|
38077
|
+
if (raw["FilterExpression"] !== void 0) out["FilterExpression"] = raw["FilterExpression"];
|
|
38078
|
+
if (Array.isArray(raw["Metrics"]) && raw["Metrics"].length > 0) out["Metrics"] = raw["Metrics"];
|
|
38079
|
+
if (raw["BillingViewArn"] !== void 0) out["BillingViewArn"] = raw["BillingViewArn"];
|
|
38080
|
+
return out;
|
|
38081
|
+
}
|
|
38082
|
+
getDriftUnorderedPaths(resourceType) {
|
|
38083
|
+
return resourceType === "AWS::Budgets::Budget" ? ["NotificationsWithSubscribers"] : [];
|
|
38084
|
+
}
|
|
38085
|
+
getDriftUnknownPaths(resourceType, properties) {
|
|
38086
|
+
if (resourceType !== "AWS::Budgets::Budget") return [];
|
|
38087
|
+
const budget = properties?.["Budget"];
|
|
38088
|
+
if (!isPlainRecord(budget)) return [];
|
|
38089
|
+
const paths = [];
|
|
38090
|
+
if (budget["AutoAdjustData"] != null || budget["PlannedBudgetLimits"] != null) paths.push("Budget.BudgetLimit");
|
|
38091
|
+
if (budget["FilterExpression"] != null || budget["Metrics"] != null) {
|
|
38092
|
+
if (budget["CostTypes"] != null) paths.push("Budget.CostTypes");
|
|
38093
|
+
if (budget["CostFilters"] != null) paths.push("Budget.CostFilters");
|
|
38094
|
+
}
|
|
38095
|
+
return paths;
|
|
38096
|
+
}
|
|
38097
|
+
canonicalizeDriftProperties(resourceType, side) {
|
|
38098
|
+
return resourceType === "AWS::Budgets::Budget" ? canonicalizeBudgetDriftBag(side) : side;
|
|
38099
|
+
}
|
|
38100
|
+
async canonicalizeDriftPair(resourceType, baseline, aws) {
|
|
38101
|
+
if (resourceType !== "AWS::Budgets::Budget") return {
|
|
38102
|
+
baseline,
|
|
38103
|
+
aws
|
|
38104
|
+
};
|
|
38105
|
+
return {
|
|
38106
|
+
baseline: dropElapsedPlannedLimits(baseline, aws, Date.now()),
|
|
38107
|
+
aws
|
|
38108
|
+
};
|
|
38109
|
+
}
|
|
37823
38110
|
async import(input) {
|
|
37824
38111
|
const rawBudget = input.properties["Budget"] ?? {};
|
|
37825
38112
|
const explicit = input.knownPhysicalId ?? (typeof rawBudget["BudgetName"] === "string" && rawBudget["BudgetName"].length > 0 ? rawBudget["BudgetName"] : void 0);
|
|
@@ -38595,7 +38882,7 @@ var KinesisStreamConsumerProvider = class {
|
|
|
38595
38882
|
if (desc.ConsumerName !== void 0) result["ConsumerName"] = desc.ConsumerName;
|
|
38596
38883
|
if (desc.StreamARN !== void 0) result["StreamARN"] = desc.StreamARN;
|
|
38597
38884
|
try {
|
|
38598
|
-
const tagsResp = await this.getClient().send(new ListTagsForResourceCommand$
|
|
38885
|
+
const tagsResp = await this.getClient().send(new ListTagsForResourceCommand$16({ ResourceARN: physicalId }));
|
|
38599
38886
|
result["Tags"] = normalizeAwsTagsToCfn(tagsResp.Tags);
|
|
38600
38887
|
} catch (err) {
|
|
38601
38888
|
if (err instanceof ResourceNotFoundException$12) return RESOURCE_NOT_FOUND;
|
|
@@ -45097,7 +45384,7 @@ var CodeCommitRepositoryProvider = class {
|
|
|
45097
45384
|
if (!metadata) return void 0;
|
|
45098
45385
|
let tags = [];
|
|
45099
45386
|
if (metadata.Arn) try {
|
|
45100
|
-
const tagsResp = await this.getClient().send(new ListTagsForResourceCommand$
|
|
45387
|
+
const tagsResp = await this.getClient().send(new ListTagsForResourceCommand$17({ resourceArn: metadata.Arn }));
|
|
45101
45388
|
tags = normalizeAwsTagsToCfn(tagsResp.tags);
|
|
45102
45389
|
} catch (err) {
|
|
45103
45390
|
if (err instanceof RepositoryDoesNotExistException) return RESOURCE_NOT_FOUND;
|
|
@@ -45613,7 +45900,7 @@ var S3VectorsProvider = class {
|
|
|
45613
45900
|
if (Object.keys(enc).length > 0) result["EncryptionConfiguration"] = enc;
|
|
45614
45901
|
}
|
|
45615
45902
|
if (bucket?.vectorBucketArn) try {
|
|
45616
|
-
const tagsResp = await this.getClient().send(new ListTagsForResourceCommand$
|
|
45903
|
+
const tagsResp = await this.getClient().send(new ListTagsForResourceCommand$18({ resourceArn: bucket.vectorBucketArn }));
|
|
45617
45904
|
result["Tags"] = normalizeAwsTagsToCfn(tagsResp.tags);
|
|
45618
45905
|
} catch (err) {
|
|
45619
45906
|
this.logger.debug(`S3Vectors ListTagsForResource(${bucket.vectorBucketArn}) failed: ${describeAwsFailure(err).detail}`);
|
|
@@ -45885,7 +46172,7 @@ var S3DirectoryBucketProvider = class {
|
|
|
45885
46172
|
async readTags(bucketName) {
|
|
45886
46173
|
const accountId = await this.getAccountId();
|
|
45887
46174
|
const resourceArn = await this.buildBucketArn(bucketName, accountId);
|
|
45888
|
-
const resp = await this.getS3ControlClient().send(new ListTagsForResourceCommand$
|
|
46175
|
+
const resp = await this.getS3ControlClient().send(new ListTagsForResourceCommand$19({
|
|
45889
46176
|
AccountId: accountId,
|
|
45890
46177
|
ResourceArn: resourceArn
|
|
45891
46178
|
}));
|
|
@@ -46540,7 +46827,7 @@ var S3TablesProvider = class {
|
|
|
46540
46827
|
}
|
|
46541
46828
|
async readTagsBestEffort(resourceArn) {
|
|
46542
46829
|
try {
|
|
46543
|
-
const tags = (await this.getClient().send(new ListTagsForResourceCommand$
|
|
46830
|
+
const tags = (await this.getClient().send(new ListTagsForResourceCommand$20({ resourceArn }))).tags ?? {};
|
|
46544
46831
|
const out = [];
|
|
46545
46832
|
for (const [Key, Value] of Object.entries(tags)) out.push({
|
|
46546
46833
|
Key,
|
|
@@ -47665,4 +47952,4 @@ var ACMCertificateProvider = class {
|
|
|
47665
47952
|
|
|
47666
47953
|
//#endregion
|
|
47667
47954
|
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 };
|
|
47668
|
-
//# sourceMappingURL=provider-classes-
|
|
47955
|
+
//# sourceMappingURL=provider-classes-CDtquwkU.js.map
|