@go-to-k/cdkd 0.269.3 → 0.271.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -10
- package/dist/{asg-provider-D-XHoXeI.js → asg-provider-CpHXw10b.js} +2 -2
- package/dist/{asg-provider-D-XHoXeI.js.map → asg-provider-CpHXw10b.js.map} +1 -1
- package/dist/cli.js +386 -116
- package/dist/cli.js.map +1 -1
- package/dist/{deploy-engine-B-igYtBj.js → deploy-engine-DlTH1ou6.js} +25 -6
- package/dist/{deploy-engine-B-igYtBj.js.map → deploy-engine-DlTH1ou6.js.map} +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { $ as WorkGraph, A as slowCcOperationTimeoutMs, At as warnDeprecatedNoPrefixCliFlag, B as applyRoleArnIfSet, Bt as resolveBucketRegion, C as yellow, Ct as resolveAutoAssetStorage, D as ProviderRegistry, Dt as resolveStateBucketWithDefaultAndSource, E as clearOnUpdateRemoval, Et as resolveStateBucketWithDefault, F as refStateLookupFromResource, Ft as uploadCfnTemplate, G as DagBuilder, H as describeTypeWithThrottleRetry, Ht as getAwsClients, I as WAFv2WebACLProvider, It as expectedOwnerParam, J as S3StateBackend, K as TemplateParser, Kt as CdkdError, L as normalizeAwsTagsToCfn, Lt as AssemblyReader, M as isTerminationProtectionPropagationError, Mt as CFN_TEMPLATE_URL_LIMIT, N as IntrinsicFunctionResolver, Nt as MIGRATE_TMP_PREFIX, O as findActionableSilentDrops, Ot as resolveUseCdkBootstrapAssets, P as cfnRefValueFromPhysicalId, Pt as findLargeInlineResources, Q as stringifyValue, Qt as LocalStartServiceError, R as resolveExplicitPhysicalId, Rt as processStackMessages, S as red, St as resolveApp, T as collectInlinePolicyNamesManagedBySiblings, Tt as resolveSkipPrefix, U as withRetry, Ut as resetAwsClients, V as DiffCalculator, Vt as AwsClients, W as isRetryableTransientError, Wt as setAwsClients, X as shouldRetainResource, Xt as LocalInvokeBuildError$1, Y as rebuildClientForBucketRegion, Yt as DeployCancelledError, Z as AssetPublisher, Zt as LocalMigrateError, _ as formatResourceLine, _t as getDockerImageBySourceHash, a as DeploymentEventsStore, an as ResourceUpdateNotSupportedError, at as BOOTSTRAP_MARKER_PREFIX, b as gray, bt as getDefaultStateBucketName, c as replayFailedOperations, ct as parseBootstrapMarker, d as IMPLICIT_DELETE_DEPENDENCIES, dt as buildDockerImage, en as MissingCdkCliError, et as buildAssetRedirectMap, f as computeImplicitDeleteEdges, fn as normalizeAwsError, ft as formatDockerLoginError, g as renderStatefulReason, gt as AssetManifestLoader, h as isStatefulRecreateTargetSync, ht as runDockerStreaming, i as DeploymentEventsReader, in as ResourceTimeoutError, it as AssetModeResolver, j as disableInstanceApiTermination, jt as CFN_TEMPLATE_BODY_LIMIT, k as CloudControlProvider, kt as stateBucketExistenceConfirmed, l as replayRollback, lt as validateAssetBucketName, m as MULTI_REGION_RECREATE_BLOCKED_TYPES, mt as runDockerForeground, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nn as PartialFailureError, nt as loadPublishableAssetManifest, o as planFailedOps, on as StackHasActiveImportsError, ot as ensureAssetStorage, p as extractDeploymentEventError, pn as withErrorHandling, pt as getDockerCmd, q as LockManager, r as DeployEngine, rn as ProvisioningError, rt as rewriteTemplateAssetReferences, s as planRollback, sn as StackTerminationProtectionError, st as getBootstrapMarkerKey, t as DEFAULT_RESOURCE_TIMEOUT_MS, tn as NestedStackChildDirectDestroyError, tt as createAssetRedirectResolver, u as withResourceDeadline, ut as validateContainerRepoName, v as bold, vt as Synthesizer, w as IAMRoleProvider, wt as resolveCaptureObservedState, x as green, xt as getLegacyStateBucketName, y as cyan, yt as synthesisStatusMessage, z as assertRegionMatch } from "./deploy-engine-
|
|
2
|
+
import { $ as WorkGraph, A as slowCcOperationTimeoutMs, At as warnDeprecatedNoPrefixCliFlag, B as applyRoleArnIfSet, Bt as resolveBucketRegion, C as yellow, Ct as resolveAutoAssetStorage, D as ProviderRegistry, Dt as resolveStateBucketWithDefaultAndSource, E as clearOnUpdateRemoval, Et as resolveStateBucketWithDefault, F as refStateLookupFromResource, Ft as uploadCfnTemplate, G as DagBuilder, H as describeTypeWithThrottleRetry, Ht as getAwsClients, I as WAFv2WebACLProvider, It as expectedOwnerParam, J as S3StateBackend, K as TemplateParser, Kt as CdkdError, L as normalizeAwsTagsToCfn, Lt as AssemblyReader, M as isTerminationProtectionPropagationError, Mt as CFN_TEMPLATE_URL_LIMIT, N as IntrinsicFunctionResolver, Nt as MIGRATE_TMP_PREFIX, O as findActionableSilentDrops, Ot as resolveUseCdkBootstrapAssets, P as cfnRefValueFromPhysicalId, Pt as findLargeInlineResources, Q as stringifyValue, Qt as LocalStartServiceError, R as resolveExplicitPhysicalId, Rt as processStackMessages, S as red, St as resolveApp, T as collectInlinePolicyNamesManagedBySiblings, Tt as resolveSkipPrefix, U as withRetry, Ut as resetAwsClients, V as DiffCalculator, Vt as AwsClients, W as isRetryableTransientError, Wt as setAwsClients, X as shouldRetainResource, Xt as LocalInvokeBuildError$1, Y as rebuildClientForBucketRegion, Yt as DeployCancelledError, Z as AssetPublisher, Zt as LocalMigrateError, _ as formatResourceLine, _t as getDockerImageBySourceHash, a as DeploymentEventsStore, an as ResourceUpdateNotSupportedError, at as BOOTSTRAP_MARKER_PREFIX, b as gray, bt as getDefaultStateBucketName, c as replayFailedOperations, ct as parseBootstrapMarker, d as IMPLICIT_DELETE_DEPENDENCIES, dt as buildDockerImage, en as MissingCdkCliError, et as buildAssetRedirectMap, f as computeImplicitDeleteEdges, fn as normalizeAwsError, ft as formatDockerLoginError, g as renderStatefulReason, gt as AssetManifestLoader, h as isStatefulRecreateTargetSync, ht as runDockerStreaming, i as DeploymentEventsReader, in as ResourceTimeoutError, it as AssetModeResolver, j as disableInstanceApiTermination, jt as CFN_TEMPLATE_BODY_LIMIT, k as CloudControlProvider, kt as stateBucketExistenceConfirmed, l as replayRollback, lt as validateAssetBucketName, m as MULTI_REGION_RECREATE_BLOCKED_TYPES, mt as runDockerForeground, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nn as PartialFailureError, nt as loadPublishableAssetManifest, o as planFailedOps, on as StackHasActiveImportsError, ot as ensureAssetStorage, p as extractDeploymentEventError, pn as withErrorHandling, pt as getDockerCmd, q as LockManager, r as DeployEngine, rn as ProvisioningError, rt as rewriteTemplateAssetReferences, s as planRollback, sn as StackTerminationProtectionError, st as getBootstrapMarkerKey, t as DEFAULT_RESOURCE_TIMEOUT_MS, tn as NestedStackChildDirectDestroyError, tt as createAssetRedirectResolver, u as withResourceDeadline, ut as validateContainerRepoName, v as bold, vt as Synthesizer, w as IAMRoleProvider, wt as resolveCaptureObservedState, x as green, xt as getLegacyStateBucketName, y as cyan, yt as synthesisStatusMessage, z as assertRegionMatch } from "./deploy-engine-DlTH1ou6.js";
|
|
3
3
|
import { a as getLiveRenderer, c as PATTERN_B_RESOURCE_TYPES, d as generateResourceNameWithFallback, f as withSkipPrefix, i as runStackBuffered, n as getLogger, o as PATTERN_B_NAME_OPTIONS, p as withStackName, s as PATTERN_B_NAME_PROPERTIES, u as generateResourceName } from "./logger-BYMEE-BS.js";
|
|
4
|
-
import { t as ASGProvider } from "./asg-provider-
|
|
4
|
+
import { t as ASGProvider } from "./asg-provider-CpHXw10b.js";
|
|
5
5
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
6
6
|
import { createHash, randomBytes, randomUUID } from "node:crypto";
|
|
7
7
|
import { CopyObjectCommand, CreateBucketCommand, DeleteBucketAnalyticsConfigurationCommand, DeleteBucketCommand, DeleteBucketCorsCommand, DeleteBucketIntelligentTieringConfigurationCommand, DeleteBucketInventoryConfigurationCommand, DeleteBucketLifecycleCommand, DeleteBucketMetricsConfigurationCommand, DeleteBucketPolicyCommand, DeleteBucketReplicationCommand, DeleteBucketTaggingCommand, DeleteBucketWebsiteCommand, DeleteObjectsCommand, GetBucketAccelerateConfigurationCommand, GetBucketCorsCommand, GetBucketEncryptionCommand, GetBucketLifecycleConfigurationCommand, GetBucketLocationCommand, GetBucketLoggingCommand, GetBucketNotificationConfigurationCommand, 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, PutObjectCommand, PutObjectLockConfigurationCommand, PutPublicAccessBlockCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
|
|
@@ -18,11 +18,11 @@ import { CreateEventBusCommand, DeleteEventBusCommand, DeleteRuleCommand, Descri
|
|
|
18
18
|
import { CreateSecretCommand, DeleteSecretCommand, DescribeSecretCommand, GetSecretValueCommand, RemoveRegionsFromReplicationCommand, ReplicateSecretToRegionsCommand, ResourceNotFoundException as ResourceNotFoundException$3, SecretsManagerClient, TagResourceCommand as TagResourceCommand$5, UntagResourceCommand as UntagResourceCommand$5, UpdateSecretCommand } from "@aws-sdk/client-secrets-manager";
|
|
19
19
|
import { AddTagsToResourceCommand, DeleteParameterCommand, DescribeParametersCommand, GetParameterCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$2, ParameterNotFound, PutParameterCommand, RemoveTagsFromResourceCommand, SSMClient } from "@aws-sdk/client-ssm";
|
|
20
20
|
import { CloudFrontClient, CreateCloudFrontOriginAccessIdentityCommand, CreateDistributionCommand, CreateDistributionWithTagsCommand, CreateOriginAccessControlCommand, DeleteCloudFrontOriginAccessIdentityCommand, DeleteDistributionCommand, DeleteOriginAccessControlCommand, GetCloudFrontOriginAccessIdentityCommand, GetDistributionCommand, GetDistributionConfigCommand, GetOriginAccessControlCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$3, NoSuchCloudFrontOriginAccessIdentity, NoSuchDistribution, NoSuchOriginAccessControl, TagResourceCommand as TagResourceCommand$6, UntagResourceCommand as UntagResourceCommand$6, UpdateCloudFrontOriginAccessIdentityCommand, UpdateDistributionCommand, UpdateOriginAccessControlCommand } from "@aws-sdk/client-cloudfront";
|
|
21
|
-
import { CloudWatchClient, DeleteAlarmsCommand, DescribeAlarmsCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$4, PutMetricAlarmCommand, TagResourceCommand as TagResourceCommand$7, UntagResourceCommand as UntagResourceCommand$7 } from "@aws-sdk/client-cloudwatch";
|
|
22
|
-
import { AssociateKmsKeyCommand, CloudWatchLogsClient, CreateLogGroupCommand, DeleteDataProtectionPolicyCommand, DeleteIndexPolicyCommand, DeleteLogGroupCommand, DeleteRetentionPolicyCommand, DescribeIndexPoliciesCommand, DescribeLogGroupsCommand, DisassociateKmsKeyCommand, GetDataProtectionPolicyCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$5, PutBearerTokenAuthenticationCommand, PutDataProtectionPolicyCommand, PutIndexPolicyCommand, PutLogGroupDeletionProtectionCommand, PutRetentionPolicyCommand, ResourceAlreadyExistsException, ResourceNotFoundException as ResourceNotFoundException$
|
|
23
|
-
import { BedrockAgentCoreControlClient, CreateAgentRuntimeCommand, CreateEvaluatorCommand, DeleteAgentRuntimeCommand, DeleteEvaluatorCommand, GetAgentRuntimeCommand, GetBrowserCommand, GetCodeInterpreterCommand, GetEvaluatorCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$6, ResourceNotFoundException as ResourceNotFoundException$
|
|
24
|
-
import { ACMClient, AddTagsToCertificateCommand, DeleteCertificateCommand, DescribeCertificateCommand, ListTagsForCertificateCommand, RemoveTagsFromCertificateCommand, RequestCertificateCommand, ResourceNotFoundException as ResourceNotFoundException$
|
|
25
|
-
import { CreateMicrovmImageCommand, DeleteMicrovmImageCommand, GetMicrovmImageCommand, LambdaMicrovmsClient, ListTagsCommand as ListTagsCommand$1, ResourceNotFoundException as ResourceNotFoundException$
|
|
21
|
+
import { CloudWatchClient, DeleteAlarmsCommand, DeleteAnomalyDetectorCommand, DescribeAlarmsCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$4, PutAnomalyDetectorCommand, PutMetricAlarmCommand, ResourceNotFoundException as ResourceNotFoundException$4, TagResourceCommand as TagResourceCommand$7, UntagResourceCommand as UntagResourceCommand$7 } from "@aws-sdk/client-cloudwatch";
|
|
22
|
+
import { AssociateKmsKeyCommand, CloudWatchLogsClient, CreateLogGroupCommand, DeleteDataProtectionPolicyCommand, DeleteIndexPolicyCommand, DeleteLogGroupCommand, DeleteRetentionPolicyCommand, DescribeIndexPoliciesCommand, DescribeLogGroupsCommand, DisassociateKmsKeyCommand, GetDataProtectionPolicyCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$5, PutBearerTokenAuthenticationCommand, PutDataProtectionPolicyCommand, PutIndexPolicyCommand, PutLogGroupDeletionProtectionCommand, PutRetentionPolicyCommand, ResourceAlreadyExistsException, ResourceNotFoundException as ResourceNotFoundException$5, TagResourceCommand as TagResourceCommand$8, UntagResourceCommand as UntagResourceCommand$8 } from "@aws-sdk/client-cloudwatch-logs";
|
|
23
|
+
import { BedrockAgentCoreControlClient, CreateAgentRuntimeCommand, CreateEvaluatorCommand, DeleteAgentRuntimeCommand, DeleteEvaluatorCommand, GetAgentRuntimeCommand, GetBrowserCommand, GetCodeInterpreterCommand, GetEvaluatorCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$6, ResourceNotFoundException as ResourceNotFoundException$6, TagResourceCommand as TagResourceCommand$9, UntagResourceCommand as UntagResourceCommand$9, UpdateAgentRuntimeCommand, UpdateEvaluatorCommand } from "@aws-sdk/client-bedrock-agentcore-control";
|
|
24
|
+
import { ACMClient, AddTagsToCertificateCommand, DeleteCertificateCommand, DescribeCertificateCommand, ListTagsForCertificateCommand, RemoveTagsFromCertificateCommand, RequestCertificateCommand, ResourceNotFoundException as ResourceNotFoundException$7, UpdateCertificateOptionsCommand } from "@aws-sdk/client-acm";
|
|
25
|
+
import { CreateMicrovmImageCommand, DeleteMicrovmImageCommand, GetMicrovmImageCommand, LambdaMicrovmsClient, ListTagsCommand as ListTagsCommand$1, ResourceNotFoundException as ResourceNotFoundException$8, TagResourceCommand as TagResourceCommand$10, UntagResourceCommand as UntagResourceCommand$10, UpdateMicrovmImageCommand } from "@aws-sdk/client-lambda-microvms";
|
|
26
26
|
import * as fs from "node:fs";
|
|
27
27
|
import { cpSync, existsSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, rmSync, statSync, writeFileSync } from "node:fs";
|
|
28
28
|
import * as path from "node:path";
|
|
@@ -48,23 +48,23 @@ import { CreateStateMachineCommand, DeleteStateMachineCommand, DescribeStateMach
|
|
|
48
48
|
import { CreateClusterCommand, CreateServiceCommand, DeleteClusterCommand, DeleteServiceCommand, DeregisterTaskDefinitionCommand, DescribeClustersCommand, DescribeServicesCommand, DescribeTaskDefinitionCommand, ECSClient, PutClusterCapacityProvidersCommand, RegisterTaskDefinitionCommand, TagResourceCommand as TagResourceCommand$14, UntagResourceCommand as UntagResourceCommand$14, UpdateClusterCommand, UpdateServiceCommand, waitUntilServicesStable } from "@aws-sdk/client-ecs";
|
|
49
49
|
import { AddTagsToResourceCommand as AddTagsToResourceCommand$3, CreateDBClusterCommand as CreateDBClusterCommand$1, CreateDBInstanceCommand as CreateDBInstanceCommand$1, CreateDBSubnetGroupCommand as CreateDBSubnetGroupCommand$1, DeleteDBClusterCommand as DeleteDBClusterCommand$1, DeleteDBInstanceCommand as DeleteDBInstanceCommand$1, DeleteDBSubnetGroupCommand as DeleteDBSubnetGroupCommand$1, DescribeDBClustersCommand as DescribeDBClustersCommand$1, DescribeDBInstancesCommand as DescribeDBInstancesCommand$1, DescribeDBSubnetGroupsCommand as DescribeDBSubnetGroupsCommand$1, DocDBClient, ListTagsForResourceCommand as ListTagsForResourceCommand$12, ModifyDBClusterCommand as ModifyDBClusterCommand$1, ModifyDBInstanceCommand as ModifyDBInstanceCommand$1, ModifyDBSubnetGroupCommand as ModifyDBSubnetGroupCommand$1, RemoveTagsFromResourceCommand as RemoveTagsFromResourceCommand$3 } from "@aws-sdk/client-docdb";
|
|
50
50
|
import { AddTagsToResourceCommand as AddTagsToResourceCommand$4, CreateDBClusterCommand as CreateDBClusterCommand$2, CreateDBInstanceCommand as CreateDBInstanceCommand$2, CreateDBSubnetGroupCommand as CreateDBSubnetGroupCommand$2, DeleteDBClusterCommand as DeleteDBClusterCommand$2, DeleteDBInstanceCommand as DeleteDBInstanceCommand$2, DeleteDBSubnetGroupCommand as DeleteDBSubnetGroupCommand$2, DescribeDBClustersCommand as DescribeDBClustersCommand$2, DescribeDBInstancesCommand as DescribeDBInstancesCommand$2, DescribeDBSubnetGroupsCommand as DescribeDBSubnetGroupsCommand$2, ListTagsForResourceCommand as ListTagsForResourceCommand$13, ModifyDBClusterCommand as ModifyDBClusterCommand$2, ModifyDBInstanceCommand as ModifyDBInstanceCommand$2, ModifyDBSubnetGroupCommand as ModifyDBSubnetGroupCommand$2, NeptuneClient, RemoveTagsFromResourceCommand as RemoveTagsFromResourceCommand$4 } from "@aws-sdk/client-neptune";
|
|
51
|
-
import { AddCustomAttributesCommand, CognitoIdentityProviderClient, CreateUserPoolCommand, DeleteUserPoolCommand, DescribeUserPoolCommand, GetUserPoolMfaConfigCommand, ListUserPoolsCommand, ResourceNotFoundException as ResourceNotFoundException$
|
|
51
|
+
import { AddCustomAttributesCommand, CognitoIdentityProviderClient, CreateUserPoolCommand, DeleteUserPoolCommand, DescribeUserPoolCommand, GetUserPoolMfaConfigCommand, ListUserPoolsCommand, ResourceNotFoundException as ResourceNotFoundException$9, SetUserPoolMfaConfigCommand, UpdateUserPoolCommand } from "@aws-sdk/client-cognito-identity-provider";
|
|
52
52
|
import { CreateHttpNamespaceCommand, CreatePrivateDnsNamespaceCommand, CreatePublicDnsNamespaceCommand, CreateServiceCommand as CreateServiceCommand$1, DeleteNamespaceCommand, DeleteServiceAttributesCommand, DeleteServiceCommand as DeleteServiceCommand$1, GetNamespaceCommand, GetOperationCommand, GetServiceAttributesCommand, GetServiceCommand, ListNamespacesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$14, NamespaceNotFound, ServiceDiscoveryClient, ServiceNotFound, TagResourceCommand as TagResourceCommand$15, UntagResourceCommand as UntagResourceCommand$15, UpdateHttpNamespaceCommand, UpdatePrivateDnsNamespaceCommand, UpdatePublicDnsNamespaceCommand, UpdateServiceAttributesCommand, UpdateServiceCommand as UpdateServiceCommand$1 } from "@aws-sdk/client-servicediscovery";
|
|
53
53
|
import { AppSyncClient, CreateApiKeyCommand, CreateDataSourceCommand, CreateGraphqlApiCommand, CreateResolverCommand, DeleteApiKeyCommand, DeleteDataSourceCommand, DeleteGraphqlApiCommand, DeleteResolverCommand, GetDataSourceCommand, GetGraphqlApiCommand, GetIntrospectionSchemaCommand, GetResolverCommand, ListApiKeysCommand, NotFoundException as NotFoundException$4, StartSchemaCreationCommand, TagResourceCommand as TagResourceCommand$16, UntagResourceCommand as UntagResourceCommand$16, UpdateApiKeyCommand, UpdateDataSourceCommand, UpdateGraphqlApiCommand, UpdateResolverCommand } from "@aws-sdk/client-appsync";
|
|
54
54
|
import { parse, print } from "graphql";
|
|
55
55
|
import { 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, UpdateConnectionCommand, UpdateCrawlerCommand, UpdateDatabaseCommand, UpdateJobCommand, UpdateTableCommand as UpdateTableCommand$1, UpdateTriggerCommand, UpdateWorkflowCommand } from "@aws-sdk/client-glue";
|
|
56
56
|
import { BudgetsClient, CreateBudgetCommand, CreateNotificationCommand, CreateSubscriberCommand, DeleteBudgetCommand, DeleteNotificationCommand, DeleteSubscriberCommand, DescribeBudgetCommand, DuplicateRecordException, NotFoundException as NotFoundException$5, TagResourceCommand as TagResourceCommand$17, UntagResourceCommand as UntagResourceCommand$17, UpdateBudgetCommand } from "@aws-sdk/client-budgets";
|
|
57
|
-
import { AddTagsToStreamCommand, CreateStreamCommand, DecreaseStreamRetentionPeriodCommand, DeleteStreamCommand, DeregisterStreamConsumerCommand, DescribeStreamCommand, DescribeStreamConsumerCommand, DescribeStreamSummaryCommand, IncreaseStreamRetentionPeriodCommand, KinesisClient, ListTagsForResourceCommand as ListTagsForResourceCommand$15, ListTagsForStreamCommand, RegisterStreamConsumerCommand, RemoveTagsFromStreamCommand, ResourceNotFoundException as ResourceNotFoundException$
|
|
58
|
-
import { CreateScheduleCommand, DeleteScheduleCommand, GetScheduleCommand, ResourceNotFoundException as ResourceNotFoundException$
|
|
57
|
+
import { AddTagsToStreamCommand, CreateStreamCommand, DecreaseStreamRetentionPeriodCommand, DeleteStreamCommand, DeregisterStreamConsumerCommand, DescribeStreamCommand, DescribeStreamConsumerCommand, DescribeStreamSummaryCommand, IncreaseStreamRetentionPeriodCommand, KinesisClient, ListTagsForResourceCommand as ListTagsForResourceCommand$15, ListTagsForStreamCommand, RegisterStreamConsumerCommand, RemoveTagsFromStreamCommand, ResourceNotFoundException as ResourceNotFoundException$10, StartStreamEncryptionCommand, StopStreamEncryptionCommand, TagResourceCommand as TagResourceCommand$18, UntagResourceCommand as UntagResourceCommand$18, UpdateShardCountCommand, UpdateStreamModeCommand } from "@aws-sdk/client-kinesis";
|
|
58
|
+
import { CreateScheduleCommand, DeleteScheduleCommand, GetScheduleCommand, ResourceNotFoundException as ResourceNotFoundException$11, SchedulerClient, UpdateScheduleCommand } from "@aws-sdk/client-scheduler";
|
|
59
59
|
import { AccessPointNotFound, CreateAccessPointCommand, CreateFileSystemCommand, CreateMountTargetCommand, DeleteAccessPointCommand, DeleteFileSystemCommand, DeleteMountTargetCommand, DescribeAccessPointsCommand, DescribeBackupPolicyCommand, DescribeFileSystemPolicyCommand, DescribeFileSystemsCommand, DescribeLifecycleConfigurationCommand, DescribeMountTargetSecurityGroupsCommand, DescribeMountTargetsCommand, EFSClient, FileSystemNotFound, ModifyMountTargetSecurityGroupsCommand, MountTargetNotFound, PutBackupPolicyCommand, PutFileSystemPolicyCommand, PutLifecycleConfigurationCommand, UpdateFileSystemCommand, UpdateFileSystemProtectionCommand } from "@aws-sdk/client-efs";
|
|
60
60
|
import { CreateFileSystemCommand as CreateFileSystemCommand$1, CreateFileSystemFromBackupCommand, DeleteFileSystemCommand as DeleteFileSystemCommand$1, DescribeFileSystemsCommand as DescribeFileSystemsCommand$1, FSxClient, FileSystemNotFound as FileSystemNotFound$1, TagResourceCommand as TagResourceCommand$19, UntagResourceCommand as UntagResourceCommand$19, UpdateFileSystemCommand as UpdateFileSystemCommand$1 } from "@aws-sdk/client-fsx";
|
|
61
61
|
import { AddInstanceFleetCommand, AddInstanceGroupsCommand, AddTagsCommand as AddTagsCommand$1, DescribeClusterCommand, EMRClient, InvalidRequestException, ListInstanceFleetsCommand, ListInstanceGroupsCommand, ModifyClusterCommand, ModifyInstanceFleetCommand, ModifyInstanceGroupsCommand, PutAutoScalingPolicyCommand, PutAutoTerminationPolicyCommand, PutManagedScalingPolicyCommand, RemoveAutoScalingPolicyCommand, RemoveAutoTerminationPolicyCommand, RemoveManagedScalingPolicyCommand, RemoveTagsCommand as RemoveTagsCommand$1, RunJobFlowCommand, SetTerminationProtectionCommand, SetVisibleToAllUsersCommand, TerminateJobFlowsCommand } from "@aws-sdk/client-emr";
|
|
62
|
-
import { CreateDeliveryStreamCommand, DeleteDeliveryStreamCommand, DescribeDeliveryStreamCommand, FirehoseClient, ListTagsForDeliveryStreamCommand, ResourceNotFoundException as ResourceNotFoundException$
|
|
62
|
+
import { CreateDeliveryStreamCommand, DeleteDeliveryStreamCommand, DescribeDeliveryStreamCommand, FirehoseClient, ListTagsForDeliveryStreamCommand, ResourceNotFoundException as ResourceNotFoundException$12, TagDeliveryStreamCommand, UntagDeliveryStreamCommand, UpdateDestinationCommand } from "@aws-sdk/client-firehose";
|
|
63
63
|
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";
|
|
64
|
-
import { BatchGetProjectsCommand, CodeBuildClient, CreateProjectCommand, DeleteProjectCommand, ResourceNotFoundException as ResourceNotFoundException$
|
|
64
|
+
import { BatchGetProjectsCommand, CodeBuildClient, CreateProjectCommand, DeleteProjectCommand, ResourceNotFoundException as ResourceNotFoundException$13, UpdateProjectCommand } from "@aws-sdk/client-codebuild";
|
|
65
65
|
import { CodeCommitClient, CreateCommitCommand, CreateRepositoryCommand as CreateRepositoryCommand$1, DeleteRepositoryCommand as DeleteRepositoryCommand$1, GetRepositoryCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$16, PutRepositoryTriggersCommand, RepositoryDoesNotExistException, TagResourceCommand as TagResourceCommand$20, UntagResourceCommand as UntagResourceCommand$20, UpdateRepositoryDescriptionCommand, UpdateRepositoryEncryptionKeyCommand, UpdateRepositoryNameCommand } from "@aws-sdk/client-codecommit";
|
|
66
66
|
import AdmZip from "adm-zip";
|
|
67
|
-
import { CreateLifecyclePolicyCommand, DLMClient, DeleteLifecyclePolicyCommand as DeleteLifecyclePolicyCommand$1, GetLifecyclePolicyCommand as GetLifecyclePolicyCommand$1, ResourceNotFoundException as ResourceNotFoundException$
|
|
67
|
+
import { CreateLifecyclePolicyCommand, DLMClient, DeleteLifecyclePolicyCommand as DeleteLifecyclePolicyCommand$1, GetLifecyclePolicyCommand as GetLifecyclePolicyCommand$1, ResourceNotFoundException as ResourceNotFoundException$14, TagResourceCommand as TagResourceCommand$21, UntagResourceCommand as UntagResourceCommand$21, UpdateLifecyclePolicyCommand } from "@aws-sdk/client-dlm";
|
|
68
68
|
import { CreateVectorBucketCommand, DeleteIndexCommand, DeleteVectorBucketCommand, GetVectorBucketCommand, ListIndexesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$17, S3VectorsClient, TagResourceCommand as TagResourceCommand$22, UntagResourceCommand as UntagResourceCommand$22 } from "@aws-sdk/client-s3vectors";
|
|
69
69
|
import { CreateNamespaceCommand, CreateTableBucketCommand, CreateTableCommand as CreateTableCommand$2, DeleteNamespaceCommand as DeleteNamespaceCommand$1, DeleteTableBucketCommand, DeleteTableCommand as DeleteTableCommand$2, GetTableBucketCommand, GetTableCommand as GetTableCommand$1, ListNamespacesCommand as ListNamespacesCommand$1, ListTableBucketsCommand, ListTablesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$18, NotFoundException as NotFoundException$6, S3TablesClient, TagResourceCommand as TagResourceCommand$23, UntagResourceCommand as UntagResourceCommand$23 } from "@aws-sdk/client-s3tables";
|
|
70
70
|
import { Document, Pair, Scalar, YAMLMap, YAMLSeq, parse as parse$1, stringify } from "yaml";
|
|
@@ -347,32 +347,41 @@ function ensureWarnAfter(opts) {
|
|
|
347
347
|
return opts.resourceWarnAfter;
|
|
348
348
|
}
|
|
349
349
|
/**
|
|
350
|
-
* Skip waiting for async-stabilization resources (
|
|
351
|
-
*
|
|
352
|
-
*
|
|
350
|
+
* Skip waiting for async-stabilization resources (RDS, ElastiCache,
|
|
351
|
+
* NAT Gateway, EC2 Instance, ELBv2 LoadBalancer, Lambda MicroVM Image)
|
|
352
|
+
* on deploy. Setting the flag mutates
|
|
353
353
|
* `process.env.CDKD_NO_WAIT='true'`; provider code checks that env
|
|
354
354
|
* var, not the parsed CLI option (this lets nested call paths — e.g.
|
|
355
355
|
* asset publish, lifecycle hooks — see the same setting without
|
|
356
356
|
* threading the flag through every function signature).
|
|
357
357
|
*
|
|
358
|
+
* CloudFront Distribution left this list with issue #1282: its
|
|
359
|
+
* `Deployed` wait is skipped by DEFAULT now, so under `--no-wait` it
|
|
360
|
+
* simply behaves the same as the default (`--full-wait` opts back in).
|
|
361
|
+
*
|
|
358
362
|
* Deploy-only. NAT Gateway destroy always waits regardless (a
|
|
359
363
|
* still-`deleting` gateway blocks downstream Subnet / IGW / VPC
|
|
360
|
-
* delete with DependencyViolation),
|
|
361
|
-
*
|
|
362
|
-
*
|
|
364
|
+
* delete with DependencyViolation), RDS / ElastiCache destroy paths
|
|
365
|
+
* don't wait to begin with, and CloudFront's destroy-side
|
|
366
|
+
* disable-then-wait is an API requirement no flag may skip — so
|
|
367
|
+
* `destroy --no-wait` would be a no-op flag.
|
|
363
368
|
*/
|
|
364
|
-
const noWaitOption = new Option("--no-wait", "Skip waiting for async resources to stabilize (
|
|
369
|
+
const noWaitOption = new Option("--no-wait", "Skip waiting for async resources to stabilize (RDS, ElastiCache, NAT Gateway, EC2 Instance, ELBv2 LoadBalancer, Lambda MicroVM Image)");
|
|
365
370
|
/**
|
|
366
|
-
* Opt in to the stabilization waits cdkd deliberately SKIPS by default
|
|
367
|
-
*
|
|
368
|
-
*
|
|
371
|
+
* Opt in to the stabilization waits cdkd deliberately SKIPS by default.
|
|
372
|
+
* Today that is ECS Service steady state (create and update; a
|
|
373
|
+
* "CloudFormation waits, Terraform does not" disagree-case) and
|
|
374
|
+
* CloudFront Distribution `Deployed` (create and update; both engines
|
|
375
|
+
* wait, but the wait has no in-deploy consumer and no failure signal —
|
|
376
|
+
* the fast-side clause, issue #1282).
|
|
369
377
|
*
|
|
370
378
|
* `--no-wait`, the default, and `--full-wait` are three points on one
|
|
371
379
|
* axis, from least to most waiting:
|
|
372
380
|
*
|
|
373
381
|
* - `--no-wait` skip the stabilization waits cdkd performs by default
|
|
374
|
-
* - (default) wait where
|
|
375
|
-
*
|
|
382
|
+
* - (default) wait where the wait is load-bearing (in-deploy
|
|
383
|
+
* consumers / failure detection)
|
|
384
|
+
* - `--full-wait` also wait everywhere CloudFormation waits
|
|
376
385
|
*
|
|
377
386
|
* Which one is right depends on whether anything downstream needs the
|
|
378
387
|
* resource to actually be serving, NOT on where the deploy runs: cutting
|
|
@@ -390,7 +399,7 @@ const noWaitOption = new Option("--no-wait", "Skip waiting for async resources t
|
|
|
390
399
|
*
|
|
391
400
|
* Deploy-only, like `--no-wait`.
|
|
392
401
|
*/
|
|
393
|
-
const fullWaitOption = new Option("--full-wait", "Also wait for stabilizations cdkd skips by default, matching CloudFormation (ECS Service steady state)");
|
|
402
|
+
const fullWaitOption = new Option("--full-wait", "Also wait for stabilizations cdkd skips by default, matching CloudFormation (ECS Service steady state, CloudFront Distribution Deployed)");
|
|
394
403
|
/**
|
|
395
404
|
* Reject `--no-wait --full-wait`. They sit at opposite ends of one axis,
|
|
396
405
|
* so a combination has no coherent meaning: the user is asking to both
|
|
@@ -10324,7 +10333,7 @@ var LambdaMicrovmImageProvider = class {
|
|
|
10324
10333
|
try {
|
|
10325
10334
|
await this.client.send(new DeleteMicrovmImageCommand({ imageIdentifier: physicalId }));
|
|
10326
10335
|
} catch (error) {
|
|
10327
|
-
if (error instanceof ResourceNotFoundException$
|
|
10336
|
+
if (error instanceof ResourceNotFoundException$8) {
|
|
10328
10337
|
assertRegionMatch(await this.client.config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
10329
10338
|
this.logger.debug(`MicroVM image ${physicalId} does not exist, skipping deletion`);
|
|
10330
10339
|
return;
|
|
@@ -10369,7 +10378,7 @@ var LambdaMicrovmImageProvider = class {
|
|
|
10369
10378
|
attributes: { ImageArn: arn }
|
|
10370
10379
|
};
|
|
10371
10380
|
} catch (error) {
|
|
10372
|
-
if (error instanceof ResourceNotFoundException$
|
|
10381
|
+
if (error instanceof ResourceNotFoundException$8) return null;
|
|
10373
10382
|
throw error;
|
|
10374
10383
|
}
|
|
10375
10384
|
}
|
|
@@ -10395,7 +10404,7 @@ var LambdaMicrovmImageProvider = class {
|
|
|
10395
10404
|
try {
|
|
10396
10405
|
name = (await this.client.send(new GetMicrovmImageCommand({ imageIdentifier: physicalId }))).name;
|
|
10397
10406
|
} catch (error) {
|
|
10398
|
-
if (error instanceof ResourceNotFoundException$
|
|
10407
|
+
if (error instanceof ResourceNotFoundException$8) return void 0;
|
|
10399
10408
|
throw error;
|
|
10400
10409
|
}
|
|
10401
10410
|
const result = {};
|
|
@@ -10454,7 +10463,7 @@ var LambdaMicrovmImageProvider = class {
|
|
|
10454
10463
|
try {
|
|
10455
10464
|
resp = await this.client.send(new GetMicrovmImageCommand({ imageIdentifier: imageArn }));
|
|
10456
10465
|
} catch (error) {
|
|
10457
|
-
if (error instanceof ResourceNotFoundException$
|
|
10466
|
+
if (error instanceof ResourceNotFoundException$8) return;
|
|
10458
10467
|
throw error;
|
|
10459
10468
|
}
|
|
10460
10469
|
if (resp.state === "DELETE_FAILED") throw new Error(`MicroVM image ${logicalId} (${imageArn}) entered DELETE_FAILED. Check the CloudWatch build logs under /aws/lambda/microvms/ to diagnose.`);
|
|
@@ -13070,7 +13079,7 @@ var LogsLogGroupProvider = class {
|
|
|
13070
13079
|
} else try {
|
|
13071
13080
|
await this.logsClient.send(new DeleteIndexPolicyCommand({ logGroupIdentifier: physicalId }));
|
|
13072
13081
|
} catch (err) {
|
|
13073
|
-
if (!(err instanceof ResourceNotFoundException$
|
|
13082
|
+
if (!(err instanceof ResourceNotFoundException$5)) throw err;
|
|
13074
13083
|
}
|
|
13075
13084
|
const newTags = properties["Tags"];
|
|
13076
13085
|
const oldTags = previousProperties["Tags"];
|
|
@@ -13116,7 +13125,7 @@ var LogsLogGroupProvider = class {
|
|
|
13116
13125
|
await this.logsClient.send(new DeleteLogGroupCommand({ logGroupName: physicalId }));
|
|
13117
13126
|
this.logger.debug(`Successfully deleted log group ${logicalId}`);
|
|
13118
13127
|
} catch (error) {
|
|
13119
|
-
if (error instanceof ResourceNotFoundException$
|
|
13128
|
+
if (error instanceof ResourceNotFoundException$5) {
|
|
13120
13129
|
assertRegionMatch(await this.logsClient.config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
13121
13130
|
this.logger.debug(`Log group ${physicalId} does not exist, skipping deletion`);
|
|
13122
13131
|
return;
|
|
@@ -13207,7 +13216,7 @@ var LogsLogGroupProvider = class {
|
|
|
13207
13216
|
try {
|
|
13208
13217
|
tags = normalizeAwsTagsToCfn((await this.logsClient.send(new ListTagsForResourceCommand$5({ resourceArn: arnForTags }))).tags);
|
|
13209
13218
|
} catch (err) {
|
|
13210
|
-
if (err instanceof ResourceNotFoundException$
|
|
13219
|
+
if (err instanceof ResourceNotFoundException$5) return void 0;
|
|
13211
13220
|
throw err;
|
|
13212
13221
|
}
|
|
13213
13222
|
}
|
|
@@ -13236,7 +13245,7 @@ var LogsLogGroupProvider = class {
|
|
|
13236
13245
|
result["FieldIndexPolicies"] = fieldIndexPolicies;
|
|
13237
13246
|
return result;
|
|
13238
13247
|
} catch (err) {
|
|
13239
|
-
if (err instanceof ResourceNotFoundException$
|
|
13248
|
+
if (err instanceof ResourceNotFoundException$5) return void 0;
|
|
13240
13249
|
throw err;
|
|
13241
13250
|
}
|
|
13242
13251
|
}
|
|
@@ -13255,7 +13264,7 @@ var LogsLogGroupProvider = class {
|
|
|
13255
13264
|
attributes: {}
|
|
13256
13265
|
} : null;
|
|
13257
13266
|
} catch (err) {
|
|
13258
|
-
if (err instanceof ResourceNotFoundException$
|
|
13267
|
+
if (err instanceof ResourceNotFoundException$5) return null;
|
|
13259
13268
|
throw err;
|
|
13260
13269
|
}
|
|
13261
13270
|
return null;
|
|
@@ -13584,6 +13593,233 @@ var CloudWatchAlarmProvider = class {
|
|
|
13584
13593
|
}
|
|
13585
13594
|
};
|
|
13586
13595
|
|
|
13596
|
+
//#endregion
|
|
13597
|
+
//#region src/provisioning/providers/cloudwatch-anomaly-detector-provider.ts
|
|
13598
|
+
/**
|
|
13599
|
+
* AWS CloudWatch AnomalyDetector Provider (issue #1304)
|
|
13600
|
+
*
|
|
13601
|
+
* Implements resource provisioning for AWS::CloudWatch::AnomalyDetector using
|
|
13602
|
+
* the CloudWatch SDK. The type is NON_PROVISIONABLE in the CloudFormation
|
|
13603
|
+
* registry (no Cloud Control handlers), so without this provider cdkd's
|
|
13604
|
+
* pre-flight rejects any template that declares it.
|
|
13605
|
+
*
|
|
13606
|
+
* API mapping: `PutAnomalyDetector` is an UPSERT keyed by the metric
|
|
13607
|
+
* descriptor (the single-metric tuple or the metric-math query set), and
|
|
13608
|
+
* `DeleteAnomalyDetector` takes the same descriptor. There is no
|
|
13609
|
+
* server-generated identifier; the registry schema's read-only `Id`
|
|
13610
|
+
* primaryIdentifier has no Cloud Control handler to mint it. cdkd therefore
|
|
13611
|
+
* derives a DETERMINISTIC physical id from the descriptor (see
|
|
13612
|
+
* {@link derivePhysicalId}) — every descriptor field is createOnly in the
|
|
13613
|
+
* registry schema, so the id is stable across in-place updates
|
|
13614
|
+
* (`Configuration` is the only mutable property).
|
|
13615
|
+
*/
|
|
13616
|
+
var CloudWatchAnomalyDetectorProvider = class {
|
|
13617
|
+
cloudWatchClient;
|
|
13618
|
+
logger = getLogger().child("CloudWatchAnomalyDetectorProvider");
|
|
13619
|
+
/**
|
|
13620
|
+
* NON_PROVISIONABLE type: Cloud Control has no handlers for it, so the
|
|
13621
|
+
* #614 unhandled-property auto-route must never send an
|
|
13622
|
+
* AnomalyDetector template to the CC path (it would fail at deploy time
|
|
13623
|
+
* with no handler). All properties are handled here instead.
|
|
13624
|
+
*/
|
|
13625
|
+
disableCcApiFallback = true;
|
|
13626
|
+
handledProperties = /* @__PURE__ */ new Map([["AWS::CloudWatch::AnomalyDetector", /* @__PURE__ */ new Set([
|
|
13627
|
+
"Namespace",
|
|
13628
|
+
"MetricName",
|
|
13629
|
+
"Stat",
|
|
13630
|
+
"Dimensions",
|
|
13631
|
+
"Configuration",
|
|
13632
|
+
"MetricCharacteristics",
|
|
13633
|
+
"SingleMetricAnomalyDetector",
|
|
13634
|
+
"MetricMathAnomalyDetector"
|
|
13635
|
+
])]]);
|
|
13636
|
+
constructor() {
|
|
13637
|
+
const awsClients = getAwsClients();
|
|
13638
|
+
this.cloudWatchClient = awsClients.cloudWatch;
|
|
13639
|
+
}
|
|
13640
|
+
/**
|
|
13641
|
+
* Create an anomaly detection model via `PutAnomalyDetector`.
|
|
13642
|
+
*/
|
|
13643
|
+
async create(logicalId, resourceType, properties) {
|
|
13644
|
+
this.logger.debug(`Creating CloudWatch anomaly detector ${logicalId}`);
|
|
13645
|
+
const params = buildPutParams(properties);
|
|
13646
|
+
if (!hasDescriptor(params)) throw new ProvisioningError(`AnomalyDetector ${logicalId} needs a metric descriptor: either SingleMetricAnomalyDetector, MetricMathAnomalyDetector, or the top-level Namespace/MetricName/Stat fields`, resourceType, logicalId);
|
|
13647
|
+
try {
|
|
13648
|
+
await this.cloudWatchClient.send(new PutAnomalyDetectorCommand(params));
|
|
13649
|
+
const physicalId = derivePhysicalId(properties);
|
|
13650
|
+
this.logger.debug(`Successfully created CloudWatch anomaly detector ${logicalId}: ${physicalId}`);
|
|
13651
|
+
return {
|
|
13652
|
+
physicalId,
|
|
13653
|
+
attributes: { Id: physicalId }
|
|
13654
|
+
};
|
|
13655
|
+
} catch (error) {
|
|
13656
|
+
const cause = error instanceof Error ? error : void 0;
|
|
13657
|
+
throw new ProvisioningError(`Failed to create CloudWatch anomaly detector ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, void 0, cause);
|
|
13658
|
+
}
|
|
13659
|
+
}
|
|
13660
|
+
/**
|
|
13661
|
+
* Update an anomaly detection model.
|
|
13662
|
+
*
|
|
13663
|
+
* Every descriptor field (Namespace / MetricName / Stat / Dimensions /
|
|
13664
|
+
* SingleMetricAnomalyDetector / MetricMathAnomalyDetector /
|
|
13665
|
+
* MetricCharacteristics) is createOnly in the registry schema, so the
|
|
13666
|
+
* diff layer classifies a change to any of them as a REPLACEMENT and this
|
|
13667
|
+
* method never sees it. The only in-place change is `Configuration`
|
|
13668
|
+
* (excluded time ranges / time zone), which `PutAnomalyDetector` upserts
|
|
13669
|
+
* for the unchanged descriptor.
|
|
13670
|
+
*
|
|
13671
|
+
* Removal semantics: `PutAnomalyDetector` REPLACES the stored
|
|
13672
|
+
* Configuration rather than merging (live-verified 2026-07-31 — a Put
|
|
13673
|
+
* with no `Configuration` resets MetricTimezone + ExcludedTimeRanges to
|
|
13674
|
+
* defaults), so re-putting the full desired properties matches CFn's
|
|
13675
|
+
* "removed property resets to default" behavior with no extra clearing.
|
|
13676
|
+
*/
|
|
13677
|
+
async update(logicalId, physicalId, resourceType, properties, _previousProperties) {
|
|
13678
|
+
this.logger.debug(`Updating CloudWatch anomaly detector ${logicalId}: ${physicalId}`);
|
|
13679
|
+
try {
|
|
13680
|
+
await this.cloudWatchClient.send(new PutAnomalyDetectorCommand(buildPutParams(properties)));
|
|
13681
|
+
this.logger.debug(`Successfully updated CloudWatch anomaly detector ${logicalId}`);
|
|
13682
|
+
return {
|
|
13683
|
+
physicalId,
|
|
13684
|
+
wasReplaced: false,
|
|
13685
|
+
attributes: { Id: physicalId }
|
|
13686
|
+
};
|
|
13687
|
+
} catch (error) {
|
|
13688
|
+
const cause = error instanceof Error ? error : void 0;
|
|
13689
|
+
throw new ProvisioningError(`Failed to update CloudWatch anomaly detector ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, physicalId, cause);
|
|
13690
|
+
}
|
|
13691
|
+
}
|
|
13692
|
+
/**
|
|
13693
|
+
* Delete an anomaly detection model via `DeleteAnomalyDetector`.
|
|
13694
|
+
*
|
|
13695
|
+
* The API takes the metric DESCRIPTOR (not an id), so the state-recorded
|
|
13696
|
+
* `properties` are required to address the model. `ResourceNotFoundException`
|
|
13697
|
+
* is treated as idempotent success (after the shared region check).
|
|
13698
|
+
*/
|
|
13699
|
+
async delete(logicalId, physicalId, resourceType, properties, context) {
|
|
13700
|
+
this.logger.debug(`Deleting CloudWatch anomaly detector ${logicalId}: ${physicalId}`);
|
|
13701
|
+
if (!properties) throw new ProvisioningError(`Cannot delete AnomalyDetector ${logicalId}: the state record carries no properties, and DeleteAnomalyDetector addresses the model by its metric descriptor. Use 'cdkd state orphan <stack>' to drop the record and delete the detector manually.`, resourceType, logicalId, physicalId);
|
|
13702
|
+
try {
|
|
13703
|
+
await this.cloudWatchClient.send(new DeleteAnomalyDetectorCommand(buildDeleteParams(properties)));
|
|
13704
|
+
this.logger.debug(`Successfully deleted CloudWatch anomaly detector ${logicalId}`);
|
|
13705
|
+
} catch (error) {
|
|
13706
|
+
if (error instanceof ResourceNotFoundException$4) {
|
|
13707
|
+
assertRegionMatch(await this.cloudWatchClient.config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
13708
|
+
this.logger.debug(`Anomaly detector ${physicalId} does not exist, skipping deletion`);
|
|
13709
|
+
return;
|
|
13710
|
+
}
|
|
13711
|
+
const cause = error instanceof Error ? error : void 0;
|
|
13712
|
+
throw new ProvisioningError(`Failed to delete CloudWatch anomaly detector ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, physicalId, cause);
|
|
13713
|
+
}
|
|
13714
|
+
}
|
|
13715
|
+
/**
|
|
13716
|
+
* Resolve a `Fn::GetAtt` attribute. The registry schema exposes a single
|
|
13717
|
+
* read-only attribute, `Id` — cdkd's deterministic physical id.
|
|
13718
|
+
*/
|
|
13719
|
+
async getAttribute(physicalId, resourceType, attributeName) {
|
|
13720
|
+
if (attributeName === "Id") return physicalId;
|
|
13721
|
+
throw new ProvisioningError(`Unknown attribute ${attributeName} for ${resourceType} (only 'Id' is defined)`, resourceType, physicalId);
|
|
13722
|
+
}
|
|
13723
|
+
/**
|
|
13724
|
+
* Adopt an existing anomaly detector into cdkd state.
|
|
13725
|
+
*
|
|
13726
|
+
* **Explicit override only.** Anomaly detectors are addressed by their
|
|
13727
|
+
* metric descriptor, carry no tags, and have no name property — there is
|
|
13728
|
+
* nothing to auto-look them up by. Users adopting one should pass
|
|
13729
|
+
* `--resource <logicalId>=<id>` where `<id>` is any stable identifier
|
|
13730
|
+
* (cdkd re-derives the canonical one on the next replacement).
|
|
13731
|
+
*/
|
|
13732
|
+
async import(input) {
|
|
13733
|
+
if (input.knownPhysicalId) return {
|
|
13734
|
+
physicalId: input.knownPhysicalId,
|
|
13735
|
+
attributes: { Id: input.knownPhysicalId }
|
|
13736
|
+
};
|
|
13737
|
+
return null;
|
|
13738
|
+
}
|
|
13739
|
+
};
|
|
13740
|
+
/**
|
|
13741
|
+
* Map CFn-shaped properties onto the `PutAnomalyDetector` input. CloudWatch's
|
|
13742
|
+
* SDK uses the same PascalCase field names as the CloudFormation schema, so
|
|
13743
|
+
* the mapping is structural: the only shape conversion is
|
|
13744
|
+
* `Configuration.ExcludedTimeRanges[].StartTime/EndTime`, which CFn carries
|
|
13745
|
+
* as ISO-8601 strings and the SDK models as `Date`.
|
|
13746
|
+
*/
|
|
13747
|
+
function buildPutParams(properties) {
|
|
13748
|
+
const params = {};
|
|
13749
|
+
const single = properties["SingleMetricAnomalyDetector"];
|
|
13750
|
+
if (single !== void 0) params.SingleMetricAnomalyDetector = single;
|
|
13751
|
+
const math = properties["MetricMathAnomalyDetector"];
|
|
13752
|
+
if (math !== void 0) params.MetricMathAnomalyDetector = math;
|
|
13753
|
+
if (properties["Namespace"] !== void 0) params.Namespace = properties["Namespace"];
|
|
13754
|
+
if (properties["MetricName"] !== void 0) params.MetricName = properties["MetricName"];
|
|
13755
|
+
if (properties["Stat"] !== void 0) params.Stat = properties["Stat"];
|
|
13756
|
+
if (properties["Dimensions"] !== void 0) params.Dimensions = properties["Dimensions"];
|
|
13757
|
+
const configuration = properties["Configuration"];
|
|
13758
|
+
if (configuration !== void 0) {
|
|
13759
|
+
const mapped = {};
|
|
13760
|
+
if (configuration["MetricTimeZone"] !== void 0) mapped.MetricTimezone = configuration["MetricTimeZone"];
|
|
13761
|
+
const ranges = configuration["ExcludedTimeRanges"];
|
|
13762
|
+
if (ranges !== void 0) mapped.ExcludedTimeRanges = ranges.map((r) => ({
|
|
13763
|
+
StartTime: toDate(r["StartTime"]),
|
|
13764
|
+
EndTime: toDate(r["EndTime"])
|
|
13765
|
+
}));
|
|
13766
|
+
params.Configuration = mapped;
|
|
13767
|
+
}
|
|
13768
|
+
const characteristics = properties["MetricCharacteristics"];
|
|
13769
|
+
if (characteristics !== void 0) params.MetricCharacteristics = characteristics;
|
|
13770
|
+
return params;
|
|
13771
|
+
}
|
|
13772
|
+
/**
|
|
13773
|
+
* `DeleteAnomalyDetector` addresses the model by the same descriptor shape as
|
|
13774
|
+
* Put, minus the mutable `Configuration` / `MetricCharacteristics`.
|
|
13775
|
+
*/
|
|
13776
|
+
function buildDeleteParams(properties) {
|
|
13777
|
+
const params = {};
|
|
13778
|
+
const single = properties["SingleMetricAnomalyDetector"];
|
|
13779
|
+
if (single !== void 0) params.SingleMetricAnomalyDetector = single;
|
|
13780
|
+
const math = properties["MetricMathAnomalyDetector"];
|
|
13781
|
+
if (math !== void 0) params.MetricMathAnomalyDetector = math;
|
|
13782
|
+
if (properties["Namespace"] !== void 0) params.Namespace = properties["Namespace"];
|
|
13783
|
+
if (properties["MetricName"] !== void 0) params.MetricName = properties["MetricName"];
|
|
13784
|
+
if (properties["Stat"] !== void 0) params.Stat = properties["Stat"];
|
|
13785
|
+
if (properties["Dimensions"] !== void 0) params.Dimensions = properties["Dimensions"];
|
|
13786
|
+
return params;
|
|
13787
|
+
}
|
|
13788
|
+
/** CFn carries Range times as ISO-8601 strings; the SDK models them as Date. */
|
|
13789
|
+
function toDate(value) {
|
|
13790
|
+
if (value === void 0) return void 0;
|
|
13791
|
+
if (value instanceof Date) return value;
|
|
13792
|
+
const parsed = new Date(String(value));
|
|
13793
|
+
if (Number.isNaN(parsed.getTime())) throw new Error(`Configuration.ExcludedTimeRanges contains an unparsable time value: ${String(value)}`);
|
|
13794
|
+
return parsed;
|
|
13795
|
+
}
|
|
13796
|
+
/**
|
|
13797
|
+
* Derive the deterministic physical id from the metric descriptor.
|
|
13798
|
+
*
|
|
13799
|
+
* Single-metric detectors get a readable composite
|
|
13800
|
+
* (`<Namespace>:<MetricName>:<Stat>[:<Name=Value,...>]`, dimensions sorted by
|
|
13801
|
+
* name so template ordering does not change the id); metric-math detectors
|
|
13802
|
+
* get a content hash of their query set (`math:<sha256-16>`). Descriptor
|
|
13803
|
+
* fields are all createOnly, so the id never changes across in-place updates.
|
|
13804
|
+
*/
|
|
13805
|
+
function derivePhysicalId(properties) {
|
|
13806
|
+
const single = properties["SingleMetricAnomalyDetector"];
|
|
13807
|
+
const namespace = single?.Namespace ?? properties["Namespace"];
|
|
13808
|
+
const metricName = single?.MetricName ?? properties["MetricName"];
|
|
13809
|
+
const stat = single?.Stat ?? properties["Stat"];
|
|
13810
|
+
const dimensions = single?.Dimensions ?? properties["Dimensions"];
|
|
13811
|
+
if (namespace !== void 0 || metricName !== void 0) {
|
|
13812
|
+
const dims = (dimensions ?? []).map((d) => `${d.Name}=${d.Value}`).sort().join(",");
|
|
13813
|
+
const base = `${single?.AccountId !== void 0 ? `${single.AccountId}:` : ""}${namespace ?? ""}:${metricName ?? ""}:${stat ?? ""}`;
|
|
13814
|
+
return dims.length > 0 ? `${base}:${dims}` : base;
|
|
13815
|
+
}
|
|
13816
|
+
const math = properties["MetricMathAnomalyDetector"];
|
|
13817
|
+
return `math:${createHash("sha256").update(JSON.stringify(math ?? {})).digest("hex").slice(0, 16)}`;
|
|
13818
|
+
}
|
|
13819
|
+
function hasDescriptor(params) {
|
|
13820
|
+
return params.SingleMetricAnomalyDetector !== void 0 || params.MetricMathAnomalyDetector !== void 0 || params.Namespace !== void 0 || params.MetricName !== void 0;
|
|
13821
|
+
}
|
|
13822
|
+
|
|
13587
13823
|
//#endregion
|
|
13588
13824
|
//#region src/provisioning/providers/secretsmanager-secret-provider.ts
|
|
13589
13825
|
/**
|
|
@@ -20377,6 +20613,32 @@ var CloudFrontOACProvider = class {
|
|
|
20377
20613
|
}
|
|
20378
20614
|
};
|
|
20379
20615
|
|
|
20616
|
+
//#endregion
|
|
20617
|
+
//#region src/provisioning/resource-timeout-registry.ts
|
|
20618
|
+
let resolved;
|
|
20619
|
+
/**
|
|
20620
|
+
* Seed the registry with the validated `--resource-timeout` input. Call once
|
|
20621
|
+
* per CLI invocation, right after `validateResourceTimeouts`. Passing
|
|
20622
|
+
* `undefined` (flag not supplied) clears the registry, so consumers fall back
|
|
20623
|
+
* to their own compile-time floors.
|
|
20624
|
+
*/
|
|
20625
|
+
function setResolvedResourceTimeouts(opt) {
|
|
20626
|
+
resolved = opt;
|
|
20627
|
+
}
|
|
20628
|
+
/**
|
|
20629
|
+
* The user's resolved timeout for `resourceType` in milliseconds, or
|
|
20630
|
+
* `undefined` when the user supplied nothing applicable. Resolution matches
|
|
20631
|
+
* the outer-deadline sites: per-type override wins, else the explicit global
|
|
20632
|
+
* value. The compile-time default (`DEFAULT_RESOURCE_TIMEOUT_MS`) is
|
|
20633
|
+
* deliberately NOT applied here — an inner waiter's own floor (e.g. ECS 600s)
|
|
20634
|
+
* must only be raised by an EXPLICIT user value, never by the generic 30m
|
|
20635
|
+
* default silently multiplying every `--full-wait` failure by 3x.
|
|
20636
|
+
*/
|
|
20637
|
+
function resolvedResourceTimeoutMs(resourceType) {
|
|
20638
|
+
if (!resolved) return void 0;
|
|
20639
|
+
return resolved.perTypeMs?.[resourceType] ?? resolved.globalMs;
|
|
20640
|
+
}
|
|
20641
|
+
|
|
20380
20642
|
//#endregion
|
|
20381
20643
|
//#region src/provisioning/providers/cloudfront-distribution-provider.ts
|
|
20382
20644
|
/**
|
|
@@ -20449,10 +20711,7 @@ var CloudFrontDistributionProvider = class {
|
|
|
20449
20711
|
const distributionId = distribution.Id;
|
|
20450
20712
|
const domainName = distribution.DomainName;
|
|
20451
20713
|
this.logger.debug(`Created CloudFront Distribution: ${distributionId} (${domainName})`);
|
|
20452
|
-
|
|
20453
|
-
this.logger.debug(`Waiting for Distribution ${distributionId} to reach Deployed status...`);
|
|
20454
|
-
await this.waitForDistributionStable(distributionId);
|
|
20455
|
-
}
|
|
20714
|
+
await this.settleDistribution(logicalId, distributionId);
|
|
20456
20715
|
return {
|
|
20457
20716
|
physicalId: distributionId,
|
|
20458
20717
|
attributes: {
|
|
@@ -20492,6 +20751,7 @@ var CloudFrontDistributionProvider = class {
|
|
|
20492
20751
|
const domainName = getResponse.Distribution?.DomainName ?? "";
|
|
20493
20752
|
const arn = getResponse.Distribution?.ARN;
|
|
20494
20753
|
await this.applyTagDiff(arn, previousProperties["Tags"], properties["Tags"], physicalId, logicalId, resourceType);
|
|
20754
|
+
await this.settleDistribution(logicalId, physicalId);
|
|
20495
20755
|
this.logger.debug(`Updated CloudFront Distribution ${physicalId}`);
|
|
20496
20756
|
return {
|
|
20497
20757
|
physicalId,
|
|
@@ -20542,7 +20802,7 @@ var CloudFrontDistributionProvider = class {
|
|
|
20542
20802
|
IfMatch: etag,
|
|
20543
20803
|
DistributionConfig: config
|
|
20544
20804
|
}))).ETag;
|
|
20545
|
-
await this.waitForDistributionStable(physicalId, false);
|
|
20805
|
+
if (!await this.waitForDistributionStable(physicalId, false)) this.logger.warn(`Distribution ${physicalId} disable did not settle (Deployed + disabled) within the wait budget; attempting delete anyway. If it fails with DistributionNotDisabled, retry the destroy or raise the budget with --resource-timeout AWS::CloudFront::Distribution=<duration>.`);
|
|
20546
20806
|
etag = (await this.cloudFrontClient.send(new GetDistributionConfigCommand({ Id: physicalId }))).ETag;
|
|
20547
20807
|
}
|
|
20548
20808
|
await this.cloudFrontClient.send(new DeleteDistributionCommand({
|
|
@@ -20642,17 +20902,39 @@ var CloudFrontDistributionProvider = class {
|
|
|
20642
20902
|
throw new Error(`Unsupported attribute: ${attributeName} for AWS::CloudFront::Distribution`);
|
|
20643
20903
|
}
|
|
20644
20904
|
/**
|
|
20645
|
-
*
|
|
20905
|
+
* Settle a CloudFront Distribution according to the run's wait mode.
|
|
20646
20906
|
*
|
|
20647
|
-
*
|
|
20648
|
-
*
|
|
20649
|
-
* this
|
|
20650
|
-
*
|
|
20907
|
+
* cdkd does NOT wait for `Deployed` by default (issue #1282). Both
|
|
20908
|
+
* CloudFormation and Terraform (`wait_for_deployment`, default `true`) wait
|
|
20909
|
+
* here, so this is a deliberate divergence under the wait-semantics policy's
|
|
20910
|
+
* fast-side clause: every `Fn::GetAtt` (Id / DomainName) is final in the
|
|
20911
|
+
* Create/Update response so nothing in-deploy consumes `Deployed`, the wait
|
|
20912
|
+
* carries no failure signal (a distribution deploy cannot fail — a long
|
|
20913
|
+
* wait means slow edge propagation, not brokenness), and Terraform's
|
|
20914
|
+
* `wait_for_deployment` toggle keeps the benchmark comparison measurable in
|
|
20915
|
+
* both modes. `--full-wait` opts back into the CloudFormation behavior.
|
|
20916
|
+
*/
|
|
20917
|
+
async settleDistribution(logicalId, distributionId) {
|
|
20918
|
+
if (process.env["CDKD_FULL_WAIT"] === "true") {
|
|
20919
|
+
this.logger.debug(`Waiting for Distribution ${distributionId} to reach Deployed status...`);
|
|
20920
|
+
if (!await this.waitForDistributionStable(distributionId)) this.logger.warn(`CloudFront Distribution ${logicalId} (${distributionId}) did not reach Deployed within the wait budget; continuing (propagation finishes in the background). To wait manually: aws cloudfront wait distribution-deployed --id ${distributionId}. Raise the budget with --resource-timeout AWS::CloudFront::Distribution=<duration>.`);
|
|
20921
|
+
return;
|
|
20922
|
+
}
|
|
20923
|
+
const fullWaitHint = process.env["CDKD_WAIT_FLAGS_AVAILABLE"] === "true" ? "; pass --full-wait to wait" : "";
|
|
20924
|
+
this.logger.info(`CloudFront Distribution ${logicalId} accepted (not waiting for Deployed${fullWaitHint}). To wait manually: aws cloudfront wait distribution-deployed --id ${distributionId}`);
|
|
20925
|
+
}
|
|
20926
|
+
/**
|
|
20927
|
+
* Poll until the distribution reports `Status: Deployed` (and, when
|
|
20928
|
+
* `expectedEnabled` is given, the matching `Enabled` value — the delete
|
|
20929
|
+
* path's disable-then-delete requirement).
|
|
20651
20930
|
*
|
|
20652
|
-
*
|
|
20931
|
+
* Returns `true` when the stable state was observed (or the wait was
|
|
20932
|
+
* interrupted by SIGINT — the caller is shutting down, so no timeout
|
|
20933
|
+
* warning applies), `false` on budget exhaustion.
|
|
20653
20934
|
*/
|
|
20654
20935
|
async waitForDistributionStable(distributionId, expectedEnabled) {
|
|
20655
|
-
const
|
|
20936
|
+
const budgetMs = Math.max(1200 * 1e3, resolvedResourceTimeoutMs("AWS::CloudFront::Distribution") ?? 0);
|
|
20937
|
+
const deadline = Date.now() + budgetMs;
|
|
20656
20938
|
let delay = 5e3;
|
|
20657
20939
|
const maxDelay = 1e4;
|
|
20658
20940
|
let interrupted = false;
|
|
@@ -20661,24 +20943,37 @@ var CloudFrontDistributionProvider = class {
|
|
|
20661
20943
|
};
|
|
20662
20944
|
process.on("SIGINT", sigintHandler);
|
|
20663
20945
|
try {
|
|
20664
|
-
|
|
20946
|
+
while (Date.now() < deadline) {
|
|
20665
20947
|
if (interrupted) {
|
|
20666
20948
|
this.logger.debug(`Distribution ${distributionId} wait interrupted by SIGINT, proceeding`);
|
|
20667
|
-
return;
|
|
20949
|
+
return true;
|
|
20668
20950
|
}
|
|
20669
|
-
|
|
20670
|
-
|
|
20671
|
-
|
|
20672
|
-
|
|
20673
|
-
|
|
20674
|
-
|
|
20951
|
+
let response;
|
|
20952
|
+
try {
|
|
20953
|
+
response = await this.cloudFrontClient.send(new GetDistributionCommand({ Id: distributionId }));
|
|
20954
|
+
} catch (error) {
|
|
20955
|
+
if (error instanceof NoSuchDistribution) throw error;
|
|
20956
|
+
this.logger.debug(`Distribution ${distributionId} status read failed (${error instanceof Error ? error.message : String(error)}); retrying`);
|
|
20957
|
+
}
|
|
20958
|
+
if (response) {
|
|
20959
|
+
const status = response.Distribution?.Status;
|
|
20960
|
+
const enabled = response.Distribution?.DistributionConfig?.Enabled;
|
|
20961
|
+
if (status === "Deployed" && (expectedEnabled === void 0 || enabled === expectedEnabled)) {
|
|
20962
|
+
this.logger.debug(`Distribution ${distributionId} is stable (Status=Deployed, Enabled=${enabled})`);
|
|
20963
|
+
return true;
|
|
20964
|
+
}
|
|
20965
|
+
this.logger.debug(`Distribution ${distributionId} status: ${status}, enabled: ${enabled}` + (expectedEnabled === void 0 ? "" : ` (waiting for Enabled=${expectedEnabled})`));
|
|
20675
20966
|
}
|
|
20676
|
-
this.logger.debug(`Distribution ${distributionId} status: ${status}, enabled: ${enabled}` + (expectedEnabled === void 0 ? "" : ` (waiting for Enabled=${expectedEnabled})`) + ` (attempt ${attempt}/${maxAttempts})`);
|
|
20677
20967
|
const sleepEnd = Date.now() + delay;
|
|
20678
20968
|
while (Date.now() < sleepEnd && !interrupted) await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
20679
20969
|
delay = Math.min(delay * 1.5, maxDelay);
|
|
20680
20970
|
}
|
|
20971
|
+
if (interrupted) {
|
|
20972
|
+
this.logger.debug(`Distribution ${distributionId} wait interrupted by SIGINT, proceeding`);
|
|
20973
|
+
return true;
|
|
20974
|
+
}
|
|
20681
20975
|
this.logger.debug(`Distribution ${distributionId} did not reach stable state within timeout, proceeding with next step`);
|
|
20976
|
+
return false;
|
|
20682
20977
|
} finally {
|
|
20683
20978
|
process.removeListener("SIGINT", sigintHandler);
|
|
20684
20979
|
}
|
|
@@ -21208,7 +21503,7 @@ var AgentCoreRuntimeProvider = class {
|
|
|
21208
21503
|
await this.client.send(new DeleteAgentRuntimeCommand({ agentRuntimeId: physicalId }));
|
|
21209
21504
|
this.logger.debug(`Successfully deleted BedrockAgentCore Runtime ${logicalId}`);
|
|
21210
21505
|
} catch (error) {
|
|
21211
|
-
if (error instanceof ResourceNotFoundException$
|
|
21506
|
+
if (error instanceof ResourceNotFoundException$6) {
|
|
21212
21507
|
assertRegionMatch(await this.client.config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
21213
21508
|
this.logger.debug(`Runtime ${physicalId} does not exist, skipping deletion`);
|
|
21214
21509
|
return;
|
|
@@ -21303,7 +21598,7 @@ var AgentCoreRuntimeProvider = class {
|
|
|
21303
21598
|
try {
|
|
21304
21599
|
resp = await this.client.send(new GetAgentRuntimeCommand({ agentRuntimeId: physicalId }));
|
|
21305
21600
|
} catch (err) {
|
|
21306
|
-
if (err instanceof ResourceNotFoundException$
|
|
21601
|
+
if (err instanceof ResourceNotFoundException$6) return void 0;
|
|
21307
21602
|
throw err;
|
|
21308
21603
|
}
|
|
21309
21604
|
const result = {};
|
|
@@ -21778,7 +22073,7 @@ var AgentCoreEvaluatorProvider = class {
|
|
|
21778
22073
|
await this.client.send(new DeleteEvaluatorCommand({ evaluatorId: evaluatorIdFromArn(physicalId) }));
|
|
21779
22074
|
this.logger.debug(`Successfully deleted BedrockAgentCore Evaluator ${logicalId}`);
|
|
21780
22075
|
} catch (error) {
|
|
21781
|
-
if (error instanceof ResourceNotFoundException$
|
|
22076
|
+
if (error instanceof ResourceNotFoundException$6) {
|
|
21782
22077
|
assertRegionMatch(await this.client.config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
21783
22078
|
this.logger.debug(`Evaluator ${physicalId} does not exist, skipping deletion`);
|
|
21784
22079
|
return;
|
|
@@ -21817,7 +22112,7 @@ var AgentCoreEvaluatorProvider = class {
|
|
|
21817
22112
|
try {
|
|
21818
22113
|
resp = await this.client.send(new GetEvaluatorCommand({ evaluatorId: evaluatorIdFromArn(physicalId) }));
|
|
21819
22114
|
} catch (err) {
|
|
21820
|
-
if (err instanceof ResourceNotFoundException$
|
|
22115
|
+
if (err instanceof ResourceNotFoundException$6) return void 0;
|
|
21821
22116
|
throw err;
|
|
21822
22117
|
}
|
|
21823
22118
|
const result = {};
|
|
@@ -22304,32 +22599,6 @@ function wasMeaningfullyConfigured(value, discriminatorKey) {
|
|
|
22304
22599
|
return value[discriminatorKey] !== void 0;
|
|
22305
22600
|
}
|
|
22306
22601
|
|
|
22307
|
-
//#endregion
|
|
22308
|
-
//#region src/provisioning/resource-timeout-registry.ts
|
|
22309
|
-
let resolved;
|
|
22310
|
-
/**
|
|
22311
|
-
* Seed the registry with the validated `--resource-timeout` input. Call once
|
|
22312
|
-
* per CLI invocation, right after `validateResourceTimeouts`. Passing
|
|
22313
|
-
* `undefined` (flag not supplied) clears the registry, so consumers fall back
|
|
22314
|
-
* to their own compile-time floors.
|
|
22315
|
-
*/
|
|
22316
|
-
function setResolvedResourceTimeouts(opt) {
|
|
22317
|
-
resolved = opt;
|
|
22318
|
-
}
|
|
22319
|
-
/**
|
|
22320
|
-
* The user's resolved timeout for `resourceType` in milliseconds, or
|
|
22321
|
-
* `undefined` when the user supplied nothing applicable. Resolution matches
|
|
22322
|
-
* the outer-deadline sites: per-type override wins, else the explicit global
|
|
22323
|
-
* value. The compile-time default (`DEFAULT_RESOURCE_TIMEOUT_MS`) is
|
|
22324
|
-
* deliberately NOT applied here — an inner waiter's own floor (e.g. ECS 600s)
|
|
22325
|
-
* must only be raised by an EXPLICIT user value, never by the generic 30m
|
|
22326
|
-
* default silently multiplying every `--full-wait` failure by 3x.
|
|
22327
|
-
*/
|
|
22328
|
-
function resolvedResourceTimeoutMs(resourceType) {
|
|
22329
|
-
if (!resolved) return void 0;
|
|
22330
|
-
return resolved.perTypeMs?.[resourceType] ?? resolved.globalMs;
|
|
22331
|
-
}
|
|
22332
|
-
|
|
22333
22602
|
//#endregion
|
|
22334
22603
|
//#region src/provisioning/providers/ecs-provider.ts
|
|
22335
22604
|
/**
|
|
@@ -28625,7 +28894,7 @@ var CognitoUserPoolProvider = class {
|
|
|
28625
28894
|
if (!templatedActive) try {
|
|
28626
28895
|
needsFlip = (await this.getClient().send(new DescribeUserPoolCommand({ UserPoolId: physicalId }))).UserPool?.DeletionProtection === "ACTIVE";
|
|
28627
28896
|
} catch (descError) {
|
|
28628
|
-
if (descError instanceof ResourceNotFoundException$
|
|
28897
|
+
if (descError instanceof ResourceNotFoundException$9) {
|
|
28629
28898
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
28630
28899
|
this.logger.debug(`Cognito User Pool ${physicalId} does not exist, skipping deletion`);
|
|
28631
28900
|
return;
|
|
@@ -28648,7 +28917,7 @@ var CognitoUserPoolProvider = class {
|
|
|
28648
28917
|
await this.getClient().send(new DeleteUserPoolCommand({ UserPoolId: physicalId }));
|
|
28649
28918
|
this.logger.debug(`Successfully deleted Cognito User Pool ${logicalId}`);
|
|
28650
28919
|
} catch (error) {
|
|
28651
|
-
if (error instanceof ResourceNotFoundException$
|
|
28920
|
+
if (error instanceof ResourceNotFoundException$9) {
|
|
28652
28921
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
28653
28922
|
this.logger.debug(`Cognito User Pool ${physicalId} does not exist, skipping deletion`);
|
|
28654
28923
|
return;
|
|
@@ -28681,7 +28950,7 @@ var CognitoUserPoolProvider = class {
|
|
|
28681
28950
|
try {
|
|
28682
28951
|
resp = await this.getClient().send(new DescribeUserPoolCommand({ UserPoolId: physicalId }));
|
|
28683
28952
|
} catch (err) {
|
|
28684
|
-
if (err instanceof ResourceNotFoundException$
|
|
28953
|
+
if (err instanceof ResourceNotFoundException$9) return void 0;
|
|
28685
28954
|
throw err;
|
|
28686
28955
|
}
|
|
28687
28956
|
const pool = resp.UserPool;
|
|
@@ -28755,7 +29024,7 @@ var CognitoUserPoolProvider = class {
|
|
|
28755
29024
|
attributes: {}
|
|
28756
29025
|
};
|
|
28757
29026
|
} catch (err) {
|
|
28758
|
-
if (err instanceof ResourceNotFoundException$
|
|
29027
|
+
if (err instanceof ResourceNotFoundException$9) return null;
|
|
28759
29028
|
throw err;
|
|
28760
29029
|
}
|
|
28761
29030
|
const desiredName = typeof input.properties?.["UserPoolName"] === "string" ? input.properties["UserPoolName"] : void 0;
|
|
@@ -33784,7 +34053,7 @@ var KinesisStreamProvider = class {
|
|
|
33784
34053
|
}));
|
|
33785
34054
|
this.logger.debug(`Successfully deleted Kinesis stream ${logicalId}`);
|
|
33786
34055
|
} catch (error) {
|
|
33787
|
-
if (error instanceof ResourceNotFoundException$
|
|
34056
|
+
if (error instanceof ResourceNotFoundException$10) {
|
|
33788
34057
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
33789
34058
|
this.logger.debug(`Kinesis stream ${physicalId} does not exist, skipping deletion`);
|
|
33790
34059
|
return;
|
|
@@ -33859,7 +34128,7 @@ var KinesisStreamProvider = class {
|
|
|
33859
34128
|
try {
|
|
33860
34129
|
stream = (await this.getClient().send(new DescribeStreamCommand({ StreamName: physicalId }))).StreamDescription;
|
|
33861
34130
|
} catch (err) {
|
|
33862
|
-
if (err instanceof ResourceNotFoundException$
|
|
34131
|
+
if (err instanceof ResourceNotFoundException$10) return void 0;
|
|
33863
34132
|
throw err;
|
|
33864
34133
|
}
|
|
33865
34134
|
if (!stream) return void 0;
|
|
@@ -33877,7 +34146,7 @@ var KinesisStreamProvider = class {
|
|
|
33877
34146
|
try {
|
|
33878
34147
|
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForStreamCommand({ StreamName: physicalId }))).Tags);
|
|
33879
34148
|
} catch (err) {
|
|
33880
|
-
if (err instanceof ResourceNotFoundException$
|
|
34149
|
+
if (err instanceof ResourceNotFoundException$10) return void 0;
|
|
33881
34150
|
this.logger.debug(`Kinesis ListTagsForStream(${physicalId}) failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
33882
34151
|
}
|
|
33883
34152
|
return result;
|
|
@@ -33891,7 +34160,7 @@ var KinesisStreamProvider = class {
|
|
|
33891
34160
|
attributes: {}
|
|
33892
34161
|
};
|
|
33893
34162
|
} catch (err) {
|
|
33894
|
-
if (err instanceof ResourceNotFoundException$
|
|
34163
|
+
if (err instanceof ResourceNotFoundException$10) return null;
|
|
33895
34164
|
throw err;
|
|
33896
34165
|
}
|
|
33897
34166
|
return null;
|
|
@@ -34079,7 +34348,7 @@ var KinesisStreamConsumerProvider = class {
|
|
|
34079
34348
|
await this.getClient().send(new DeregisterStreamConsumerCommand({ ConsumerARN: physicalId }));
|
|
34080
34349
|
this.logger.debug(`Successfully deregistered Kinesis stream consumer ${logicalId}`);
|
|
34081
34350
|
} catch (error) {
|
|
34082
|
-
if (error instanceof ResourceNotFoundException$
|
|
34351
|
+
if (error instanceof ResourceNotFoundException$10) {
|
|
34083
34352
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
34084
34353
|
this.logger.debug(`Kinesis stream consumer ${physicalId} not found, skipping`);
|
|
34085
34354
|
return;
|
|
@@ -34125,7 +34394,7 @@ var KinesisStreamConsumerProvider = class {
|
|
|
34125
34394
|
try {
|
|
34126
34395
|
desc = (await this.getClient().send(new DescribeStreamConsumerCommand({ ConsumerARN: physicalId }))).ConsumerDescription;
|
|
34127
34396
|
} catch (err) {
|
|
34128
|
-
if (err instanceof ResourceNotFoundException$
|
|
34397
|
+
if (err instanceof ResourceNotFoundException$10) return void 0;
|
|
34129
34398
|
throw err;
|
|
34130
34399
|
}
|
|
34131
34400
|
if (!desc) return void 0;
|
|
@@ -34135,7 +34404,7 @@ var KinesisStreamConsumerProvider = class {
|
|
|
34135
34404
|
try {
|
|
34136
34405
|
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForResourceCommand$15({ ResourceARN: physicalId }))).Tags);
|
|
34137
34406
|
} catch (err) {
|
|
34138
|
-
if (err instanceof ResourceNotFoundException$
|
|
34407
|
+
if (err instanceof ResourceNotFoundException$10) return void 0;
|
|
34139
34408
|
this.logger.debug(`ListTagsForResource(${physicalId}) failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
34140
34409
|
result["Tags"] = [];
|
|
34141
34410
|
}
|
|
@@ -34341,7 +34610,7 @@ var SchedulerScheduleProvider = class {
|
|
|
34341
34610
|
}));
|
|
34342
34611
|
this.logger.debug(`Deleted Schedule ${logicalId}`);
|
|
34343
34612
|
} catch (error) {
|
|
34344
|
-
if (error instanceof ResourceNotFoundException$
|
|
34613
|
+
if (error instanceof ResourceNotFoundException$11) {
|
|
34345
34614
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
34346
34615
|
this.logger.debug(`Schedule ${logicalId} already deleted (not found), treating as success`);
|
|
34347
34616
|
return;
|
|
@@ -34363,7 +34632,7 @@ var SchedulerScheduleProvider = class {
|
|
|
34363
34632
|
return (await this.getClient().send(new GetScheduleCommand({ Name: physicalId }))).Arn;
|
|
34364
34633
|
} catch (error) {
|
|
34365
34634
|
const cause = error instanceof Error ? error : void 0;
|
|
34366
|
-
const customGroupHint = error instanceof ResourceNotFoundException$
|
|
34635
|
+
const customGroupHint = error instanceof ResourceNotFoundException$11 ? " Schedules in a custom group cannot be looked up by bare name; the Arn is normally served from cdkd state attributes." : "";
|
|
34367
34636
|
throw new ProvisioningError(`Failed to resolve Arn for Schedule ${physicalId}: ${cause?.message ?? String(error)}.${customGroupHint}`, resourceType, physicalId, physicalId, cause);
|
|
34368
34637
|
}
|
|
34369
34638
|
}
|
|
@@ -34393,7 +34662,7 @@ var SchedulerScheduleProvider = class {
|
|
|
34393
34662
|
...response.Target !== void 0 && { Target: response.Target }
|
|
34394
34663
|
};
|
|
34395
34664
|
} catch (error) {
|
|
34396
|
-
if (error instanceof ResourceNotFoundException$
|
|
34665
|
+
if (error instanceof ResourceNotFoundException$11) return;
|
|
34397
34666
|
throw error;
|
|
34398
34667
|
}
|
|
34399
34668
|
}
|
|
@@ -34419,7 +34688,7 @@ var SchedulerScheduleProvider = class {
|
|
|
34419
34688
|
attributes: response.Arn ? { Arn: response.Arn } : {}
|
|
34420
34689
|
};
|
|
34421
34690
|
} catch (error) {
|
|
34422
|
-
if (error instanceof ResourceNotFoundException$
|
|
34691
|
+
if (error instanceof ResourceNotFoundException$11) return null;
|
|
34423
34692
|
throw error;
|
|
34424
34693
|
}
|
|
34425
34694
|
}
|
|
@@ -38078,7 +38347,7 @@ var FirehoseProvider = class {
|
|
|
38078
38347
|
await this.getClient().send(new DeleteDeliveryStreamCommand({ DeliveryStreamName: physicalId }));
|
|
38079
38348
|
this.logger.debug(`Successfully deleted Firehose delivery stream ${logicalId}`);
|
|
38080
38349
|
} catch (error) {
|
|
38081
|
-
if (error instanceof ResourceNotFoundException$
|
|
38350
|
+
if (error instanceof ResourceNotFoundException$12) {
|
|
38082
38351
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
38083
38352
|
this.logger.debug(`Firehose delivery stream ${physicalId} does not exist, skipping deletion`);
|
|
38084
38353
|
return;
|
|
@@ -38615,7 +38884,7 @@ var FirehoseProvider = class {
|
|
|
38615
38884
|
try {
|
|
38616
38885
|
desc = (await this.getClient().send(new DescribeDeliveryStreamCommand({ DeliveryStreamName: physicalId }))).DeliveryStreamDescription;
|
|
38617
38886
|
} catch (err) {
|
|
38618
|
-
if (err instanceof ResourceNotFoundException$
|
|
38887
|
+
if (err instanceof ResourceNotFoundException$12) return void 0;
|
|
38619
38888
|
throw err;
|
|
38620
38889
|
}
|
|
38621
38890
|
if (!desc) return void 0;
|
|
@@ -38646,7 +38915,7 @@ var FirehoseProvider = class {
|
|
|
38646
38915
|
try {
|
|
38647
38916
|
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForDeliveryStreamCommand({ DeliveryStreamName: physicalId }))).Tags);
|
|
38648
38917
|
} catch (err) {
|
|
38649
|
-
if (err instanceof ResourceNotFoundException$
|
|
38918
|
+
if (err instanceof ResourceNotFoundException$12) return void 0;
|
|
38650
38919
|
this.logger.debug(`Firehose ListTagsForDeliveryStream(${physicalId}) failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
38651
38920
|
result["Tags"] = [];
|
|
38652
38921
|
}
|
|
@@ -38683,7 +38952,7 @@ var FirehoseProvider = class {
|
|
|
38683
38952
|
attributes: {}
|
|
38684
38953
|
};
|
|
38685
38954
|
} catch (err) {
|
|
38686
|
-
if (err instanceof ResourceNotFoundException$
|
|
38955
|
+
if (err instanceof ResourceNotFoundException$12) return null;
|
|
38687
38956
|
throw err;
|
|
38688
38957
|
}
|
|
38689
38958
|
return null;
|
|
@@ -39425,7 +39694,7 @@ var CodeBuildProvider = class {
|
|
|
39425
39694
|
await this.getClient().send(new DeleteProjectCommand({ name: physicalId }));
|
|
39426
39695
|
this.logger.debug(`Successfully deleted CodeBuild Project ${logicalId}`);
|
|
39427
39696
|
} catch (error) {
|
|
39428
|
-
if (error instanceof ResourceNotFoundException$
|
|
39697
|
+
if (error instanceof ResourceNotFoundException$13) {
|
|
39429
39698
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
39430
39699
|
this.logger.debug(`CodeBuild Project ${physicalId} does not exist, skipping deletion`);
|
|
39431
39700
|
return;
|
|
@@ -39480,7 +39749,7 @@ var CodeBuildProvider = class {
|
|
|
39480
39749
|
try {
|
|
39481
39750
|
project = (await this.getClient().send(new BatchGetProjectsCommand({ names: [physicalId] }))).projects?.[0];
|
|
39482
39751
|
} catch (err) {
|
|
39483
|
-
if (err instanceof ResourceNotFoundException$
|
|
39752
|
+
if (err instanceof ResourceNotFoundException$13) return void 0;
|
|
39484
39753
|
throw err;
|
|
39485
39754
|
}
|
|
39486
39755
|
if (!project) return void 0;
|
|
@@ -39625,7 +39894,7 @@ var CodeBuildProvider = class {
|
|
|
39625
39894
|
attributes: {}
|
|
39626
39895
|
} : null;
|
|
39627
39896
|
} catch (err) {
|
|
39628
|
-
if (err instanceof ResourceNotFoundException$
|
|
39897
|
+
if (err instanceof ResourceNotFoundException$13) return null;
|
|
39629
39898
|
throw err;
|
|
39630
39899
|
}
|
|
39631
39900
|
return null;
|
|
@@ -40345,7 +40614,7 @@ var DLMLifecyclePolicyProvider = class {
|
|
|
40345
40614
|
await this.getClient().send(new DeleteLifecyclePolicyCommand$1({ PolicyId: physicalId }));
|
|
40346
40615
|
this.logger.debug(`Successfully deleted DLM Lifecycle Policy ${logicalId}`);
|
|
40347
40616
|
} catch (error) {
|
|
40348
|
-
if (error instanceof ResourceNotFoundException$
|
|
40617
|
+
if (error instanceof ResourceNotFoundException$14) {
|
|
40349
40618
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
40350
40619
|
this.logger.debug(`DLM Lifecycle Policy ${physicalId} does not exist, skipping deletion`);
|
|
40351
40620
|
return;
|
|
@@ -40396,7 +40665,7 @@ var DLMLifecyclePolicyProvider = class {
|
|
|
40396
40665
|
Tags: normalizeAwsTagsToCfn(policy.Tags)
|
|
40397
40666
|
};
|
|
40398
40667
|
} catch (error) {
|
|
40399
|
-
if (error instanceof ResourceNotFoundException$
|
|
40668
|
+
if (error instanceof ResourceNotFoundException$14) return;
|
|
40400
40669
|
throw error;
|
|
40401
40670
|
}
|
|
40402
40671
|
}
|
|
@@ -40432,7 +40701,7 @@ var DLMLifecyclePolicyProvider = class {
|
|
|
40432
40701
|
attributes: response.Policy.PolicyArn ? { Arn: response.Policy.PolicyArn } : {}
|
|
40433
40702
|
} : null;
|
|
40434
40703
|
} catch (err) {
|
|
40435
|
-
if (err instanceof ResourceNotFoundException$
|
|
40704
|
+
if (err instanceof ResourceNotFoundException$14) return null;
|
|
40436
40705
|
throw err;
|
|
40437
40706
|
}
|
|
40438
40707
|
return null;
|
|
@@ -42768,7 +43037,7 @@ var ACMCertificateProvider = class {
|
|
|
42768
43037
|
try {
|
|
42769
43038
|
await this.acmClient.send(new DeleteCertificateCommand({ CertificateArn: physicalId }));
|
|
42770
43039
|
} catch (error) {
|
|
42771
|
-
if (error instanceof ResourceNotFoundException$
|
|
43040
|
+
if (error instanceof ResourceNotFoundException$7) {
|
|
42772
43041
|
assertRegionMatch(await this.acmClient.config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
42773
43042
|
this.logger.debug(`Certificate ${physicalId} does not exist, skipping deletion`);
|
|
42774
43043
|
return;
|
|
@@ -42806,7 +43075,7 @@ var ACMCertificateProvider = class {
|
|
|
42806
43075
|
try {
|
|
42807
43076
|
cert = (await this.acmClient.send(new DescribeCertificateCommand({ CertificateArn: physicalId }))).Certificate;
|
|
42808
43077
|
} catch (err) {
|
|
42809
|
-
if (err instanceof ResourceNotFoundException$
|
|
43078
|
+
if (err instanceof ResourceNotFoundException$7) return void 0;
|
|
42810
43079
|
throw err;
|
|
42811
43080
|
}
|
|
42812
43081
|
if (!cert) return void 0;
|
|
@@ -42820,7 +43089,7 @@ var ACMCertificateProvider = class {
|
|
|
42820
43089
|
try {
|
|
42821
43090
|
result["Tags"] = normalizeAwsTagsToCfn((await this.acmClient.send(new ListTagsForCertificateCommand({ CertificateArn: physicalId }))).Tags);
|
|
42822
43091
|
} catch (err) {
|
|
42823
|
-
if (!(err instanceof ResourceNotFoundException$
|
|
43092
|
+
if (!(err instanceof ResourceNotFoundException$7)) throw err;
|
|
42824
43093
|
}
|
|
42825
43094
|
return result;
|
|
42826
43095
|
}
|
|
@@ -42851,7 +43120,7 @@ var ACMCertificateProvider = class {
|
|
|
42851
43120
|
}
|
|
42852
43121
|
};
|
|
42853
43122
|
} catch (err) {
|
|
42854
|
-
if (err instanceof ResourceNotFoundException$
|
|
43123
|
+
if (err instanceof ResourceNotFoundException$7) return null;
|
|
42855
43124
|
throw err;
|
|
42856
43125
|
}
|
|
42857
43126
|
}
|
|
@@ -42973,6 +43242,7 @@ function registerAllProviders(registry) {
|
|
|
42973
43242
|
registry.register("AWS::DynamoDB::GlobalTable", new DynamoDBGlobalTableProvider());
|
|
42974
43243
|
registry.register("AWS::Logs::LogGroup", new LogsLogGroupProvider());
|
|
42975
43244
|
registry.register("AWS::CloudWatch::Alarm", new CloudWatchAlarmProvider());
|
|
43245
|
+
registry.register("AWS::CloudWatch::AnomalyDetector", new CloudWatchAnomalyDetectorProvider());
|
|
42976
43246
|
registry.register("AWS::SecretsManager::Secret", new SecretsManagerSecretProvider());
|
|
42977
43247
|
registry.register("AWS::SSM::Parameter", new SSMParameterProvider());
|
|
42978
43248
|
registry.register("AWS::Events::Rule", new EventBridgeRuleProvider());
|
|
@@ -62934,7 +63204,7 @@ function createMigrateCommand() {
|
|
|
62934
63204
|
*/
|
|
62935
63205
|
function buildProgram() {
|
|
62936
63206
|
const program = new Command();
|
|
62937
|
-
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.
|
|
63207
|
+
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.271.0");
|
|
62938
63208
|
program.hook("preAction", (_thisCommand, actionCommand) => {
|
|
62939
63209
|
const { profile } = actionCommand.optsWithGlobals();
|
|
62940
63210
|
if (profile !== void 0) process.env["AWS_PROFILE"] = profile;
|