@go-to-k/cdkd 0.269.2 → 0.270.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{asg-provider-COr7zWfc.js → asg-provider-D3Ioxi3j.js} +2 -2
- package/dist/{asg-provider-COr7zWfc.js.map → asg-provider-D3Ioxi3j.js.map} +1 -1
- package/dist/cli.js +358 -66
- package/dist/cli.js.map +1 -1
- package/dist/{deploy-engine-CKWSFzIi.js → deploy-engine-D3tkYlnl.js} +33 -6
- package/dist/deploy-engine-D3tkYlnl.js.map +1 -0
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/deploy-engine-CKWSFzIi.js.map +0 -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-D3tkYlnl.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-D3Ioxi3j.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";
|
|
@@ -10324,7 +10324,7 @@ var LambdaMicrovmImageProvider = class {
|
|
|
10324
10324
|
try {
|
|
10325
10325
|
await this.client.send(new DeleteMicrovmImageCommand({ imageIdentifier: physicalId }));
|
|
10326
10326
|
} catch (error) {
|
|
10327
|
-
if (error instanceof ResourceNotFoundException$
|
|
10327
|
+
if (error instanceof ResourceNotFoundException$8) {
|
|
10328
10328
|
assertRegionMatch(await this.client.config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
10329
10329
|
this.logger.debug(`MicroVM image ${physicalId} does not exist, skipping deletion`);
|
|
10330
10330
|
return;
|
|
@@ -10369,7 +10369,7 @@ var LambdaMicrovmImageProvider = class {
|
|
|
10369
10369
|
attributes: { ImageArn: arn }
|
|
10370
10370
|
};
|
|
10371
10371
|
} catch (error) {
|
|
10372
|
-
if (error instanceof ResourceNotFoundException$
|
|
10372
|
+
if (error instanceof ResourceNotFoundException$8) return null;
|
|
10373
10373
|
throw error;
|
|
10374
10374
|
}
|
|
10375
10375
|
}
|
|
@@ -10395,7 +10395,7 @@ var LambdaMicrovmImageProvider = class {
|
|
|
10395
10395
|
try {
|
|
10396
10396
|
name = (await this.client.send(new GetMicrovmImageCommand({ imageIdentifier: physicalId }))).name;
|
|
10397
10397
|
} catch (error) {
|
|
10398
|
-
if (error instanceof ResourceNotFoundException$
|
|
10398
|
+
if (error instanceof ResourceNotFoundException$8) return void 0;
|
|
10399
10399
|
throw error;
|
|
10400
10400
|
}
|
|
10401
10401
|
const result = {};
|
|
@@ -10454,7 +10454,7 @@ var LambdaMicrovmImageProvider = class {
|
|
|
10454
10454
|
try {
|
|
10455
10455
|
resp = await this.client.send(new GetMicrovmImageCommand({ imageIdentifier: imageArn }));
|
|
10456
10456
|
} catch (error) {
|
|
10457
|
-
if (error instanceof ResourceNotFoundException$
|
|
10457
|
+
if (error instanceof ResourceNotFoundException$8) return;
|
|
10458
10458
|
throw error;
|
|
10459
10459
|
}
|
|
10460
10460
|
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 +13070,7 @@ var LogsLogGroupProvider = class {
|
|
|
13070
13070
|
} else try {
|
|
13071
13071
|
await this.logsClient.send(new DeleteIndexPolicyCommand({ logGroupIdentifier: physicalId }));
|
|
13072
13072
|
} catch (err) {
|
|
13073
|
-
if (!(err instanceof ResourceNotFoundException$
|
|
13073
|
+
if (!(err instanceof ResourceNotFoundException$5)) throw err;
|
|
13074
13074
|
}
|
|
13075
13075
|
const newTags = properties["Tags"];
|
|
13076
13076
|
const oldTags = previousProperties["Tags"];
|
|
@@ -13116,7 +13116,7 @@ var LogsLogGroupProvider = class {
|
|
|
13116
13116
|
await this.logsClient.send(new DeleteLogGroupCommand({ logGroupName: physicalId }));
|
|
13117
13117
|
this.logger.debug(`Successfully deleted log group ${logicalId}`);
|
|
13118
13118
|
} catch (error) {
|
|
13119
|
-
if (error instanceof ResourceNotFoundException$
|
|
13119
|
+
if (error instanceof ResourceNotFoundException$5) {
|
|
13120
13120
|
assertRegionMatch(await this.logsClient.config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
13121
13121
|
this.logger.debug(`Log group ${physicalId} does not exist, skipping deletion`);
|
|
13122
13122
|
return;
|
|
@@ -13207,7 +13207,7 @@ var LogsLogGroupProvider = class {
|
|
|
13207
13207
|
try {
|
|
13208
13208
|
tags = normalizeAwsTagsToCfn((await this.logsClient.send(new ListTagsForResourceCommand$5({ resourceArn: arnForTags }))).tags);
|
|
13209
13209
|
} catch (err) {
|
|
13210
|
-
if (err instanceof ResourceNotFoundException$
|
|
13210
|
+
if (err instanceof ResourceNotFoundException$5) return void 0;
|
|
13211
13211
|
throw err;
|
|
13212
13212
|
}
|
|
13213
13213
|
}
|
|
@@ -13236,7 +13236,7 @@ var LogsLogGroupProvider = class {
|
|
|
13236
13236
|
result["FieldIndexPolicies"] = fieldIndexPolicies;
|
|
13237
13237
|
return result;
|
|
13238
13238
|
} catch (err) {
|
|
13239
|
-
if (err instanceof ResourceNotFoundException$
|
|
13239
|
+
if (err instanceof ResourceNotFoundException$5) return void 0;
|
|
13240
13240
|
throw err;
|
|
13241
13241
|
}
|
|
13242
13242
|
}
|
|
@@ -13255,7 +13255,7 @@ var LogsLogGroupProvider = class {
|
|
|
13255
13255
|
attributes: {}
|
|
13256
13256
|
} : null;
|
|
13257
13257
|
} catch (err) {
|
|
13258
|
-
if (err instanceof ResourceNotFoundException$
|
|
13258
|
+
if (err instanceof ResourceNotFoundException$5) return null;
|
|
13259
13259
|
throw err;
|
|
13260
13260
|
}
|
|
13261
13261
|
return null;
|
|
@@ -13584,6 +13584,233 @@ var CloudWatchAlarmProvider = class {
|
|
|
13584
13584
|
}
|
|
13585
13585
|
};
|
|
13586
13586
|
|
|
13587
|
+
//#endregion
|
|
13588
|
+
//#region src/provisioning/providers/cloudwatch-anomaly-detector-provider.ts
|
|
13589
|
+
/**
|
|
13590
|
+
* AWS CloudWatch AnomalyDetector Provider (issue #1304)
|
|
13591
|
+
*
|
|
13592
|
+
* Implements resource provisioning for AWS::CloudWatch::AnomalyDetector using
|
|
13593
|
+
* the CloudWatch SDK. The type is NON_PROVISIONABLE in the CloudFormation
|
|
13594
|
+
* registry (no Cloud Control handlers), so without this provider cdkd's
|
|
13595
|
+
* pre-flight rejects any template that declares it.
|
|
13596
|
+
*
|
|
13597
|
+
* API mapping: `PutAnomalyDetector` is an UPSERT keyed by the metric
|
|
13598
|
+
* descriptor (the single-metric tuple or the metric-math query set), and
|
|
13599
|
+
* `DeleteAnomalyDetector` takes the same descriptor. There is no
|
|
13600
|
+
* server-generated identifier; the registry schema's read-only `Id`
|
|
13601
|
+
* primaryIdentifier has no Cloud Control handler to mint it. cdkd therefore
|
|
13602
|
+
* derives a DETERMINISTIC physical id from the descriptor (see
|
|
13603
|
+
* {@link derivePhysicalId}) — every descriptor field is createOnly in the
|
|
13604
|
+
* registry schema, so the id is stable across in-place updates
|
|
13605
|
+
* (`Configuration` is the only mutable property).
|
|
13606
|
+
*/
|
|
13607
|
+
var CloudWatchAnomalyDetectorProvider = class {
|
|
13608
|
+
cloudWatchClient;
|
|
13609
|
+
logger = getLogger().child("CloudWatchAnomalyDetectorProvider");
|
|
13610
|
+
/**
|
|
13611
|
+
* NON_PROVISIONABLE type: Cloud Control has no handlers for it, so the
|
|
13612
|
+
* #614 unhandled-property auto-route must never send an
|
|
13613
|
+
* AnomalyDetector template to the CC path (it would fail at deploy time
|
|
13614
|
+
* with no handler). All properties are handled here instead.
|
|
13615
|
+
*/
|
|
13616
|
+
disableCcApiFallback = true;
|
|
13617
|
+
handledProperties = /* @__PURE__ */ new Map([["AWS::CloudWatch::AnomalyDetector", /* @__PURE__ */ new Set([
|
|
13618
|
+
"Namespace",
|
|
13619
|
+
"MetricName",
|
|
13620
|
+
"Stat",
|
|
13621
|
+
"Dimensions",
|
|
13622
|
+
"Configuration",
|
|
13623
|
+
"MetricCharacteristics",
|
|
13624
|
+
"SingleMetricAnomalyDetector",
|
|
13625
|
+
"MetricMathAnomalyDetector"
|
|
13626
|
+
])]]);
|
|
13627
|
+
constructor() {
|
|
13628
|
+
const awsClients = getAwsClients();
|
|
13629
|
+
this.cloudWatchClient = awsClients.cloudWatch;
|
|
13630
|
+
}
|
|
13631
|
+
/**
|
|
13632
|
+
* Create an anomaly detection model via `PutAnomalyDetector`.
|
|
13633
|
+
*/
|
|
13634
|
+
async create(logicalId, resourceType, properties) {
|
|
13635
|
+
this.logger.debug(`Creating CloudWatch anomaly detector ${logicalId}`);
|
|
13636
|
+
const params = buildPutParams(properties);
|
|
13637
|
+
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);
|
|
13638
|
+
try {
|
|
13639
|
+
await this.cloudWatchClient.send(new PutAnomalyDetectorCommand(params));
|
|
13640
|
+
const physicalId = derivePhysicalId(properties);
|
|
13641
|
+
this.logger.debug(`Successfully created CloudWatch anomaly detector ${logicalId}: ${physicalId}`);
|
|
13642
|
+
return {
|
|
13643
|
+
physicalId,
|
|
13644
|
+
attributes: { Id: physicalId }
|
|
13645
|
+
};
|
|
13646
|
+
} catch (error) {
|
|
13647
|
+
const cause = error instanceof Error ? error : void 0;
|
|
13648
|
+
throw new ProvisioningError(`Failed to create CloudWatch anomaly detector ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, void 0, cause);
|
|
13649
|
+
}
|
|
13650
|
+
}
|
|
13651
|
+
/**
|
|
13652
|
+
* Update an anomaly detection model.
|
|
13653
|
+
*
|
|
13654
|
+
* Every descriptor field (Namespace / MetricName / Stat / Dimensions /
|
|
13655
|
+
* SingleMetricAnomalyDetector / MetricMathAnomalyDetector /
|
|
13656
|
+
* MetricCharacteristics) is createOnly in the registry schema, so the
|
|
13657
|
+
* diff layer classifies a change to any of them as a REPLACEMENT and this
|
|
13658
|
+
* method never sees it. The only in-place change is `Configuration`
|
|
13659
|
+
* (excluded time ranges / time zone), which `PutAnomalyDetector` upserts
|
|
13660
|
+
* for the unchanged descriptor.
|
|
13661
|
+
*
|
|
13662
|
+
* Removal semantics: `PutAnomalyDetector` REPLACES the stored
|
|
13663
|
+
* Configuration rather than merging (live-verified 2026-07-31 — a Put
|
|
13664
|
+
* with no `Configuration` resets MetricTimezone + ExcludedTimeRanges to
|
|
13665
|
+
* defaults), so re-putting the full desired properties matches CFn's
|
|
13666
|
+
* "removed property resets to default" behavior with no extra clearing.
|
|
13667
|
+
*/
|
|
13668
|
+
async update(logicalId, physicalId, resourceType, properties, _previousProperties) {
|
|
13669
|
+
this.logger.debug(`Updating CloudWatch anomaly detector ${logicalId}: ${physicalId}`);
|
|
13670
|
+
try {
|
|
13671
|
+
await this.cloudWatchClient.send(new PutAnomalyDetectorCommand(buildPutParams(properties)));
|
|
13672
|
+
this.logger.debug(`Successfully updated CloudWatch anomaly detector ${logicalId}`);
|
|
13673
|
+
return {
|
|
13674
|
+
physicalId,
|
|
13675
|
+
wasReplaced: false,
|
|
13676
|
+
attributes: { Id: physicalId }
|
|
13677
|
+
};
|
|
13678
|
+
} catch (error) {
|
|
13679
|
+
const cause = error instanceof Error ? error : void 0;
|
|
13680
|
+
throw new ProvisioningError(`Failed to update CloudWatch anomaly detector ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, physicalId, cause);
|
|
13681
|
+
}
|
|
13682
|
+
}
|
|
13683
|
+
/**
|
|
13684
|
+
* Delete an anomaly detection model via `DeleteAnomalyDetector`.
|
|
13685
|
+
*
|
|
13686
|
+
* The API takes the metric DESCRIPTOR (not an id), so the state-recorded
|
|
13687
|
+
* `properties` are required to address the model. `ResourceNotFoundException`
|
|
13688
|
+
* is treated as idempotent success (after the shared region check).
|
|
13689
|
+
*/
|
|
13690
|
+
async delete(logicalId, physicalId, resourceType, properties, context) {
|
|
13691
|
+
this.logger.debug(`Deleting CloudWatch anomaly detector ${logicalId}: ${physicalId}`);
|
|
13692
|
+
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);
|
|
13693
|
+
try {
|
|
13694
|
+
await this.cloudWatchClient.send(new DeleteAnomalyDetectorCommand(buildDeleteParams(properties)));
|
|
13695
|
+
this.logger.debug(`Successfully deleted CloudWatch anomaly detector ${logicalId}`);
|
|
13696
|
+
} catch (error) {
|
|
13697
|
+
if (error instanceof ResourceNotFoundException$4) {
|
|
13698
|
+
assertRegionMatch(await this.cloudWatchClient.config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
13699
|
+
this.logger.debug(`Anomaly detector ${physicalId} does not exist, skipping deletion`);
|
|
13700
|
+
return;
|
|
13701
|
+
}
|
|
13702
|
+
const cause = error instanceof Error ? error : void 0;
|
|
13703
|
+
throw new ProvisioningError(`Failed to delete CloudWatch anomaly detector ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, physicalId, cause);
|
|
13704
|
+
}
|
|
13705
|
+
}
|
|
13706
|
+
/**
|
|
13707
|
+
* Resolve a `Fn::GetAtt` attribute. The registry schema exposes a single
|
|
13708
|
+
* read-only attribute, `Id` — cdkd's deterministic physical id.
|
|
13709
|
+
*/
|
|
13710
|
+
async getAttribute(physicalId, resourceType, attributeName) {
|
|
13711
|
+
if (attributeName === "Id") return physicalId;
|
|
13712
|
+
throw new ProvisioningError(`Unknown attribute ${attributeName} for ${resourceType} (only 'Id' is defined)`, resourceType, physicalId);
|
|
13713
|
+
}
|
|
13714
|
+
/**
|
|
13715
|
+
* Adopt an existing anomaly detector into cdkd state.
|
|
13716
|
+
*
|
|
13717
|
+
* **Explicit override only.** Anomaly detectors are addressed by their
|
|
13718
|
+
* metric descriptor, carry no tags, and have no name property — there is
|
|
13719
|
+
* nothing to auto-look them up by. Users adopting one should pass
|
|
13720
|
+
* `--resource <logicalId>=<id>` where `<id>` is any stable identifier
|
|
13721
|
+
* (cdkd re-derives the canonical one on the next replacement).
|
|
13722
|
+
*/
|
|
13723
|
+
async import(input) {
|
|
13724
|
+
if (input.knownPhysicalId) return {
|
|
13725
|
+
physicalId: input.knownPhysicalId,
|
|
13726
|
+
attributes: { Id: input.knownPhysicalId }
|
|
13727
|
+
};
|
|
13728
|
+
return null;
|
|
13729
|
+
}
|
|
13730
|
+
};
|
|
13731
|
+
/**
|
|
13732
|
+
* Map CFn-shaped properties onto the `PutAnomalyDetector` input. CloudWatch's
|
|
13733
|
+
* SDK uses the same PascalCase field names as the CloudFormation schema, so
|
|
13734
|
+
* the mapping is structural: the only shape conversion is
|
|
13735
|
+
* `Configuration.ExcludedTimeRanges[].StartTime/EndTime`, which CFn carries
|
|
13736
|
+
* as ISO-8601 strings and the SDK models as `Date`.
|
|
13737
|
+
*/
|
|
13738
|
+
function buildPutParams(properties) {
|
|
13739
|
+
const params = {};
|
|
13740
|
+
const single = properties["SingleMetricAnomalyDetector"];
|
|
13741
|
+
if (single !== void 0) params.SingleMetricAnomalyDetector = single;
|
|
13742
|
+
const math = properties["MetricMathAnomalyDetector"];
|
|
13743
|
+
if (math !== void 0) params.MetricMathAnomalyDetector = math;
|
|
13744
|
+
if (properties["Namespace"] !== void 0) params.Namespace = properties["Namespace"];
|
|
13745
|
+
if (properties["MetricName"] !== void 0) params.MetricName = properties["MetricName"];
|
|
13746
|
+
if (properties["Stat"] !== void 0) params.Stat = properties["Stat"];
|
|
13747
|
+
if (properties["Dimensions"] !== void 0) params.Dimensions = properties["Dimensions"];
|
|
13748
|
+
const configuration = properties["Configuration"];
|
|
13749
|
+
if (configuration !== void 0) {
|
|
13750
|
+
const mapped = {};
|
|
13751
|
+
if (configuration["MetricTimeZone"] !== void 0) mapped.MetricTimezone = configuration["MetricTimeZone"];
|
|
13752
|
+
const ranges = configuration["ExcludedTimeRanges"];
|
|
13753
|
+
if (ranges !== void 0) mapped.ExcludedTimeRanges = ranges.map((r) => ({
|
|
13754
|
+
StartTime: toDate(r["StartTime"]),
|
|
13755
|
+
EndTime: toDate(r["EndTime"])
|
|
13756
|
+
}));
|
|
13757
|
+
params.Configuration = mapped;
|
|
13758
|
+
}
|
|
13759
|
+
const characteristics = properties["MetricCharacteristics"];
|
|
13760
|
+
if (characteristics !== void 0) params.MetricCharacteristics = characteristics;
|
|
13761
|
+
return params;
|
|
13762
|
+
}
|
|
13763
|
+
/**
|
|
13764
|
+
* `DeleteAnomalyDetector` addresses the model by the same descriptor shape as
|
|
13765
|
+
* Put, minus the mutable `Configuration` / `MetricCharacteristics`.
|
|
13766
|
+
*/
|
|
13767
|
+
function buildDeleteParams(properties) {
|
|
13768
|
+
const params = {};
|
|
13769
|
+
const single = properties["SingleMetricAnomalyDetector"];
|
|
13770
|
+
if (single !== void 0) params.SingleMetricAnomalyDetector = single;
|
|
13771
|
+
const math = properties["MetricMathAnomalyDetector"];
|
|
13772
|
+
if (math !== void 0) params.MetricMathAnomalyDetector = math;
|
|
13773
|
+
if (properties["Namespace"] !== void 0) params.Namespace = properties["Namespace"];
|
|
13774
|
+
if (properties["MetricName"] !== void 0) params.MetricName = properties["MetricName"];
|
|
13775
|
+
if (properties["Stat"] !== void 0) params.Stat = properties["Stat"];
|
|
13776
|
+
if (properties["Dimensions"] !== void 0) params.Dimensions = properties["Dimensions"];
|
|
13777
|
+
return params;
|
|
13778
|
+
}
|
|
13779
|
+
/** CFn carries Range times as ISO-8601 strings; the SDK models them as Date. */
|
|
13780
|
+
function toDate(value) {
|
|
13781
|
+
if (value === void 0) return void 0;
|
|
13782
|
+
if (value instanceof Date) return value;
|
|
13783
|
+
const parsed = new Date(String(value));
|
|
13784
|
+
if (Number.isNaN(parsed.getTime())) throw new Error(`Configuration.ExcludedTimeRanges contains an unparsable time value: ${String(value)}`);
|
|
13785
|
+
return parsed;
|
|
13786
|
+
}
|
|
13787
|
+
/**
|
|
13788
|
+
* Derive the deterministic physical id from the metric descriptor.
|
|
13789
|
+
*
|
|
13790
|
+
* Single-metric detectors get a readable composite
|
|
13791
|
+
* (`<Namespace>:<MetricName>:<Stat>[:<Name=Value,...>]`, dimensions sorted by
|
|
13792
|
+
* name so template ordering does not change the id); metric-math detectors
|
|
13793
|
+
* get a content hash of their query set (`math:<sha256-16>`). Descriptor
|
|
13794
|
+
* fields are all createOnly, so the id never changes across in-place updates.
|
|
13795
|
+
*/
|
|
13796
|
+
function derivePhysicalId(properties) {
|
|
13797
|
+
const single = properties["SingleMetricAnomalyDetector"];
|
|
13798
|
+
const namespace = single?.Namespace ?? properties["Namespace"];
|
|
13799
|
+
const metricName = single?.MetricName ?? properties["MetricName"];
|
|
13800
|
+
const stat = single?.Stat ?? properties["Stat"];
|
|
13801
|
+
const dimensions = single?.Dimensions ?? properties["Dimensions"];
|
|
13802
|
+
if (namespace !== void 0 || metricName !== void 0) {
|
|
13803
|
+
const dims = (dimensions ?? []).map((d) => `${d.Name}=${d.Value}`).sort().join(",");
|
|
13804
|
+
const base = `${single?.AccountId !== void 0 ? `${single.AccountId}:` : ""}${namespace ?? ""}:${metricName ?? ""}:${stat ?? ""}`;
|
|
13805
|
+
return dims.length > 0 ? `${base}:${dims}` : base;
|
|
13806
|
+
}
|
|
13807
|
+
const math = properties["MetricMathAnomalyDetector"];
|
|
13808
|
+
return `math:${createHash("sha256").update(JSON.stringify(math ?? {})).digest("hex").slice(0, 16)}`;
|
|
13809
|
+
}
|
|
13810
|
+
function hasDescriptor(params) {
|
|
13811
|
+
return params.SingleMetricAnomalyDetector !== void 0 || params.MetricMathAnomalyDetector !== void 0 || params.Namespace !== void 0 || params.MetricName !== void 0;
|
|
13812
|
+
}
|
|
13813
|
+
|
|
13587
13814
|
//#endregion
|
|
13588
13815
|
//#region src/provisioning/providers/secretsmanager-secret-provider.ts
|
|
13589
13816
|
/**
|
|
@@ -14935,7 +15162,7 @@ var EC2Provider = class {
|
|
|
14935
15162
|
async applyUpdate(logicalId, physicalId, resourceType, properties, previousProperties) {
|
|
14936
15163
|
switch (resourceType) {
|
|
14937
15164
|
case "AWS::EC2::VPC": return this.updateVpc(logicalId, physicalId, resourceType, properties, previousProperties);
|
|
14938
|
-
case "AWS::EC2::Subnet": return this.updateSubnet(logicalId, physicalId);
|
|
15165
|
+
case "AWS::EC2::Subnet": return this.updateSubnet(logicalId, physicalId, resourceType, properties, previousProperties);
|
|
14939
15166
|
case "AWS::EC2::InternetGateway": return this.updateInternetGateway(logicalId, physicalId);
|
|
14940
15167
|
case "AWS::EC2::EIP": return this.updateEip(logicalId, physicalId, properties, previousProperties);
|
|
14941
15168
|
case "AWS::EC2::VPCGatewayAttachment": return this.updateVpcGatewayAttachment(logicalId, physicalId);
|
|
@@ -15157,10 +15384,13 @@ var EC2Provider = class {
|
|
|
15157
15384
|
try {
|
|
15158
15385
|
await this.applyTags(subnetId, properties, logicalId);
|
|
15159
15386
|
const mapPublicIp = properties["MapPublicIpOnLaunch"];
|
|
15160
|
-
if (mapPublicIp === true || mapPublicIp === "true")
|
|
15161
|
-
|
|
15162
|
-
|
|
15163
|
-
|
|
15387
|
+
if (mapPublicIp === true || mapPublicIp === "true") {
|
|
15388
|
+
await this.ec2Client.send(new ModifySubnetAttributeCommand({
|
|
15389
|
+
SubnetId: subnetId,
|
|
15390
|
+
MapPublicIpOnLaunch: { Value: true }
|
|
15391
|
+
}));
|
|
15392
|
+
await this.waitForSubnetMapPublicIp(subnetId, true);
|
|
15393
|
+
}
|
|
15164
15394
|
} catch (innerError) {
|
|
15165
15395
|
try {
|
|
15166
15396
|
await this.ec2Client.send(new DeleteSubnetCommand({ SubnetId: subnetId }));
|
|
@@ -15183,8 +15413,66 @@ var EC2Provider = class {
|
|
|
15183
15413
|
throw new ProvisioningError(`Failed to create Subnet ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, void 0, cause);
|
|
15184
15414
|
}
|
|
15185
15415
|
}
|
|
15186
|
-
updateSubnet(logicalId, physicalId) {
|
|
15187
|
-
|
|
15416
|
+
async updateSubnet(logicalId, physicalId, resourceType, properties, previousProperties) {
|
|
15417
|
+
this.logger.debug(`Updating Subnet ${logicalId}: ${physicalId}`);
|
|
15418
|
+
try {
|
|
15419
|
+
for (const createOnly of [
|
|
15420
|
+
"VpcId",
|
|
15421
|
+
"CidrBlock",
|
|
15422
|
+
"AvailabilityZone"
|
|
15423
|
+
]) {
|
|
15424
|
+
const next = properties[createOnly];
|
|
15425
|
+
const prev = previousProperties[createOnly];
|
|
15426
|
+
if (next !== void 0 && prev !== void 0 && next !== prev) throw new ResourceUpdateNotSupportedError(resourceType, logicalId, `destroy + redeploy the Subnet (and the resources that depend on it). ${createOnly} is immutable in AWS`);
|
|
15427
|
+
}
|
|
15428
|
+
const asBool = (v) => v === true || v === "true";
|
|
15429
|
+
const newMapPublicIp = asBool(properties["MapPublicIpOnLaunch"]);
|
|
15430
|
+
if (newMapPublicIp !== asBool(previousProperties["MapPublicIpOnLaunch"])) {
|
|
15431
|
+
await this.ec2Client.send(new ModifySubnetAttributeCommand({
|
|
15432
|
+
SubnetId: physicalId,
|
|
15433
|
+
MapPublicIpOnLaunch: { Value: newMapPublicIp }
|
|
15434
|
+
}));
|
|
15435
|
+
await this.waitForSubnetMapPublicIp(physicalId, newMapPublicIp);
|
|
15436
|
+
}
|
|
15437
|
+
await this.applyTagDiff(physicalId, previousProperties["Tags"], properties["Tags"]);
|
|
15438
|
+
this.logger.debug(`Successfully updated Subnet ${logicalId}`);
|
|
15439
|
+
return {
|
|
15440
|
+
physicalId,
|
|
15441
|
+
wasReplaced: false
|
|
15442
|
+
};
|
|
15443
|
+
} catch (error) {
|
|
15444
|
+
if (error instanceof CdkdError) throw error;
|
|
15445
|
+
const cause = error instanceof Error ? error : void 0;
|
|
15446
|
+
throw new ProvisioningError(`Failed to update Subnet ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, physicalId, cause);
|
|
15447
|
+
}
|
|
15448
|
+
}
|
|
15449
|
+
/**
|
|
15450
|
+
* Read back `MapPublicIpOnLaunch` until AWS reflects the value a
|
|
15451
|
+
* `ModifySubnetAttribute` just wrote (issue #1299). EC2 `Describe*` is
|
|
15452
|
+
* eventually consistent, so the deploy engine's async observed-state
|
|
15453
|
+
* capture (`kickOffObservedCapture` → `readCurrentState` →
|
|
15454
|
+
* `DescribeSubnets`), which fires milliseconds after `create()` /
|
|
15455
|
+
* `update()` returns, could read the STALE pre-modify value and persist
|
|
15456
|
+
* it as the drift baseline — every later `cdkd drift` then reported
|
|
15457
|
+
* phantom `MapPublicIpOnLaunch` drift on a resource nothing touched.
|
|
15458
|
+
*
|
|
15459
|
+
* Bounded and best-effort: the first read usually already reflects the
|
|
15460
|
+
* write (zero added latency beyond one DescribeSubnets round trip); on
|
|
15461
|
+
* exhaustion we log and return — behavior then degrades to the pre-fix
|
|
15462
|
+
* race instead of failing a deploy over a read-side consistency lag.
|
|
15463
|
+
*/
|
|
15464
|
+
async waitForSubnetMapPublicIp(subnetId, expected) {
|
|
15465
|
+
const maxAttempts = 6;
|
|
15466
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
15467
|
+
try {
|
|
15468
|
+
if ((await this.ec2Client.send(new DescribeSubnetsCommand({ SubnetIds: [subnetId] }))).Subnets?.[0]?.MapPublicIpOnLaunch === expected) return;
|
|
15469
|
+
} catch (error) {
|
|
15470
|
+
this.logger.debug(`MapPublicIpOnLaunch read-back for ${subnetId} failed (attempt ${attempt}/${maxAttempts}): ${error instanceof Error ? error.message : String(error)}`);
|
|
15471
|
+
return;
|
|
15472
|
+
}
|
|
15473
|
+
if (attempt < maxAttempts) await this.sleep(100 * 2 ** (attempt - 1));
|
|
15474
|
+
}
|
|
15475
|
+
this.logger.debug(`MapPublicIpOnLaunch=${expected} not yet visible on ${subnetId} after ${maxAttempts} reads — the observed-state capture may record the stale value (issue #1299)`);
|
|
15188
15476
|
}
|
|
15189
15477
|
async deleteSubnet(logicalId, physicalId, resourceType, context) {
|
|
15190
15478
|
this.logger.debug(`Deleting Subnet ${logicalId}: ${physicalId}`);
|
|
@@ -16956,9 +17244,12 @@ var EC2Provider = class {
|
|
|
16956
17244
|
*
|
|
16957
17245
|
* Other EC2 types (`VPC` / `Subnet` / `InternetGateway` /
|
|
16958
17246
|
* `NatGateway` / `RouteTable` / `SecurityGroup` / `Instance` /
|
|
16959
|
-
* `NetworkAcl`) have first-class Tags support
|
|
16960
|
-
*
|
|
16961
|
-
* `
|
|
17247
|
+
* `NetworkAcl`) have first-class Tags support on the WRITE side
|
|
17248
|
+
* (create/update tag wiring) and don't need this declaration.
|
|
17249
|
+
* NOTE: `readVpcCurrentState` / `readSubnetCurrentState` do NOT
|
|
17250
|
+
* currently surface `Tags`, so Tags drift on those types is out of
|
|
17251
|
+
* v1 drift scope — `AWS::EC2::Subnet`'s `updateableProperties:
|
|
17252
|
+
* Tags` entry serves only the template-update path today.
|
|
16962
17253
|
*/
|
|
16963
17254
|
getDriftUnknownPaths(resourceType) {
|
|
16964
17255
|
switch (resourceType) {
|
|
@@ -21144,7 +21435,7 @@ var AgentCoreRuntimeProvider = class {
|
|
|
21144
21435
|
await this.client.send(new DeleteAgentRuntimeCommand({ agentRuntimeId: physicalId }));
|
|
21145
21436
|
this.logger.debug(`Successfully deleted BedrockAgentCore Runtime ${logicalId}`);
|
|
21146
21437
|
} catch (error) {
|
|
21147
|
-
if (error instanceof ResourceNotFoundException$
|
|
21438
|
+
if (error instanceof ResourceNotFoundException$6) {
|
|
21148
21439
|
assertRegionMatch(await this.client.config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
21149
21440
|
this.logger.debug(`Runtime ${physicalId} does not exist, skipping deletion`);
|
|
21150
21441
|
return;
|
|
@@ -21239,7 +21530,7 @@ var AgentCoreRuntimeProvider = class {
|
|
|
21239
21530
|
try {
|
|
21240
21531
|
resp = await this.client.send(new GetAgentRuntimeCommand({ agentRuntimeId: physicalId }));
|
|
21241
21532
|
} catch (err) {
|
|
21242
|
-
if (err instanceof ResourceNotFoundException$
|
|
21533
|
+
if (err instanceof ResourceNotFoundException$6) return void 0;
|
|
21243
21534
|
throw err;
|
|
21244
21535
|
}
|
|
21245
21536
|
const result = {};
|
|
@@ -21714,7 +22005,7 @@ var AgentCoreEvaluatorProvider = class {
|
|
|
21714
22005
|
await this.client.send(new DeleteEvaluatorCommand({ evaluatorId: evaluatorIdFromArn(physicalId) }));
|
|
21715
22006
|
this.logger.debug(`Successfully deleted BedrockAgentCore Evaluator ${logicalId}`);
|
|
21716
22007
|
} catch (error) {
|
|
21717
|
-
if (error instanceof ResourceNotFoundException$
|
|
22008
|
+
if (error instanceof ResourceNotFoundException$6) {
|
|
21718
22009
|
assertRegionMatch(await this.client.config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
21719
22010
|
this.logger.debug(`Evaluator ${physicalId} does not exist, skipping deletion`);
|
|
21720
22011
|
return;
|
|
@@ -21753,7 +22044,7 @@ var AgentCoreEvaluatorProvider = class {
|
|
|
21753
22044
|
try {
|
|
21754
22045
|
resp = await this.client.send(new GetEvaluatorCommand({ evaluatorId: evaluatorIdFromArn(physicalId) }));
|
|
21755
22046
|
} catch (err) {
|
|
21756
|
-
if (err instanceof ResourceNotFoundException$
|
|
22047
|
+
if (err instanceof ResourceNotFoundException$6) return void 0;
|
|
21757
22048
|
throw err;
|
|
21758
22049
|
}
|
|
21759
22050
|
const result = {};
|
|
@@ -28561,7 +28852,7 @@ var CognitoUserPoolProvider = class {
|
|
|
28561
28852
|
if (!templatedActive) try {
|
|
28562
28853
|
needsFlip = (await this.getClient().send(new DescribeUserPoolCommand({ UserPoolId: physicalId }))).UserPool?.DeletionProtection === "ACTIVE";
|
|
28563
28854
|
} catch (descError) {
|
|
28564
|
-
if (descError instanceof ResourceNotFoundException$
|
|
28855
|
+
if (descError instanceof ResourceNotFoundException$9) {
|
|
28565
28856
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
28566
28857
|
this.logger.debug(`Cognito User Pool ${physicalId} does not exist, skipping deletion`);
|
|
28567
28858
|
return;
|
|
@@ -28584,7 +28875,7 @@ var CognitoUserPoolProvider = class {
|
|
|
28584
28875
|
await this.getClient().send(new DeleteUserPoolCommand({ UserPoolId: physicalId }));
|
|
28585
28876
|
this.logger.debug(`Successfully deleted Cognito User Pool ${logicalId}`);
|
|
28586
28877
|
} catch (error) {
|
|
28587
|
-
if (error instanceof ResourceNotFoundException$
|
|
28878
|
+
if (error instanceof ResourceNotFoundException$9) {
|
|
28588
28879
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
28589
28880
|
this.logger.debug(`Cognito User Pool ${physicalId} does not exist, skipping deletion`);
|
|
28590
28881
|
return;
|
|
@@ -28617,7 +28908,7 @@ var CognitoUserPoolProvider = class {
|
|
|
28617
28908
|
try {
|
|
28618
28909
|
resp = await this.getClient().send(new DescribeUserPoolCommand({ UserPoolId: physicalId }));
|
|
28619
28910
|
} catch (err) {
|
|
28620
|
-
if (err instanceof ResourceNotFoundException$
|
|
28911
|
+
if (err instanceof ResourceNotFoundException$9) return void 0;
|
|
28621
28912
|
throw err;
|
|
28622
28913
|
}
|
|
28623
28914
|
const pool = resp.UserPool;
|
|
@@ -28691,7 +28982,7 @@ var CognitoUserPoolProvider = class {
|
|
|
28691
28982
|
attributes: {}
|
|
28692
28983
|
};
|
|
28693
28984
|
} catch (err) {
|
|
28694
|
-
if (err instanceof ResourceNotFoundException$
|
|
28985
|
+
if (err instanceof ResourceNotFoundException$9) return null;
|
|
28695
28986
|
throw err;
|
|
28696
28987
|
}
|
|
28697
28988
|
const desiredName = typeof input.properties?.["UserPoolName"] === "string" ? input.properties["UserPoolName"] : void 0;
|
|
@@ -33720,7 +34011,7 @@ var KinesisStreamProvider = class {
|
|
|
33720
34011
|
}));
|
|
33721
34012
|
this.logger.debug(`Successfully deleted Kinesis stream ${logicalId}`);
|
|
33722
34013
|
} catch (error) {
|
|
33723
|
-
if (error instanceof ResourceNotFoundException$
|
|
34014
|
+
if (error instanceof ResourceNotFoundException$10) {
|
|
33724
34015
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
33725
34016
|
this.logger.debug(`Kinesis stream ${physicalId} does not exist, skipping deletion`);
|
|
33726
34017
|
return;
|
|
@@ -33795,7 +34086,7 @@ var KinesisStreamProvider = class {
|
|
|
33795
34086
|
try {
|
|
33796
34087
|
stream = (await this.getClient().send(new DescribeStreamCommand({ StreamName: physicalId }))).StreamDescription;
|
|
33797
34088
|
} catch (err) {
|
|
33798
|
-
if (err instanceof ResourceNotFoundException$
|
|
34089
|
+
if (err instanceof ResourceNotFoundException$10) return void 0;
|
|
33799
34090
|
throw err;
|
|
33800
34091
|
}
|
|
33801
34092
|
if (!stream) return void 0;
|
|
@@ -33813,7 +34104,7 @@ var KinesisStreamProvider = class {
|
|
|
33813
34104
|
try {
|
|
33814
34105
|
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForStreamCommand({ StreamName: physicalId }))).Tags);
|
|
33815
34106
|
} catch (err) {
|
|
33816
|
-
if (err instanceof ResourceNotFoundException$
|
|
34107
|
+
if (err instanceof ResourceNotFoundException$10) return void 0;
|
|
33817
34108
|
this.logger.debug(`Kinesis ListTagsForStream(${physicalId}) failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
33818
34109
|
}
|
|
33819
34110
|
return result;
|
|
@@ -33827,7 +34118,7 @@ var KinesisStreamProvider = class {
|
|
|
33827
34118
|
attributes: {}
|
|
33828
34119
|
};
|
|
33829
34120
|
} catch (err) {
|
|
33830
|
-
if (err instanceof ResourceNotFoundException$
|
|
34121
|
+
if (err instanceof ResourceNotFoundException$10) return null;
|
|
33831
34122
|
throw err;
|
|
33832
34123
|
}
|
|
33833
34124
|
return null;
|
|
@@ -34015,7 +34306,7 @@ var KinesisStreamConsumerProvider = class {
|
|
|
34015
34306
|
await this.getClient().send(new DeregisterStreamConsumerCommand({ ConsumerARN: physicalId }));
|
|
34016
34307
|
this.logger.debug(`Successfully deregistered Kinesis stream consumer ${logicalId}`);
|
|
34017
34308
|
} catch (error) {
|
|
34018
|
-
if (error instanceof ResourceNotFoundException$
|
|
34309
|
+
if (error instanceof ResourceNotFoundException$10) {
|
|
34019
34310
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
34020
34311
|
this.logger.debug(`Kinesis stream consumer ${physicalId} not found, skipping`);
|
|
34021
34312
|
return;
|
|
@@ -34061,7 +34352,7 @@ var KinesisStreamConsumerProvider = class {
|
|
|
34061
34352
|
try {
|
|
34062
34353
|
desc = (await this.getClient().send(new DescribeStreamConsumerCommand({ ConsumerARN: physicalId }))).ConsumerDescription;
|
|
34063
34354
|
} catch (err) {
|
|
34064
|
-
if (err instanceof ResourceNotFoundException$
|
|
34355
|
+
if (err instanceof ResourceNotFoundException$10) return void 0;
|
|
34065
34356
|
throw err;
|
|
34066
34357
|
}
|
|
34067
34358
|
if (!desc) return void 0;
|
|
@@ -34071,7 +34362,7 @@ var KinesisStreamConsumerProvider = class {
|
|
|
34071
34362
|
try {
|
|
34072
34363
|
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForResourceCommand$15({ ResourceARN: physicalId }))).Tags);
|
|
34073
34364
|
} catch (err) {
|
|
34074
|
-
if (err instanceof ResourceNotFoundException$
|
|
34365
|
+
if (err instanceof ResourceNotFoundException$10) return void 0;
|
|
34075
34366
|
this.logger.debug(`ListTagsForResource(${physicalId}) failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
34076
34367
|
result["Tags"] = [];
|
|
34077
34368
|
}
|
|
@@ -34277,7 +34568,7 @@ var SchedulerScheduleProvider = class {
|
|
|
34277
34568
|
}));
|
|
34278
34569
|
this.logger.debug(`Deleted Schedule ${logicalId}`);
|
|
34279
34570
|
} catch (error) {
|
|
34280
|
-
if (error instanceof ResourceNotFoundException$
|
|
34571
|
+
if (error instanceof ResourceNotFoundException$11) {
|
|
34281
34572
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
34282
34573
|
this.logger.debug(`Schedule ${logicalId} already deleted (not found), treating as success`);
|
|
34283
34574
|
return;
|
|
@@ -34299,7 +34590,7 @@ var SchedulerScheduleProvider = class {
|
|
|
34299
34590
|
return (await this.getClient().send(new GetScheduleCommand({ Name: physicalId }))).Arn;
|
|
34300
34591
|
} catch (error) {
|
|
34301
34592
|
const cause = error instanceof Error ? error : void 0;
|
|
34302
|
-
const customGroupHint = error instanceof ResourceNotFoundException$
|
|
34593
|
+
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." : "";
|
|
34303
34594
|
throw new ProvisioningError(`Failed to resolve Arn for Schedule ${physicalId}: ${cause?.message ?? String(error)}.${customGroupHint}`, resourceType, physicalId, physicalId, cause);
|
|
34304
34595
|
}
|
|
34305
34596
|
}
|
|
@@ -34329,7 +34620,7 @@ var SchedulerScheduleProvider = class {
|
|
|
34329
34620
|
...response.Target !== void 0 && { Target: response.Target }
|
|
34330
34621
|
};
|
|
34331
34622
|
} catch (error) {
|
|
34332
|
-
if (error instanceof ResourceNotFoundException$
|
|
34623
|
+
if (error instanceof ResourceNotFoundException$11) return;
|
|
34333
34624
|
throw error;
|
|
34334
34625
|
}
|
|
34335
34626
|
}
|
|
@@ -34355,7 +34646,7 @@ var SchedulerScheduleProvider = class {
|
|
|
34355
34646
|
attributes: response.Arn ? { Arn: response.Arn } : {}
|
|
34356
34647
|
};
|
|
34357
34648
|
} catch (error) {
|
|
34358
|
-
if (error instanceof ResourceNotFoundException$
|
|
34649
|
+
if (error instanceof ResourceNotFoundException$11) return null;
|
|
34359
34650
|
throw error;
|
|
34360
34651
|
}
|
|
34361
34652
|
}
|
|
@@ -38014,7 +38305,7 @@ var FirehoseProvider = class {
|
|
|
38014
38305
|
await this.getClient().send(new DeleteDeliveryStreamCommand({ DeliveryStreamName: physicalId }));
|
|
38015
38306
|
this.logger.debug(`Successfully deleted Firehose delivery stream ${logicalId}`);
|
|
38016
38307
|
} catch (error) {
|
|
38017
|
-
if (error instanceof ResourceNotFoundException$
|
|
38308
|
+
if (error instanceof ResourceNotFoundException$12) {
|
|
38018
38309
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
38019
38310
|
this.logger.debug(`Firehose delivery stream ${physicalId} does not exist, skipping deletion`);
|
|
38020
38311
|
return;
|
|
@@ -38551,7 +38842,7 @@ var FirehoseProvider = class {
|
|
|
38551
38842
|
try {
|
|
38552
38843
|
desc = (await this.getClient().send(new DescribeDeliveryStreamCommand({ DeliveryStreamName: physicalId }))).DeliveryStreamDescription;
|
|
38553
38844
|
} catch (err) {
|
|
38554
|
-
if (err instanceof ResourceNotFoundException$
|
|
38845
|
+
if (err instanceof ResourceNotFoundException$12) return void 0;
|
|
38555
38846
|
throw err;
|
|
38556
38847
|
}
|
|
38557
38848
|
if (!desc) return void 0;
|
|
@@ -38582,7 +38873,7 @@ var FirehoseProvider = class {
|
|
|
38582
38873
|
try {
|
|
38583
38874
|
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForDeliveryStreamCommand({ DeliveryStreamName: physicalId }))).Tags);
|
|
38584
38875
|
} catch (err) {
|
|
38585
|
-
if (err instanceof ResourceNotFoundException$
|
|
38876
|
+
if (err instanceof ResourceNotFoundException$12) return void 0;
|
|
38586
38877
|
this.logger.debug(`Firehose ListTagsForDeliveryStream(${physicalId}) failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
38587
38878
|
result["Tags"] = [];
|
|
38588
38879
|
}
|
|
@@ -38619,7 +38910,7 @@ var FirehoseProvider = class {
|
|
|
38619
38910
|
attributes: {}
|
|
38620
38911
|
};
|
|
38621
38912
|
} catch (err) {
|
|
38622
|
-
if (err instanceof ResourceNotFoundException$
|
|
38913
|
+
if (err instanceof ResourceNotFoundException$12) return null;
|
|
38623
38914
|
throw err;
|
|
38624
38915
|
}
|
|
38625
38916
|
return null;
|
|
@@ -39361,7 +39652,7 @@ var CodeBuildProvider = class {
|
|
|
39361
39652
|
await this.getClient().send(new DeleteProjectCommand({ name: physicalId }));
|
|
39362
39653
|
this.logger.debug(`Successfully deleted CodeBuild Project ${logicalId}`);
|
|
39363
39654
|
} catch (error) {
|
|
39364
|
-
if (error instanceof ResourceNotFoundException$
|
|
39655
|
+
if (error instanceof ResourceNotFoundException$13) {
|
|
39365
39656
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
39366
39657
|
this.logger.debug(`CodeBuild Project ${physicalId} does not exist, skipping deletion`);
|
|
39367
39658
|
return;
|
|
@@ -39416,7 +39707,7 @@ var CodeBuildProvider = class {
|
|
|
39416
39707
|
try {
|
|
39417
39708
|
project = (await this.getClient().send(new BatchGetProjectsCommand({ names: [physicalId] }))).projects?.[0];
|
|
39418
39709
|
} catch (err) {
|
|
39419
|
-
if (err instanceof ResourceNotFoundException$
|
|
39710
|
+
if (err instanceof ResourceNotFoundException$13) return void 0;
|
|
39420
39711
|
throw err;
|
|
39421
39712
|
}
|
|
39422
39713
|
if (!project) return void 0;
|
|
@@ -39561,7 +39852,7 @@ var CodeBuildProvider = class {
|
|
|
39561
39852
|
attributes: {}
|
|
39562
39853
|
} : null;
|
|
39563
39854
|
} catch (err) {
|
|
39564
|
-
if (err instanceof ResourceNotFoundException$
|
|
39855
|
+
if (err instanceof ResourceNotFoundException$13) return null;
|
|
39565
39856
|
throw err;
|
|
39566
39857
|
}
|
|
39567
39858
|
return null;
|
|
@@ -40281,7 +40572,7 @@ var DLMLifecyclePolicyProvider = class {
|
|
|
40281
40572
|
await this.getClient().send(new DeleteLifecyclePolicyCommand$1({ PolicyId: physicalId }));
|
|
40282
40573
|
this.logger.debug(`Successfully deleted DLM Lifecycle Policy ${logicalId}`);
|
|
40283
40574
|
} catch (error) {
|
|
40284
|
-
if (error instanceof ResourceNotFoundException$
|
|
40575
|
+
if (error instanceof ResourceNotFoundException$14) {
|
|
40285
40576
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
40286
40577
|
this.logger.debug(`DLM Lifecycle Policy ${physicalId} does not exist, skipping deletion`);
|
|
40287
40578
|
return;
|
|
@@ -40332,7 +40623,7 @@ var DLMLifecyclePolicyProvider = class {
|
|
|
40332
40623
|
Tags: normalizeAwsTagsToCfn(policy.Tags)
|
|
40333
40624
|
};
|
|
40334
40625
|
} catch (error) {
|
|
40335
|
-
if (error instanceof ResourceNotFoundException$
|
|
40626
|
+
if (error instanceof ResourceNotFoundException$14) return;
|
|
40336
40627
|
throw error;
|
|
40337
40628
|
}
|
|
40338
40629
|
}
|
|
@@ -40368,7 +40659,7 @@ var DLMLifecyclePolicyProvider = class {
|
|
|
40368
40659
|
attributes: response.Policy.PolicyArn ? { Arn: response.Policy.PolicyArn } : {}
|
|
40369
40660
|
} : null;
|
|
40370
40661
|
} catch (err) {
|
|
40371
|
-
if (err instanceof ResourceNotFoundException$
|
|
40662
|
+
if (err instanceof ResourceNotFoundException$14) return null;
|
|
40372
40663
|
throw err;
|
|
40373
40664
|
}
|
|
40374
40665
|
return null;
|
|
@@ -42704,7 +42995,7 @@ var ACMCertificateProvider = class {
|
|
|
42704
42995
|
try {
|
|
42705
42996
|
await this.acmClient.send(new DeleteCertificateCommand({ CertificateArn: physicalId }));
|
|
42706
42997
|
} catch (error) {
|
|
42707
|
-
if (error instanceof ResourceNotFoundException$
|
|
42998
|
+
if (error instanceof ResourceNotFoundException$7) {
|
|
42708
42999
|
assertRegionMatch(await this.acmClient.config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
42709
43000
|
this.logger.debug(`Certificate ${physicalId} does not exist, skipping deletion`);
|
|
42710
43001
|
return;
|
|
@@ -42742,7 +43033,7 @@ var ACMCertificateProvider = class {
|
|
|
42742
43033
|
try {
|
|
42743
43034
|
cert = (await this.acmClient.send(new DescribeCertificateCommand({ CertificateArn: physicalId }))).Certificate;
|
|
42744
43035
|
} catch (err) {
|
|
42745
|
-
if (err instanceof ResourceNotFoundException$
|
|
43036
|
+
if (err instanceof ResourceNotFoundException$7) return void 0;
|
|
42746
43037
|
throw err;
|
|
42747
43038
|
}
|
|
42748
43039
|
if (!cert) return void 0;
|
|
@@ -42756,7 +43047,7 @@ var ACMCertificateProvider = class {
|
|
|
42756
43047
|
try {
|
|
42757
43048
|
result["Tags"] = normalizeAwsTagsToCfn((await this.acmClient.send(new ListTagsForCertificateCommand({ CertificateArn: physicalId }))).Tags);
|
|
42758
43049
|
} catch (err) {
|
|
42759
|
-
if (!(err instanceof ResourceNotFoundException$
|
|
43050
|
+
if (!(err instanceof ResourceNotFoundException$7)) throw err;
|
|
42760
43051
|
}
|
|
42761
43052
|
return result;
|
|
42762
43053
|
}
|
|
@@ -42787,7 +43078,7 @@ var ACMCertificateProvider = class {
|
|
|
42787
43078
|
}
|
|
42788
43079
|
};
|
|
42789
43080
|
} catch (err) {
|
|
42790
|
-
if (err instanceof ResourceNotFoundException$
|
|
43081
|
+
if (err instanceof ResourceNotFoundException$7) return null;
|
|
42791
43082
|
throw err;
|
|
42792
43083
|
}
|
|
42793
43084
|
}
|
|
@@ -42909,6 +43200,7 @@ function registerAllProviders(registry) {
|
|
|
42909
43200
|
registry.register("AWS::DynamoDB::GlobalTable", new DynamoDBGlobalTableProvider());
|
|
42910
43201
|
registry.register("AWS::Logs::LogGroup", new LogsLogGroupProvider());
|
|
42911
43202
|
registry.register("AWS::CloudWatch::Alarm", new CloudWatchAlarmProvider());
|
|
43203
|
+
registry.register("AWS::CloudWatch::AnomalyDetector", new CloudWatchAnomalyDetectorProvider());
|
|
42912
43204
|
registry.register("AWS::SecretsManager::Secret", new SecretsManagerSecretProvider());
|
|
42913
43205
|
registry.register("AWS::SSM::Parameter", new SSMParameterProvider());
|
|
42914
43206
|
registry.register("AWS::Events::Rule", new EventBridgeRuleProvider());
|
|
@@ -62870,7 +63162,7 @@ function createMigrateCommand() {
|
|
|
62870
63162
|
*/
|
|
62871
63163
|
function buildProgram() {
|
|
62872
63164
|
const program = new Command();
|
|
62873
|
-
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.
|
|
63165
|
+
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.270.0");
|
|
62874
63166
|
program.hook("preAction", (_thisCommand, actionCommand) => {
|
|
62875
63167
|
const { profile } = actionCommand.optsWithGlobals();
|
|
62876
63168
|
if (profile !== void 0) process.env["AWS_PROFILE"] = profile;
|