@go-to-k/cdkd 0.257.1 → 0.257.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{asg-provider-6IZKZOKp.js → asg-provider-Co34HfIH.js} +2 -2
- package/dist/{asg-provider-6IZKZOKp.js.map → asg-provider-Co34HfIH.js.map} +1 -1
- package/dist/cli.js +194 -691
- package/dist/cli.js.map +1 -1
- package/dist/{deploy-engine-DOPBIRKR.js → deploy-engine-0U3bYBq4.js} +73 -12
- package/dist/deploy-engine-0U3bYBq4.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/deploy-engine-DOPBIRKR.js.map +0 -1
package/dist/cli.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { $ as
|
|
2
|
+
import { $ as AssetModeResolver, $t as StackTerminationProtectionError, A as importTagWalk, At as expectedOwnerParam, B as DagBuilder, C as slowCcOperationTimeoutMs, Ct as resolveUseCdkBootstrapAssets, D as cfnRefValueFromPhysicalId, Dt as MIGRATE_TMP_PREFIX, E as IntrinsicFunctionResolver, Et as CFN_TEMPLATE_URL_LIMIT, F as normalizeAwsTagsToCfn, Ft as getAwsClients, G as shouldRetainResource, H as LockManager, Ht as LocalInvokeBuildError$1, I as resolveExplicitPhysicalId, It as resetAwsClients, J as WorkGraph, Jt as PartialFailureError, K as AssetPublisher, Kt as MissingCdkCliError, L as assertRegionMatch, Lt as setAwsClients, M as isRetryableTransientError, N as CDK_PATH_TAG, Nt as resolveBucketRegion, O as refStateLookupFromResource, Ot as findLargeInlineResources, P as matchesCdkPath, Pt as AwsClients, Q as rewriteTemplateAssetReferences, Qt as StackHasActiveImportsError, R as applyRoleArnIfSet, S as CloudControlProvider, St as resolveStateBucketWithDefaultAndSource, T as isTerminationProtectionPropagationError, Tt as CFN_TEMPLATE_BODY_LIMIT, U as S3StateBackend, Ut as LocalMigrateError, V as TemplateParser, W as rebuildClientForBucketRegion, Wt as LocalStartServiceError, X as createAssetRedirectResolver, Xt as ResourceTimeoutError, Y as buildAssetRedirectMap, Yt as ProvisioningError, Z as loadPublishableAssetManifest, Zt as ResourceUpdateNotSupportedError, _ as yellow, _t as resolveApp, a as IMPLICIT_DELETE_DEPENDENCIES, an as withErrorHandling, at as validateContainerRepoName, b as ProviderRegistry, bt as resolveSkipPrefix, c as MULTI_REGION_RECREATE_BLOCKED_TYPES, ct as getDockerCmd, d as formatResourceLine, dt as AssetManifestLoader, et as BOOTSTRAP_MARKER_PREFIX, f as bold, ft as getDockerImageBySourceHash, g as red, gt as getLegacyStateBucketName, h as green, ht as getDefaultStateBucketName, i as withResourceDeadline, in as normalizeAwsError, it as validateAssetBucketName, j as withRetry, jt as AssemblyReader, k as WAFv2WebACLProvider, kt as uploadCfnTemplate, l as isStatefulRecreateTargetSync, lt as runDockerForeground, m as gray, mt as synthesisStatusMessage, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nt as getBootstrapMarkerKey, o as computeImplicitDeleteEdges, ot as buildDockerImage, p as cyan, pt as Synthesizer, q as stringifyValue, qt as NestedStackChildDirectDestroyError, r as DeployEngine, rt as parseBootstrapMarker, s as extractDeploymentEventError, st as formatDockerLoginError, t as DEFAULT_RESOURCE_TIMEOUT_MS, tt as ensureAssetStorage, u as renderStatefulReason, ut as runDockerStreaming, v as IAMRoleProvider, vt as resolveAutoAssetStorage, w as disableInstanceApiTermination, wt as warnDeprecatedNoPrefixCliFlag, x as findActionableSilentDrops, xt as resolveStateBucketWithDefault, y as collectInlinePolicyNamesManagedBySiblings, yt as resolveCaptureObservedState, z as DiffCalculator, zt as CdkdError } from "./deploy-engine-0U3bYBq4.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-Co34HfIH.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, ListBucketsCommand, ListDirectoryBucketsCommand, 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";
|
|
8
|
-
import { AddRoleToInstanceProfileCommand, AddUserToGroupCommand, AttachGroupPolicyCommand, AttachRolePolicyCommand, AttachUserPolicyCommand, CreateGroupCommand, CreateInstanceProfileCommand, CreateLoginProfileCommand, CreatePolicyCommand, CreatePolicyVersionCommand, CreateUserCommand, DeleteAccessKeyCommand, DeleteGroupCommand, DeleteGroupPolicyCommand, DeleteInstanceProfileCommand, DeleteLoginProfileCommand, DeletePolicyCommand, DeletePolicyVersionCommand, DeleteRolePolicyCommand, DeleteUserCommand, DeleteUserPermissionsBoundaryCommand, DeleteUserPolicyCommand, DetachGroupPolicyCommand, DetachRolePolicyCommand, DetachUserPolicyCommand, GetGroupCommand, GetGroupPolicyCommand, GetInstanceProfileCommand, GetPolicyCommand, GetPolicyVersionCommand, GetRolePolicyCommand, GetUserCommand, GetUserPolicyCommand, IAMClient, ListAccessKeysCommand, ListAttachedGroupPoliciesCommand, ListAttachedUserPoliciesCommand, ListEntitiesForPolicyCommand, ListGroupPoliciesCommand, ListGroupsForUserCommand, ListInstanceProfilesCommand, ListPoliciesCommand, ListPolicyTagsCommand, ListPolicyVersionsCommand, ListUserPoliciesCommand,
|
|
8
|
+
import { AddRoleToInstanceProfileCommand, AddUserToGroupCommand, AttachGroupPolicyCommand, AttachRolePolicyCommand, AttachUserPolicyCommand, CreateGroupCommand, CreateInstanceProfileCommand, CreateLoginProfileCommand, CreatePolicyCommand, CreatePolicyVersionCommand, CreateUserCommand, DeleteAccessKeyCommand, DeleteGroupCommand, DeleteGroupPolicyCommand, DeleteInstanceProfileCommand, DeleteLoginProfileCommand, DeletePolicyCommand, DeletePolicyVersionCommand, DeleteRolePolicyCommand, DeleteUserCommand, DeleteUserPermissionsBoundaryCommand, DeleteUserPolicyCommand, DetachGroupPolicyCommand, DetachRolePolicyCommand, DetachUserPolicyCommand, GetGroupCommand, GetGroupPolicyCommand, GetInstanceProfileCommand, GetPolicyCommand, GetPolicyVersionCommand, GetRolePolicyCommand, GetUserCommand, GetUserPolicyCommand, IAMClient, ListAccessKeysCommand, ListAttachedGroupPoliciesCommand, ListAttachedUserPoliciesCommand, ListEntitiesForPolicyCommand, ListGroupPoliciesCommand, ListGroupsForUserCommand, ListInstanceProfilesCommand, ListPoliciesCommand, ListPolicyTagsCommand, ListPolicyVersionsCommand, ListUserPoliciesCommand, NoSuchEntityException, PutGroupPolicyCommand, PutRolePolicyCommand, PutUserPermissionsBoundaryCommand, PutUserPolicyCommand, RemoveRoleFromInstanceProfileCommand, RemoveUserFromGroupCommand, TagPolicyCommand, TagUserCommand, UntagPolicyCommand, UntagUserCommand, UpdateLoginProfileCommand } from "@aws-sdk/client-iam";
|
|
9
9
|
import { CreateQueueCommand, DeleteQueueCommand, GetQueueAttributesCommand, GetQueueUrlCommand, ListQueueTagsCommand, ListQueuesCommand, QueueDoesNotExist, SQSClient, SetQueueAttributesCommand, TagQueueCommand, UntagQueueCommand } from "@aws-sdk/client-sqs";
|
|
10
10
|
import { CreateTopicCommand, DeleteTopicCommand, GetSubscriptionAttributesCommand, GetTopicAttributesCommand, ListSubscriptionsByTopicCommand, ListTagsForResourceCommand, ListTopicsCommand, NotFoundException, SNSClient, SetTopicAttributesCommand, SubscribeCommand, TagResourceCommand, UnsubscribeCommand, UntagResourceCommand } from "@aws-sdk/client-sns";
|
|
11
11
|
import { AddPermissionCommand, CreateEventSourceMappingCommand, CreateFunctionCommand, CreateFunctionUrlConfigCommand, DeleteEventSourceMappingCommand, DeleteFunctionCommand, DeleteFunctionConcurrencyCommand, DeleteFunctionEventInvokeConfigCommand, DeleteFunctionUrlConfigCommand, DeleteLayerVersionCommand, GetEventSourceMappingCommand, GetFunctionCommand, GetFunctionConcurrencyCommand, GetFunctionEventInvokeConfigCommand, GetFunctionRecursionConfigCommand, GetFunctionUrlConfigCommand, GetLayerVersionByArnCommand, GetPolicyCommand as GetPolicyCommand$1, LambdaClient, ListFunctionsCommand, ListLayersCommand, ListTagsCommand, PublishLayerVersionCommand, PutFunctionConcurrencyCommand, PutFunctionEventInvokeConfigCommand, PutFunctionRecursionConfigCommand, RemovePermissionCommand, ResourceNotFoundException, TagResourceCommand as TagResourceCommand$1, UntagResourceCommand as UntagResourceCommand$1, UpdateEventSourceMappingCommand, UpdateFunctionCodeCommand, UpdateFunctionConfigurationCommand, UpdateFunctionUrlConfigCommand, waitUntilFunctionUpdatedV2 } from "@aws-sdk/client-lambda";
|
|
@@ -28,7 +28,7 @@ import * as path from "node:path";
|
|
|
28
28
|
import { basename, dirname, isAbsolute, join, resolve } from "node:path";
|
|
29
29
|
import { execFile, spawn } from "node:child_process";
|
|
30
30
|
import { tmpdir } from "node:os";
|
|
31
|
-
import { AssociateVPCWithHostedZoneCommand, ChangeResourceRecordSetsCommand, ChangeTagsForResourceCommand, CreateHostedZoneCommand, CreateQueryLoggingConfigCommand, DeleteHostedZoneCommand, DeleteQueryLoggingConfigCommand, DisassociateVPCFromHostedZoneCommand, GetHostedZoneCommand, ListHostedZonesByNameCommand,
|
|
31
|
+
import { AssociateVPCWithHostedZoneCommand, ChangeResourceRecordSetsCommand, ChangeTagsForResourceCommand, CreateHostedZoneCommand, CreateQueryLoggingConfigCommand, DeleteHostedZoneCommand, DeleteQueryLoggingConfigCommand, DisassociateVPCFromHostedZoneCommand, GetHostedZoneCommand, ListHostedZonesByNameCommand, ListQueryLoggingConfigsCommand, ListResourceRecordSetsCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$7, Route53Client, UpdateHostedZoneCommentCommand, UpdateHostedZoneFeaturesCommand } from "@aws-sdk/client-route-53";
|
|
32
32
|
import { AddTagsCommand, CreateListenerCommand, CreateLoadBalancerCommand, CreateTargetGroupCommand, DeleteListenerCommand, DeleteLoadBalancerCommand, DeleteTargetGroupCommand, DescribeListenerAttributesCommand, DescribeListenersCommand, DescribeLoadBalancerAttributesCommand, DescribeLoadBalancersCommand, DescribeTagsCommand, DescribeTargetGroupsCommand, ElasticLoadBalancingV2Client, ModifyListenerAttributesCommand, ModifyListenerCommand, ModifyLoadBalancerAttributesCommand, ModifyTargetGroupCommand, RemoveTagsCommand, SetIpAddressTypeCommand, SetSecurityGroupsCommand, SetSubnetsCommand } from "@aws-sdk/client-elastic-load-balancing-v2";
|
|
33
33
|
import { CreateAliasCommand, CreateKeyCommand, DeleteAliasCommand, DescribeKeyCommand, DisableKeyCommand, DisableKeyRotationCommand, EnableKeyCommand, EnableKeyRotationCommand, GetKeyPolicyCommand, GetKeyRotationStatusCommand, KMSClient, ListAliasesCommand, ListKeysCommand, ListResourceTagsCommand, NotFoundException as NotFoundException$2, PutKeyPolicyCommand, ScheduleKeyDeletionCommand, TagResourceCommand as TagResourceCommand$10, UntagResourceCommand as UntagResourceCommand$10, UpdateAliasCommand, UpdateKeyDescriptionCommand } from "@aws-sdk/client-kms";
|
|
34
34
|
import { join as join$1 } from "path";
|
|
@@ -42,30 +42,30 @@ import readline from "node:readline/promises";
|
|
|
42
42
|
import { writeFileSync as writeFileSync$1 } from "fs";
|
|
43
43
|
import * as zlib from "node:zlib";
|
|
44
44
|
import { ApplicationAutoScalingClient, DeleteScalingPolicyCommand, DeregisterScalableTargetCommand, DescribeScalableTargetsCommand, DescribeScalingPoliciesCommand, PutScalingPolicyCommand, RegisterScalableTargetCommand } from "@aws-sdk/client-application-auto-scaling";
|
|
45
|
-
import { ApiGatewayV2Client, CreateApiCommand, CreateAuthorizerCommand as CreateAuthorizerCommand$1, CreateIntegrationCommand, CreateRouteCommand as CreateRouteCommand$1, CreateStageCommand as CreateStageCommand$1, DeleteApiCommand, DeleteAuthorizerCommand as DeleteAuthorizerCommand$1, DeleteIntegrationCommand, DeleteRouteCommand as DeleteRouteCommand$1, DeleteStageCommand as DeleteStageCommand$1, GetApiCommand,
|
|
45
|
+
import { ApiGatewayV2Client, CreateApiCommand, CreateAuthorizerCommand as CreateAuthorizerCommand$1, CreateIntegrationCommand, CreateRouteCommand as CreateRouteCommand$1, CreateStageCommand as CreateStageCommand$1, DeleteApiCommand, DeleteAuthorizerCommand as DeleteAuthorizerCommand$1, DeleteIntegrationCommand, DeleteRouteCommand as DeleteRouteCommand$1, DeleteStageCommand as DeleteStageCommand$1, GetApiCommand, GetAuthorizerCommand as GetAuthorizerCommand$1, GetIntegrationCommand, GetRouteCommand, GetStageCommand as GetStageCommand$1, NotFoundException as NotFoundException$3, UpdateApiCommand, UpdateAuthorizerCommand as UpdateAuthorizerCommand$1, UpdateIntegrationCommand, UpdateRouteCommand, UpdateStageCommand as UpdateStageCommand$1 } from "@aws-sdk/client-apigatewayv2";
|
|
46
46
|
import { CreateStateMachineCommand, DeleteStateMachineCommand, DescribeStateMachineCommand, ListStateMachinesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$11, SFNClient, StateMachineDoesNotExist, TagResourceCommand as TagResourceCommand$12, UntagResourceCommand as UntagResourceCommand$12, UpdateStateMachineCommand } from "@aws-sdk/client-sfn";
|
|
47
|
-
import { CreateClusterCommand, CreateServiceCommand, DeleteClusterCommand, DeleteServiceCommand, DeregisterTaskDefinitionCommand, DescribeClustersCommand, DescribeServicesCommand, DescribeTaskDefinitionCommand, ECSClient,
|
|
48
|
-
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$
|
|
49
|
-
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$
|
|
50
|
-
import { AddCustomAttributesCommand, CognitoIdentityProviderClient, CreateUserPoolCommand, DeleteUserPoolCommand, DescribeUserPoolCommand, GetUserPoolMfaConfigCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$
|
|
51
|
-
import { CreateHttpNamespaceCommand, CreatePrivateDnsNamespaceCommand, CreatePublicDnsNamespaceCommand, CreateServiceCommand as CreateServiceCommand$1, DeleteNamespaceCommand, DeleteServiceAttributesCommand, DeleteServiceCommand as DeleteServiceCommand$1, GetNamespaceCommand, GetOperationCommand, GetServiceAttributesCommand, GetServiceCommand, ListNamespacesCommand,
|
|
52
|
-
import { AppSyncClient, CreateApiKeyCommand, CreateDataSourceCommand, CreateGraphqlApiCommand, CreateResolverCommand, DeleteApiKeyCommand, DeleteDataSourceCommand, DeleteGraphqlApiCommand, DeleteResolverCommand, GetDataSourceCommand, GetGraphqlApiCommand, GetIntrospectionSchemaCommand, GetResolverCommand, ListApiKeysCommand,
|
|
47
|
+
import { CreateClusterCommand, CreateServiceCommand, DeleteClusterCommand, DeleteServiceCommand, DeregisterTaskDefinitionCommand, DescribeClustersCommand, DescribeServicesCommand, DescribeTaskDefinitionCommand, ECSClient, PutClusterCapacityProvidersCommand, RegisterTaskDefinitionCommand, TagResourceCommand as TagResourceCommand$13, UntagResourceCommand as UntagResourceCommand$13, UpdateClusterCommand, UpdateServiceCommand } from "@aws-sdk/client-ecs";
|
|
48
|
+
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";
|
|
49
|
+
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";
|
|
50
|
+
import { AddCustomAttributesCommand, CognitoIdentityProviderClient, CreateUserPoolCommand, DeleteUserPoolCommand, DescribeUserPoolCommand, GetUserPoolMfaConfigCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$14, ListUserPoolsCommand, ResourceNotFoundException as ResourceNotFoundException$7, SetUserPoolMfaConfigCommand, UpdateUserPoolCommand } from "@aws-sdk/client-cognito-identity-provider";
|
|
51
|
+
import { CreateHttpNamespaceCommand, CreatePrivateDnsNamespaceCommand, CreatePublicDnsNamespaceCommand, CreateServiceCommand as CreateServiceCommand$1, DeleteNamespaceCommand, DeleteServiceAttributesCommand, DeleteServiceCommand as DeleteServiceCommand$1, GetNamespaceCommand, GetOperationCommand, GetServiceAttributesCommand, GetServiceCommand, ListNamespacesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$15, NamespaceNotFound, ServiceDiscoveryClient, ServiceNotFound, TagResourceCommand as TagResourceCommand$14, UntagResourceCommand as UntagResourceCommand$14, UpdateHttpNamespaceCommand, UpdatePrivateDnsNamespaceCommand, UpdatePublicDnsNamespaceCommand, UpdateServiceAttributesCommand, UpdateServiceCommand as UpdateServiceCommand$1 } from "@aws-sdk/client-servicediscovery";
|
|
52
|
+
import { AppSyncClient, CreateApiKeyCommand, CreateDataSourceCommand, CreateGraphqlApiCommand, CreateResolverCommand, DeleteApiKeyCommand, DeleteDataSourceCommand, DeleteGraphqlApiCommand, DeleteResolverCommand, GetDataSourceCommand, GetGraphqlApiCommand, GetIntrospectionSchemaCommand, GetResolverCommand, ListApiKeysCommand, NotFoundException as NotFoundException$4, StartSchemaCreationCommand, TagResourceCommand as TagResourceCommand$15, UntagResourceCommand as UntagResourceCommand$15, UpdateApiKeyCommand, UpdateDataSourceCommand, UpdateGraphqlApiCommand, UpdateResolverCommand } from "@aws-sdk/client-appsync";
|
|
53
53
|
import { parse, print } from "graphql";
|
|
54
|
-
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,
|
|
55
|
-
import { BudgetsClient, CreateBudgetCommand, CreateNotificationCommand, CreateSubscriberCommand, DeleteBudgetCommand, DeleteNotificationCommand, DeleteSubscriberCommand, DescribeBudgetCommand, DescribeBudgetsCommand, DuplicateRecordException, ListTagsForResourceCommand as ListTagsForResourceCommand$
|
|
56
|
-
import { AddTagsToStreamCommand, CreateStreamCommand, DecreaseStreamRetentionPeriodCommand, DeleteStreamCommand, DeregisterStreamConsumerCommand, DescribeStreamCommand, DescribeStreamConsumerCommand, DescribeStreamSummaryCommand, IncreaseStreamRetentionPeriodCommand, KinesisClient, ListStreamsCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$
|
|
54
|
+
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";
|
|
55
|
+
import { BudgetsClient, CreateBudgetCommand, CreateNotificationCommand, CreateSubscriberCommand, DeleteBudgetCommand, DeleteNotificationCommand, DeleteSubscriberCommand, DescribeBudgetCommand, DescribeBudgetsCommand, DuplicateRecordException, ListTagsForResourceCommand as ListTagsForResourceCommand$16, NotFoundException as NotFoundException$5, TagResourceCommand as TagResourceCommand$16, UntagResourceCommand as UntagResourceCommand$16, UpdateBudgetCommand } from "@aws-sdk/client-budgets";
|
|
56
|
+
import { AddTagsToStreamCommand, CreateStreamCommand, DecreaseStreamRetentionPeriodCommand, DeleteStreamCommand, DeregisterStreamConsumerCommand, DescribeStreamCommand, DescribeStreamConsumerCommand, DescribeStreamSummaryCommand, IncreaseStreamRetentionPeriodCommand, KinesisClient, ListStreamsCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$17, ListTagsForStreamCommand, RegisterStreamConsumerCommand, RemoveTagsFromStreamCommand, ResourceNotFoundException as ResourceNotFoundException$8, StartStreamEncryptionCommand, StopStreamEncryptionCommand, TagResourceCommand as TagResourceCommand$17, UntagResourceCommand as UntagResourceCommand$17, UpdateShardCountCommand, UpdateStreamModeCommand } from "@aws-sdk/client-kinesis";
|
|
57
57
|
import { CreateScheduleCommand, DeleteScheduleCommand, GetScheduleCommand, ResourceNotFoundException as ResourceNotFoundException$9, SchedulerClient, UpdateScheduleCommand } from "@aws-sdk/client-scheduler";
|
|
58
58
|
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";
|
|
59
59
|
import { CreateFileSystemCommand as CreateFileSystemCommand$1, CreateFileSystemFromBackupCommand, DeleteFileSystemCommand as DeleteFileSystemCommand$1, DescribeFileSystemsCommand as DescribeFileSystemsCommand$1, FSxClient, FileSystemNotFound as FileSystemNotFound$1, TagResourceCommand as TagResourceCommand$18, UntagResourceCommand as UntagResourceCommand$18, UpdateFileSystemCommand as UpdateFileSystemCommand$1 } from "@aws-sdk/client-fsx";
|
|
60
|
-
import { AddInstanceFleetCommand, AddInstanceGroupsCommand, AddTagsCommand as AddTagsCommand$1, DescribeClusterCommand, EMRClient, InvalidRequestException, ListClustersCommand
|
|
60
|
+
import { AddInstanceFleetCommand, AddInstanceGroupsCommand, AddTagsCommand as AddTagsCommand$1, DescribeClusterCommand, EMRClient, InvalidRequestException, ListClustersCommand, ListInstanceFleetsCommand, ListInstanceGroupsCommand, ModifyClusterCommand, ModifyInstanceFleetCommand, ModifyInstanceGroupsCommand, PutAutoScalingPolicyCommand, PutAutoTerminationPolicyCommand, PutManagedScalingPolicyCommand, RemoveAutoScalingPolicyCommand, RemoveAutoTerminationPolicyCommand, RemoveManagedScalingPolicyCommand, RemoveTagsCommand as RemoveTagsCommand$1, RunJobFlowCommand, SetTerminationProtectionCommand, SetVisibleToAllUsersCommand, TerminateJobFlowsCommand } from "@aws-sdk/client-emr";
|
|
61
61
|
import { CreateDeliveryStreamCommand, DeleteDeliveryStreamCommand, DescribeDeliveryStreamCommand, FirehoseClient, ListDeliveryStreamsCommand, ListTagsForDeliveryStreamCommand, ResourceNotFoundException as ResourceNotFoundException$10, TagDeliveryStreamCommand, UntagDeliveryStreamCommand, UpdateDestinationCommand } from "@aws-sdk/client-firehose";
|
|
62
62
|
import { AddTagsCommand as AddTagsCommand$2, CloudTrailClient, CreateTrailCommand, DeleteTrailCommand, GetEventSelectorsCommand, GetInsightSelectorsCommand, GetTrailCommand, GetTrailStatusCommand, ListTagsCommand as ListTagsCommand$1, ListTrailsCommand, PutEventSelectorsCommand, PutInsightSelectorsCommand, RemoveTagsCommand as RemoveTagsCommand$2, StartLoggingCommand, StopLoggingCommand, TrailNotFoundException, UpdateTrailCommand } from "@aws-sdk/client-cloudtrail";
|
|
63
|
-
import { BatchGetProjectsCommand, CodeBuildClient, CreateProjectCommand, DeleteProjectCommand,
|
|
64
|
-
import { CodeCommitClient, CreateCommitCommand, CreateRepositoryCommand as CreateRepositoryCommand$1, DeleteRepositoryCommand as DeleteRepositoryCommand$1, GetRepositoryCommand, ListRepositoriesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$
|
|
63
|
+
import { BatchGetProjectsCommand, CodeBuildClient, CreateProjectCommand, DeleteProjectCommand, ResourceNotFoundException as ResourceNotFoundException$11, UpdateProjectCommand } from "@aws-sdk/client-codebuild";
|
|
64
|
+
import { CodeCommitClient, CreateCommitCommand, CreateRepositoryCommand as CreateRepositoryCommand$1, DeleteRepositoryCommand as DeleteRepositoryCommand$1, GetRepositoryCommand, ListRepositoriesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$18, PutRepositoryTriggersCommand, RepositoryDoesNotExistException, TagResourceCommand as TagResourceCommand$19, UntagResourceCommand as UntagResourceCommand$19, UpdateRepositoryDescriptionCommand, UpdateRepositoryEncryptionKeyCommand, UpdateRepositoryNameCommand } from "@aws-sdk/client-codecommit";
|
|
65
65
|
import AdmZip from "adm-zip";
|
|
66
66
|
import { CreateLifecyclePolicyCommand, DLMClient, DeleteLifecyclePolicyCommand as DeleteLifecyclePolicyCommand$1, GetLifecyclePoliciesCommand, GetLifecyclePolicyCommand as GetLifecyclePolicyCommand$1, ResourceNotFoundException as ResourceNotFoundException$12, TagResourceCommand as TagResourceCommand$20, UntagResourceCommand as UntagResourceCommand$20, UpdateLifecyclePolicyCommand } from "@aws-sdk/client-dlm";
|
|
67
|
-
import { CreateVectorBucketCommand, DeleteIndexCommand, DeleteVectorBucketCommand, GetVectorBucketCommand, ListIndexesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$
|
|
68
|
-
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 as ListTablesCommand$1, ListTagsForResourceCommand as ListTagsForResourceCommand$
|
|
67
|
+
import { CreateVectorBucketCommand, DeleteIndexCommand, DeleteVectorBucketCommand, GetVectorBucketCommand, ListIndexesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$19, ListVectorBucketsCommand, S3VectorsClient, TagResourceCommand as TagResourceCommand$21, UntagResourceCommand as UntagResourceCommand$21 } from "@aws-sdk/client-s3vectors";
|
|
68
|
+
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 as ListTablesCommand$1, ListTagsForResourceCommand as ListTagsForResourceCommand$20, NotFoundException as NotFoundException$6, S3TablesClient, TagResourceCommand as TagResourceCommand$22, UntagResourceCommand as UntagResourceCommand$22 } from "@aws-sdk/client-s3tables";
|
|
69
69
|
import { Document, Pair, Scalar, YAMLMap, YAMLSeq, parse as parse$1, stringify } from "yaml";
|
|
70
70
|
import { createLocalStartAgentCoreCommand, createLocalStartCloudFrontCommand, createLocalStateProvider, getEmbedConfig, isCfnFlagPresent, listTargets, rejectExplicitCfnStackWithMultipleStacks, resolveCfnFallbackRegion, setEmbedConfig, substituteAgainstState, substituteAgainstStateAsync, substituteEnvVarsFromState, substituteEnvVarsFromStateAsync } from "cdk-local";
|
|
71
71
|
import { A2A_CONTAINER_PORT, A2A_PATH, AGENTCORE_A2A_PROTOCOL, AGENTCORE_AGUI_PROTOCOL, AGENTCORE_MCP_PROTOCOL, ConnectionRegistry, EcsTaskResolutionError, HOST_GATEWAY_MIN_VERSION, LocalInvokeBuildError, MCP_CONTAINER_PORT, MCP_PATH, a2aInvokeOnce, addAlbSpecificOptions, addCommonEcsServiceOptions, addStartServiceSpecificOptions, albStrategy, architectureToPlatform, attachAuthorizers, attachStageContext, availableApiIdentifiers, bufferToBody, buildAgentCoreCodeImage, buildCognitoJwksUrl, buildConnectEvent, buildContainerImage, buildCorsConfigByApiId, buildCorsConfigFromCloudFrontChain, buildDisconnectEvent, buildJwksUrlFromIssuer, buildMessageEvent, buildMgmtEndpointEnvUrl, buildStageMap, classifySourceChange, createAuthorizerCache, createFileWatcher, createFileWatcher as createFileWatcher$1, createJwksCache, createWatchPredicates, defaultCredentialsLoader, derivePseudoParametersFromRegion, discoverRoutes, discoverWebSocketApis, downloadAndExtractS3Bundle, filterRoutesByApiIdentifier, groupRoutesByServer, handleConnectionsRequest, invokeAgentCore, invokeAgentCoreWs, materializeLayerFromArn, mcpInvokeOnce, parseConnectionsPath, parseSelectionExpressionPath, pickAgentCoreCandidateStack, pickAgentCoreCandidateStack as pickAgentCoreCandidateStack$1, probeHostGatewaySupport, readMtlsMaterialsFromDisk, resolveAgentCoreTarget, resolveEnvVars, resolveHostGatewayExtraHosts, resolveRuntimeCodeMountPath, resolveRuntimeFileExtension, resolveRuntimeImage, resolveSingleTarget, resolveWatchConfig, runEcsServiceEmulator, signAgentCoreInvocation, startApiServer, substituteImagePlaceholders, tryResolveImageFnJoin, verifyJwtViaDiscovery, waitForAgentCorePing } from "cdk-local/internal";
|
|
@@ -1899,7 +1899,7 @@ const FLUSH_INTERVAL_MS = 2e3;
|
|
|
1899
1899
|
const FLUSH_EVENT_THRESHOLD = 50;
|
|
1900
1900
|
/** Build-time cdkd version, with a dev fallback for non-built contexts. */
|
|
1901
1901
|
function getCdkdVersion() {
|
|
1902
|
-
return "0.257.
|
|
1902
|
+
return "0.257.3";
|
|
1903
1903
|
}
|
|
1904
1904
|
/**
|
|
1905
1905
|
* Generate a time-sortable unique run id, e.g.
|
|
@@ -4825,13 +4825,10 @@ var IAMUserGroupProvider = class {
|
|
|
4825
4825
|
/**
|
|
4826
4826
|
* Adopt an existing IAM user / group / user-to-group addition into cdkd state.
|
|
4827
4827
|
*
|
|
4828
|
-
* - **AWS::IAM::User**:
|
|
4829
|
-
*
|
|
4830
|
-
*
|
|
4831
|
-
*
|
|
4832
|
-
* taggable (no `ListGroupTags` API), so tag-based auto-lookup is not
|
|
4833
|
-
* possible. Caller can still pass `Properties.GroupName` or
|
|
4834
|
-
* `--resource` to verify and adopt by name.
|
|
4828
|
+
* - **AWS::IAM::User**: `--resource` override or `Properties.UserName`,
|
|
4829
|
+
* verified via `GetUser`.
|
|
4830
|
+
* - **AWS::IAM::Group**: `--resource` override or `Properties.GroupName`,
|
|
4831
|
+
* verified via `GetGroup`.
|
|
4835
4832
|
* - **AWS::IAM::UserToGroupAddition**: explicit-override only. Has no
|
|
4836
4833
|
* AWS-side identity beyond the (group, users) attachment itself.
|
|
4837
4834
|
*/
|
|
@@ -4855,24 +4852,6 @@ var IAMUserGroupProvider = class {
|
|
|
4855
4852
|
if (err instanceof NoSuchEntityException) return null;
|
|
4856
4853
|
throw err;
|
|
4857
4854
|
}
|
|
4858
|
-
if (!input.cdkPath) return null;
|
|
4859
|
-
let marker;
|
|
4860
|
-
do {
|
|
4861
|
-
const list = await this.iamClient.send(new ListUsersCommand({ ...marker && { Marker: marker } }));
|
|
4862
|
-
for (const user of list.Users ?? []) {
|
|
4863
|
-
if (!user.UserName) continue;
|
|
4864
|
-
try {
|
|
4865
|
-
if (matchesCdkPath((await this.iamClient.send(new ListUserTagsCommand({ UserName: user.UserName }))).Tags, input.cdkPath)) return {
|
|
4866
|
-
physicalId: user.UserName,
|
|
4867
|
-
attributes: {}
|
|
4868
|
-
};
|
|
4869
|
-
} catch (err) {
|
|
4870
|
-
if (err instanceof NoSuchEntityException) continue;
|
|
4871
|
-
throw err;
|
|
4872
|
-
}
|
|
4873
|
-
}
|
|
4874
|
-
marker = list.IsTruncated ? list.Marker : void 0;
|
|
4875
|
-
} while (marker);
|
|
4876
4855
|
return null;
|
|
4877
4856
|
}
|
|
4878
4857
|
async importGroup(input) {
|
|
@@ -16721,55 +16700,16 @@ var EC2Provider = class {
|
|
|
16721
16700
|
* is rule-level), and the typical adoption story is "find the VPC,
|
|
16722
16701
|
* cdkd reconstructs the rest at deploy time".
|
|
16723
16702
|
*
|
|
16724
|
-
*
|
|
16725
|
-
*
|
|
16703
|
+
* There is no `aws:cdk:path` tag lookup: AWS rejects `aws:`-prefixed tag
|
|
16704
|
+
* writes, so that tag never exists on a real resource and a
|
|
16705
|
+
* `Filters: [{Name: 'tag:aws:cdk:path', ...}]` `Describe*` could never
|
|
16706
|
+
* match (issue #1134). Auto-mode import resolves ids from
|
|
16707
|
+
* CloudFormation's `DescribeStackResources` or the template's
|
|
16708
|
+
* physical-name property instead.
|
|
16726
16709
|
*/
|
|
16727
16710
|
async import(input) {
|
|
16728
16711
|
if (input.knownPhysicalId) return this.verifyExplicit(input.resourceType, input.knownPhysicalId);
|
|
16729
|
-
|
|
16730
|
-
const tagFilter = {
|
|
16731
|
-
Name: `tag:${CDK_PATH_TAG}`,
|
|
16732
|
-
Values: [input.cdkPath]
|
|
16733
|
-
};
|
|
16734
|
-
try {
|
|
16735
|
-
switch (input.resourceType) {
|
|
16736
|
-
case "AWS::EC2::VPC": {
|
|
16737
|
-
const vpc = (await this.ec2Client.send(new DescribeVpcsCommand({ Filters: [tagFilter] }))).Vpcs?.[0];
|
|
16738
|
-
return vpc?.VpcId ? {
|
|
16739
|
-
physicalId: vpc.VpcId,
|
|
16740
|
-
attributes: {}
|
|
16741
|
-
} : null;
|
|
16742
|
-
}
|
|
16743
|
-
case "AWS::EC2::Subnet": {
|
|
16744
|
-
const subnet = (await this.ec2Client.send(new DescribeSubnetsCommand({ Filters: [tagFilter] }))).Subnets?.[0];
|
|
16745
|
-
return subnet?.SubnetId ? {
|
|
16746
|
-
physicalId: subnet.SubnetId,
|
|
16747
|
-
attributes: {}
|
|
16748
|
-
} : null;
|
|
16749
|
-
}
|
|
16750
|
-
case "AWS::EC2::SecurityGroup": {
|
|
16751
|
-
const sg = (await this.ec2Client.send(new DescribeSecurityGroupsCommand({ Filters: [tagFilter] }))).SecurityGroups?.[0];
|
|
16752
|
-
return sg?.GroupId ? {
|
|
16753
|
-
physicalId: sg.GroupId,
|
|
16754
|
-
attributes: {}
|
|
16755
|
-
} : null;
|
|
16756
|
-
}
|
|
16757
|
-
case "AWS::EC2::NatGateway": {
|
|
16758
|
-
const gw = (await this.ec2Client.send(new DescribeNatGatewaysCommand({ Filter: [{
|
|
16759
|
-
Name: `tag:${CDK_PATH_TAG}`,
|
|
16760
|
-
Values: [input.cdkPath]
|
|
16761
|
-
}] }))).NatGateways?.find((g) => g.State !== "deleted" && g.State !== "deleting");
|
|
16762
|
-
return gw?.NatGatewayId ? {
|
|
16763
|
-
physicalId: gw.NatGatewayId,
|
|
16764
|
-
attributes: {}
|
|
16765
|
-
} : null;
|
|
16766
|
-
}
|
|
16767
|
-
default: return null;
|
|
16768
|
-
}
|
|
16769
|
-
} catch (error) {
|
|
16770
|
-
if (this.isNotFoundError(error)) return null;
|
|
16771
|
-
throw error;
|
|
16772
|
-
}
|
|
16712
|
+
return null;
|
|
16773
16713
|
}
|
|
16774
16714
|
/**
|
|
16775
16715
|
* Read the AWS-current EC2 networking resource configuration in
|
|
@@ -19298,8 +19238,11 @@ var ApiGatewayV2Provider = class {
|
|
|
19298
19238
|
/**
|
|
19299
19239
|
* Adopt an existing API Gateway V2 resource into cdkd state.
|
|
19300
19240
|
*
|
|
19301
|
-
* `AWS::ApiGatewayV2::Api`
|
|
19302
|
-
*
|
|
19241
|
+
* `AWS::ApiGatewayV2::Api` resolves an explicit `--resource` override
|
|
19242
|
+
* (verified via `GetApi`). There is no `aws:cdk:path` tag walk — AWS
|
|
19243
|
+
* rejects `aws:`-prefixed tag writes, so that tag never exists on a real
|
|
19244
|
+
* resource (issue #1134); auto-mode import resolves ids from
|
|
19245
|
+
* CloudFormation's `DescribeStackResources` instead.
|
|
19303
19246
|
*
|
|
19304
19247
|
* Sub-resources (`Stage`, `Integration`, `Route`, `Authorizer`) are
|
|
19305
19248
|
* scoped under a parent `ApiId`, and their physical ids are not
|
|
@@ -19327,19 +19270,6 @@ var ApiGatewayV2Provider = class {
|
|
|
19327
19270
|
if (err instanceof NotFoundException$3) return null;
|
|
19328
19271
|
throw err;
|
|
19329
19272
|
}
|
|
19330
|
-
if (!input.cdkPath) return null;
|
|
19331
|
-
let nextToken;
|
|
19332
|
-
do {
|
|
19333
|
-
const list = await this.getClient().send(new GetApisCommand({ ...nextToken && { NextToken: nextToken } }));
|
|
19334
|
-
for (const api of list.Items ?? []) {
|
|
19335
|
-
if (!api.ApiId) continue;
|
|
19336
|
-
if (api.Tags?.["aws:cdk:path"] === input.cdkPath) return {
|
|
19337
|
-
physicalId: api.ApiId,
|
|
19338
|
-
attributes: {}
|
|
19339
|
-
};
|
|
19340
|
-
}
|
|
19341
|
-
nextToken = list.NextToken;
|
|
19342
|
-
} while (nextToken);
|
|
19343
19273
|
return null;
|
|
19344
19274
|
}
|
|
19345
19275
|
/**
|
|
@@ -22759,9 +22689,8 @@ var ECSProvider = class {
|
|
|
22759
22689
|
* Adopt an existing ECS resource into cdkd state.
|
|
22760
22690
|
*
|
|
22761
22691
|
* Supported types: `AWS::ECS::Cluster`, `AWS::ECS::Service`,
|
|
22762
|
-
* `AWS::ECS::TaskDefinition
|
|
22763
|
-
*
|
|
22764
|
-
* `matchesCdkPath` helper doesn't apply — match the tag manually.
|
|
22692
|
+
* `AWS::ECS::TaskDefinition` — all explicit-override only (see the
|
|
22693
|
+
* per-branch notes on why the `aws:cdk:path` tag walk was removed).
|
|
22765
22694
|
*
|
|
22766
22695
|
* Service has a composite physical id of `<clusterArn>|<serviceName>`
|
|
22767
22696
|
* (the form ECSProvider uses internally for mutation operations),
|
|
@@ -22788,19 +22717,6 @@ var ECSProvider = class {
|
|
|
22788
22717
|
if (this.isClusterNotFoundException(err) || this.isServiceNotFoundException(err)) return null;
|
|
22789
22718
|
throw err;
|
|
22790
22719
|
}
|
|
22791
|
-
if (!input.cdkPath) return null;
|
|
22792
|
-
let nextToken;
|
|
22793
|
-
do {
|
|
22794
|
-
const list = await this.getClient().send(new ListClustersCommand({ ...nextToken && { nextToken } }));
|
|
22795
|
-
for (const arn of list.clusterArns ?? []) {
|
|
22796
|
-
const tagsResp = await this.getClient().send(new ListTagsForResourceCommand$12({ resourceArn: arn }));
|
|
22797
|
-
if (this.tagsMatchCdkPath(tagsResp.tags, input.cdkPath)) return {
|
|
22798
|
-
physicalId: arn.substring(arn.lastIndexOf("/") + 1),
|
|
22799
|
-
attributes: {}
|
|
22800
|
-
};
|
|
22801
|
-
}
|
|
22802
|
-
nextToken = list.nextToken;
|
|
22803
|
-
} while (nextToken);
|
|
22804
22720
|
return null;
|
|
22805
22721
|
}
|
|
22806
22722
|
async importService(input) {
|
|
@@ -22808,29 +22724,6 @@ var ECSProvider = class {
|
|
|
22808
22724
|
physicalId: input.knownPhysicalId,
|
|
22809
22725
|
attributes: {}
|
|
22810
22726
|
};
|
|
22811
|
-
if (!input.cdkPath) return null;
|
|
22812
|
-
let clusterToken;
|
|
22813
|
-
do {
|
|
22814
|
-
const clusterList = await this.getClient().send(new ListClustersCommand({ ...clusterToken && { nextToken: clusterToken } }));
|
|
22815
|
-
for (const clusterArn of clusterList.clusterArns ?? []) {
|
|
22816
|
-
let svcToken;
|
|
22817
|
-
do {
|
|
22818
|
-
const svcList = await this.getClient().send(new ListServicesCommand({
|
|
22819
|
-
cluster: clusterArn,
|
|
22820
|
-
...svcToken && { nextToken: svcToken }
|
|
22821
|
-
}));
|
|
22822
|
-
for (const svcArn of svcList.serviceArns ?? []) {
|
|
22823
|
-
const tagsResp = await this.getClient().send(new ListTagsForResourceCommand$12({ resourceArn: svcArn }));
|
|
22824
|
-
if (this.tagsMatchCdkPath(tagsResp.tags, input.cdkPath)) return {
|
|
22825
|
-
physicalId: `${clusterArn}|${svcArn.substring(svcArn.lastIndexOf("/") + 1)}`,
|
|
22826
|
-
attributes: {}
|
|
22827
|
-
};
|
|
22828
|
-
}
|
|
22829
|
-
svcToken = svcList.nextToken;
|
|
22830
|
-
} while (svcToken);
|
|
22831
|
-
}
|
|
22832
|
-
clusterToken = clusterList.nextToken;
|
|
22833
|
-
} while (clusterToken);
|
|
22834
22727
|
return null;
|
|
22835
22728
|
}
|
|
22836
22729
|
async importTaskDefinition(input) {
|
|
@@ -22846,11 +22739,6 @@ var ECSProvider = class {
|
|
|
22846
22739
|
}
|
|
22847
22740
|
return null;
|
|
22848
22741
|
}
|
|
22849
|
-
tagsMatchCdkPath(tags, cdkPath) {
|
|
22850
|
-
if (!tags) return false;
|
|
22851
|
-
for (const t of tags) if (t.key === "aws:cdk:path" && t.value === cdkPath) return true;
|
|
22852
|
-
return false;
|
|
22853
|
-
}
|
|
22854
22742
|
};
|
|
22855
22743
|
|
|
22856
22744
|
//#endregion
|
|
@@ -23521,16 +23409,12 @@ var ELBv2Provider = class {
|
|
|
23521
23409
|
/**
|
|
23522
23410
|
* Adopt an existing ELBv2 LoadBalancer or TargetGroup into cdkd state.
|
|
23523
23411
|
*
|
|
23524
|
-
* Lookup
|
|
23525
|
-
*
|
|
23526
|
-
*
|
|
23527
|
-
* 2. Walk `DescribeLoadBalancers` / `DescribeTargetGroups` paginators →
|
|
23528
|
-
* batch-fetch tags for each ARN with `DescribeTags(ResourceArns)`
|
|
23529
|
-
* and match `aws:cdk:path` (standard `Key`/`Value` Tag[] shape).
|
|
23412
|
+
* Lookup: `--resource <id>=<arn>` override → verify with
|
|
23413
|
+
* `DescribeLoadBalancers` or `DescribeTargetGroups`. Without an override
|
|
23414
|
+
* the resource is reported as not-found.
|
|
23530
23415
|
*
|
|
23531
|
-
* Listener is not auto-importable (no template-supplied stable
|
|
23532
|
-
* identifier
|
|
23533
|
-
* `--resource <listenerId>=<arn>` for those.
|
|
23416
|
+
* Listener is likewise not auto-importable (no template-supplied stable
|
|
23417
|
+
* identifier); use `--resource <listenerId>=<arn>` for those.
|
|
23534
23418
|
*/
|
|
23535
23419
|
async import(input) {
|
|
23536
23420
|
switch (input.resourceType) {
|
|
@@ -23556,21 +23440,6 @@ var ELBv2Provider = class {
|
|
|
23556
23440
|
if (this.isNotFoundError(err)) return null;
|
|
23557
23441
|
throw err;
|
|
23558
23442
|
}
|
|
23559
|
-
if (!input.cdkPath) return null;
|
|
23560
|
-
let marker;
|
|
23561
|
-
do {
|
|
23562
|
-
const list = await this.getClient().send(new DescribeLoadBalancersCommand({ ...marker && { Marker: marker } }));
|
|
23563
|
-
const arns = (list.LoadBalancers ?? []).map((lb) => lb.LoadBalancerArn).filter((arn) => Boolean(arn));
|
|
23564
|
-
for (let i = 0; i < arns.length; i += 20) {
|
|
23565
|
-
const batch = arns.slice(i, i + 20);
|
|
23566
|
-
const tagsResp = await this.getClient().send(new DescribeTagsCommand({ ResourceArns: batch }));
|
|
23567
|
-
for (const td of tagsResp.TagDescriptions ?? []) if (td.ResourceArn && matchesCdkPath(td.Tags, input.cdkPath)) return {
|
|
23568
|
-
physicalId: td.ResourceArn,
|
|
23569
|
-
attributes: {}
|
|
23570
|
-
};
|
|
23571
|
-
}
|
|
23572
|
-
marker = list.NextMarker;
|
|
23573
|
-
} while (marker);
|
|
23574
23443
|
return null;
|
|
23575
23444
|
}
|
|
23576
23445
|
async importTargetGroup(input) {
|
|
@@ -23584,21 +23453,6 @@ var ELBv2Provider = class {
|
|
|
23584
23453
|
if (this.isNotFoundError(err)) return null;
|
|
23585
23454
|
throw err;
|
|
23586
23455
|
}
|
|
23587
|
-
if (!input.cdkPath) return null;
|
|
23588
|
-
let marker;
|
|
23589
|
-
do {
|
|
23590
|
-
const list = await this.getClient().send(new DescribeTargetGroupsCommand({ ...marker && { Marker: marker } }));
|
|
23591
|
-
const arns = (list.TargetGroups ?? []).map((tg) => tg.TargetGroupArn).filter((arn) => Boolean(arn));
|
|
23592
|
-
for (let i = 0; i < arns.length; i += 20) {
|
|
23593
|
-
const batch = arns.slice(i, i + 20);
|
|
23594
|
-
const tagsResp = await this.getClient().send(new DescribeTagsCommand({ ResourceArns: batch }));
|
|
23595
|
-
for (const td of tagsResp.TagDescriptions ?? []) if (td.ResourceArn && matchesCdkPath(td.Tags, input.cdkPath)) return {
|
|
23596
|
-
physicalId: td.ResourceArn,
|
|
23597
|
-
attributes: {}
|
|
23598
|
-
};
|
|
23599
|
-
}
|
|
23600
|
-
marker = list.NextMarker;
|
|
23601
|
-
} while (marker);
|
|
23602
23456
|
return null;
|
|
23603
23457
|
}
|
|
23604
23458
|
/**
|
|
@@ -24185,11 +24039,11 @@ var RDSProvider = class {
|
|
|
24185
24039
|
* Adopt an existing RDS resource into cdkd state.
|
|
24186
24040
|
*
|
|
24187
24041
|
* Supported types: `AWS::RDS::DBInstance`, `AWS::RDS::DBCluster`,
|
|
24188
|
-
* `AWS::RDS::DBSubnetGroup`.
|
|
24189
|
-
*
|
|
24190
|
-
* usually present in CDK templates
|
|
24191
|
-
*
|
|
24192
|
-
*
|
|
24042
|
+
* `AWS::RDS::DBSubnetGroup`. Resolution is by identifier name property
|
|
24043
|
+
* (`DBInstanceIdentifier` / `DBClusterIdentifier` / `DBSubnetGroupName`),
|
|
24044
|
+
* which is usually present in CDK templates, verified against the
|
|
24045
|
+
* corresponding `Describe*` call. A resource without one needs an
|
|
24046
|
+
* explicit `--resource` override (issue #1134).
|
|
24193
24047
|
*/
|
|
24194
24048
|
async import(input) {
|
|
24195
24049
|
switch (input.resourceType) {
|
|
@@ -24335,19 +24189,6 @@ var RDSProvider = class {
|
|
|
24335
24189
|
if (err.name === "DBInstanceNotFoundFault") return null;
|
|
24336
24190
|
throw err;
|
|
24337
24191
|
}
|
|
24338
|
-
if (!input.cdkPath) return null;
|
|
24339
|
-
let marker;
|
|
24340
|
-
do {
|
|
24341
|
-
const list = await this.getClient().send(new DescribeDBInstancesCommand({ ...marker && { Marker: marker } }));
|
|
24342
|
-
for (const inst of list.DBInstances ?? []) {
|
|
24343
|
-
if (!inst.DBInstanceIdentifier || !inst.DBInstanceArn) continue;
|
|
24344
|
-
if (matchesCdkPath((await this.getClient().send(new ListTagsForResourceCommand$9({ ResourceName: inst.DBInstanceArn }))).TagList, input.cdkPath)) return {
|
|
24345
|
-
physicalId: inst.DBInstanceIdentifier,
|
|
24346
|
-
attributes: {}
|
|
24347
|
-
};
|
|
24348
|
-
}
|
|
24349
|
-
marker = list.Marker;
|
|
24350
|
-
} while (marker);
|
|
24351
24192
|
return null;
|
|
24352
24193
|
}
|
|
24353
24194
|
async importDBCluster(input) {
|
|
@@ -24362,19 +24203,6 @@ var RDSProvider = class {
|
|
|
24362
24203
|
if (err.name === "DBClusterNotFoundFault") return null;
|
|
24363
24204
|
throw err;
|
|
24364
24205
|
}
|
|
24365
|
-
if (!input.cdkPath) return null;
|
|
24366
|
-
let marker;
|
|
24367
|
-
do {
|
|
24368
|
-
const list = await this.getClient().send(new DescribeDBClustersCommand({ ...marker && { Marker: marker } }));
|
|
24369
|
-
for (const c of list.DBClusters ?? []) {
|
|
24370
|
-
if (!c.DBClusterIdentifier || !c.DBClusterArn) continue;
|
|
24371
|
-
if (matchesCdkPath((await this.getClient().send(new ListTagsForResourceCommand$9({ ResourceName: c.DBClusterArn }))).TagList, input.cdkPath)) return {
|
|
24372
|
-
physicalId: c.DBClusterIdentifier,
|
|
24373
|
-
attributes: {}
|
|
24374
|
-
};
|
|
24375
|
-
}
|
|
24376
|
-
marker = list.Marker;
|
|
24377
|
-
} while (marker);
|
|
24378
24206
|
return null;
|
|
24379
24207
|
}
|
|
24380
24208
|
async importDBSubnetGroup(input) {
|
|
@@ -24389,19 +24217,6 @@ var RDSProvider = class {
|
|
|
24389
24217
|
if (err.name === "DBSubnetGroupNotFoundFault") return null;
|
|
24390
24218
|
throw err;
|
|
24391
24219
|
}
|
|
24392
|
-
if (!input.cdkPath) return null;
|
|
24393
|
-
let marker;
|
|
24394
|
-
do {
|
|
24395
|
-
const list = await this.getClient().send(new DescribeDBSubnetGroupsCommand({ ...marker && { Marker: marker } }));
|
|
24396
|
-
for (const sg of list.DBSubnetGroups ?? []) {
|
|
24397
|
-
if (!sg.DBSubnetGroupName || !sg.DBSubnetGroupArn) continue;
|
|
24398
|
-
if (matchesCdkPath((await this.getClient().send(new ListTagsForResourceCommand$9({ ResourceName: sg.DBSubnetGroupArn }))).TagList, input.cdkPath)) return {
|
|
24399
|
-
physicalId: sg.DBSubnetGroupName,
|
|
24400
|
-
attributes: {}
|
|
24401
|
-
};
|
|
24402
|
-
}
|
|
24403
|
-
marker = list.Marker;
|
|
24404
|
-
} while (marker);
|
|
24405
24220
|
return null;
|
|
24406
24221
|
}
|
|
24407
24222
|
};
|
|
@@ -24439,8 +24254,9 @@ const POLL_TIMEOUT_MS$1 = 1800 * 1e3;
|
|
|
24439
24254
|
* point is treated as idempotent success (region-match-gated).
|
|
24440
24255
|
* - `getAttribute`: `DescribeDBProxies` for `Endpoint` / `DBProxyArn` /
|
|
24441
24256
|
* `VpcId`, cached per `(physicalId, attribute)`.
|
|
24442
|
-
* - `import`: explicit `--resource` override
|
|
24443
|
-
* `
|
|
24257
|
+
* - `import`: explicit `--resource` override or the template's
|
|
24258
|
+
* `DBProxyName` property (issue #1134 removed the unreachable
|
|
24259
|
+
* `aws:cdk:path` tag walk).
|
|
24444
24260
|
*
|
|
24445
24261
|
* **physicalId** = DBProxyName (matches CFn `primaryIdentifier`).
|
|
24446
24262
|
*/
|
|
@@ -24615,23 +24431,6 @@ var RDSDBProxyProvider = class {
|
|
|
24615
24431
|
async import(input) {
|
|
24616
24432
|
const explicit = resolveExplicitPhysicalId(input, "DBProxyName");
|
|
24617
24433
|
if (explicit) return this.buildImportResult(explicit);
|
|
24618
|
-
const client = this.getClient();
|
|
24619
|
-
let marker;
|
|
24620
|
-
do {
|
|
24621
|
-
const describe = await client.send(new DescribeDBProxiesCommand({
|
|
24622
|
-
Marker: marker,
|
|
24623
|
-
MaxRecords: 100
|
|
24624
|
-
}));
|
|
24625
|
-
for (const proxy of describe.DBProxies ?? []) {
|
|
24626
|
-
if (!proxy.DBProxyArn) continue;
|
|
24627
|
-
try {
|
|
24628
|
-
if (matchesCdkPath((await client.send(new ListTagsForResourceCommand$9({ ResourceName: proxy.DBProxyArn }))).TagList ?? [], input.cdkPath)) return this.buildImportResult(proxy.DBProxyName ?? "");
|
|
24629
|
-
} catch (error) {
|
|
24630
|
-
this.logger.debug(`ListTagsForResource failed for ${proxy.DBProxyName}: ${error instanceof Error ? error.message : String(error)}`);
|
|
24631
|
-
}
|
|
24632
|
-
}
|
|
24633
|
-
marker = describe.Marker;
|
|
24634
|
-
} while (marker);
|
|
24635
24434
|
return null;
|
|
24636
24435
|
}
|
|
24637
24436
|
/**
|
|
@@ -24791,9 +24590,9 @@ const POLL_TIMEOUT_MS = 1800 * 1e3;
|
|
|
24791
24590
|
* is already gone via CASCADE, the endpoint is too.
|
|
24792
24591
|
* - `getAttribute`: `Endpoint` / `DBProxyEndpointArn` / `IsDefault` / `VpcId`
|
|
24793
24592
|
* via `DescribeDBProxyEndpoints`, cached per `(physicalId, attribute)`.
|
|
24794
|
-
* - `import`: explicit `--resource <id>=<DBProxyEndpointName>`
|
|
24795
|
-
*
|
|
24796
|
-
*
|
|
24593
|
+
* - `import`: explicit `--resource <id>=<DBProxyEndpointName>` or the
|
|
24594
|
+
* template's `DBProxyEndpointName` property (issue #1134 removed the
|
|
24595
|
+
* unreachable `aws:cdk:path` tag walk).
|
|
24797
24596
|
*
|
|
24798
24597
|
* **physicalId** = DBProxyEndpointName (matches CFn `primaryIdentifier`).
|
|
24799
24598
|
*/
|
|
@@ -24953,23 +24752,6 @@ var RDSDBProxyEndpointProvider = class {
|
|
|
24953
24752
|
async import(input) {
|
|
24954
24753
|
const explicit = resolveExplicitPhysicalId(input, "DBProxyEndpointName");
|
|
24955
24754
|
if (explicit) return this.buildImportResult(explicit);
|
|
24956
|
-
const client = this.getClient();
|
|
24957
|
-
let marker;
|
|
24958
|
-
do {
|
|
24959
|
-
const describe = await client.send(new DescribeDBProxyEndpointsCommand({
|
|
24960
|
-
Marker: marker,
|
|
24961
|
-
MaxRecords: 100
|
|
24962
|
-
}));
|
|
24963
|
-
for (const ep of describe.DBProxyEndpoints ?? []) {
|
|
24964
|
-
if (!ep.DBProxyEndpointArn) continue;
|
|
24965
|
-
try {
|
|
24966
|
-
if (matchesCdkPath((await client.send(new ListTagsForResourceCommand$9({ ResourceName: ep.DBProxyEndpointArn }))).TagList ?? [], input.cdkPath)) return this.buildImportResult(ep.DBProxyEndpointName ?? "");
|
|
24967
|
-
} catch (error) {
|
|
24968
|
-
this.logger.debug(`ListTagsForResource failed for ${ep.DBProxyEndpointName}: ${error instanceof Error ? error.message : String(error)}`);
|
|
24969
|
-
}
|
|
24970
|
-
}
|
|
24971
|
-
marker = describe.Marker;
|
|
24972
|
-
} while (marker);
|
|
24973
24755
|
return null;
|
|
24974
24756
|
}
|
|
24975
24757
|
async readCurrentState(physicalId) {
|
|
@@ -25958,7 +25740,7 @@ var DocDBProvider = class {
|
|
|
25958
25740
|
*/
|
|
25959
25741
|
async attachTags(result, arn) {
|
|
25960
25742
|
try {
|
|
25961
|
-
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForResourceCommand$
|
|
25743
|
+
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForResourceCommand$12({ ResourceName: arn }))).TagList);
|
|
25962
25744
|
} catch (err) {
|
|
25963
25745
|
this.logger.debug(`DocDB ListTagsForResource(${arn}) failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
25964
25746
|
}
|
|
@@ -26063,7 +25845,7 @@ var DocDBProvider = class {
|
|
|
26063
25845
|
* before calling this.
|
|
26064
25846
|
*/
|
|
26065
25847
|
async listTagsForResource(resourceArn) {
|
|
26066
|
-
return (await this.getClient().send(new ListTagsForResourceCommand$
|
|
25848
|
+
return (await this.getClient().send(new ListTagsForResourceCommand$12({ ResourceName: resourceArn }))).TagList ?? [];
|
|
26067
25849
|
}
|
|
26068
25850
|
};
|
|
26069
25851
|
|
|
@@ -26649,7 +26431,7 @@ var NeptuneProvider = class {
|
|
|
26649
26431
|
*/
|
|
26650
26432
|
async attachTags(result, arn) {
|
|
26651
26433
|
try {
|
|
26652
|
-
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForResourceCommand$
|
|
26434
|
+
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForResourceCommand$13({ ResourceName: arn }))).TagList);
|
|
26653
26435
|
} catch (err) {
|
|
26654
26436
|
this.logger.debug(`Neptune ListTagsForResource(${arn}) failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
26655
26437
|
}
|
|
@@ -26666,19 +26448,6 @@ var NeptuneProvider = class {
|
|
|
26666
26448
|
if (err.name === "DBInstanceNotFoundFault") return null;
|
|
26667
26449
|
throw err;
|
|
26668
26450
|
}
|
|
26669
|
-
if (!input.cdkPath) return null;
|
|
26670
|
-
let marker;
|
|
26671
|
-
do {
|
|
26672
|
-
const list = await this.getClient().send(new DescribeDBInstancesCommand$2({ ...marker && { Marker: marker } }));
|
|
26673
|
-
for (const inst of list.DBInstances ?? []) {
|
|
26674
|
-
if (!inst.DBInstanceIdentifier || !inst.DBInstanceArn) continue;
|
|
26675
|
-
if (matchesCdkPath((await this.getClient().send(new ListTagsForResourceCommand$14({ ResourceName: inst.DBInstanceArn }))).TagList, input.cdkPath)) return {
|
|
26676
|
-
physicalId: inst.DBInstanceIdentifier,
|
|
26677
|
-
attributes: {}
|
|
26678
|
-
};
|
|
26679
|
-
}
|
|
26680
|
-
marker = list.Marker;
|
|
26681
|
-
} while (marker);
|
|
26682
26451
|
return null;
|
|
26683
26452
|
}
|
|
26684
26453
|
async importDBCluster(input) {
|
|
@@ -26693,19 +26462,6 @@ var NeptuneProvider = class {
|
|
|
26693
26462
|
if (err.name === "DBClusterNotFoundFault") return null;
|
|
26694
26463
|
throw err;
|
|
26695
26464
|
}
|
|
26696
|
-
if (!input.cdkPath) return null;
|
|
26697
|
-
let marker;
|
|
26698
|
-
do {
|
|
26699
|
-
const list = await this.getClient().send(new DescribeDBClustersCommand$2({ ...marker && { Marker: marker } }));
|
|
26700
|
-
for (const c of list.DBClusters ?? []) {
|
|
26701
|
-
if (!c.DBClusterIdentifier || !c.DBClusterArn) continue;
|
|
26702
|
-
if (matchesCdkPath((await this.getClient().send(new ListTagsForResourceCommand$14({ ResourceName: c.DBClusterArn }))).TagList, input.cdkPath)) return {
|
|
26703
|
-
physicalId: c.DBClusterIdentifier,
|
|
26704
|
-
attributes: {}
|
|
26705
|
-
};
|
|
26706
|
-
}
|
|
26707
|
-
marker = list.Marker;
|
|
26708
|
-
} while (marker);
|
|
26709
26465
|
return null;
|
|
26710
26466
|
}
|
|
26711
26467
|
async importDBSubnetGroup(input) {
|
|
@@ -26720,19 +26476,6 @@ var NeptuneProvider = class {
|
|
|
26720
26476
|
if (err.name === "DBSubnetGroupNotFoundFault") return null;
|
|
26721
26477
|
throw err;
|
|
26722
26478
|
}
|
|
26723
|
-
if (!input.cdkPath) return null;
|
|
26724
|
-
let marker;
|
|
26725
|
-
do {
|
|
26726
|
-
const list = await this.getClient().send(new DescribeDBSubnetGroupsCommand$2({ ...marker && { Marker: marker } }));
|
|
26727
|
-
for (const sg of list.DBSubnetGroups ?? []) {
|
|
26728
|
-
if (!sg.DBSubnetGroupName || !sg.DBSubnetGroupArn) continue;
|
|
26729
|
-
if (matchesCdkPath((await this.getClient().send(new ListTagsForResourceCommand$14({ ResourceName: sg.DBSubnetGroupArn }))).TagList, input.cdkPath)) return {
|
|
26730
|
-
physicalId: sg.DBSubnetGroupName,
|
|
26731
|
-
attributes: {}
|
|
26732
|
-
};
|
|
26733
|
-
}
|
|
26734
|
-
marker = list.Marker;
|
|
26735
|
-
} while (marker);
|
|
26736
26479
|
return null;
|
|
26737
26480
|
}
|
|
26738
26481
|
};
|
|
@@ -27469,28 +27212,6 @@ var Route53Provider = class {
|
|
|
27469
27212
|
if (err instanceof Error && err.name === "NoSuchHostedZone") return null;
|
|
27470
27213
|
throw err;
|
|
27471
27214
|
}
|
|
27472
|
-
if (!input.cdkPath) return null;
|
|
27473
|
-
let marker;
|
|
27474
|
-
do {
|
|
27475
|
-
const list = await this.getClient().send(new ListHostedZonesCommand({ ...marker && { Marker: marker } }));
|
|
27476
|
-
for (const zone of list.HostedZones ?? []) {
|
|
27477
|
-
if (!zone.Id) continue;
|
|
27478
|
-
const zoneId = zone.Id.replace("/hostedzone/", "");
|
|
27479
|
-
try {
|
|
27480
|
-
if (matchesCdkPath((await this.getClient().send(new ListTagsForResourceCommand$7({
|
|
27481
|
-
ResourceType: "hostedzone",
|
|
27482
|
-
ResourceId: zoneId
|
|
27483
|
-
}))).ResourceTagSet?.Tags, input.cdkPath)) return {
|
|
27484
|
-
physicalId: zoneId,
|
|
27485
|
-
attributes: {}
|
|
27486
|
-
};
|
|
27487
|
-
} catch (err) {
|
|
27488
|
-
if (err instanceof Error && err.name === "NoSuchHostedZone") continue;
|
|
27489
|
-
throw err;
|
|
27490
|
-
}
|
|
27491
|
-
}
|
|
27492
|
-
marker = list.IsTruncated ? list.NextMarker : void 0;
|
|
27493
|
-
} while (marker);
|
|
27494
27215
|
return null;
|
|
27495
27216
|
}
|
|
27496
27217
|
};
|
|
@@ -28067,7 +27788,7 @@ var CognitoUserPoolProvider = class {
|
|
|
28067
27788
|
try {
|
|
28068
27789
|
const arn = (await this.getClient().send(new DescribeUserPoolCommand({ UserPoolId: pool.Id }))).UserPool?.Arn;
|
|
28069
27790
|
if (!arn) return void 0;
|
|
28070
|
-
return await this.getClient().send(new ListTagsForResourceCommand$
|
|
27791
|
+
return await this.getClient().send(new ListTagsForResourceCommand$14({ ResourceArn: arn }));
|
|
28071
27792
|
} catch (err) {
|
|
28072
27793
|
if (err instanceof ResourceNotFoundException$7) return void 0;
|
|
28073
27794
|
throw err;
|
|
@@ -28103,8 +27824,6 @@ var CognitoUserPoolProvider = class {
|
|
|
28103
27824
|
*/
|
|
28104
27825
|
var ElastiCacheProvider = class {
|
|
28105
27826
|
client;
|
|
28106
|
-
stsClient;
|
|
28107
|
-
cachedAccountId;
|
|
28108
27827
|
providerRegion = process.env["AWS_REGION"];
|
|
28109
27828
|
logger = getLogger().child("ElastiCacheProvider");
|
|
28110
27829
|
handledProperties = /* @__PURE__ */ new Map([["AWS::ElastiCache::SubnetGroup", /* @__PURE__ */ new Set([
|
|
@@ -28520,17 +28239,11 @@ var ElastiCacheProvider = class {
|
|
|
28520
28239
|
/**
|
|
28521
28240
|
* Adopt an existing ElastiCache resource into cdkd state.
|
|
28522
28241
|
*
|
|
28523
|
-
* Supported types
|
|
28524
|
-
*
|
|
28525
|
-
*
|
|
28526
|
-
* - `AWS::ElastiCache::
|
|
28527
|
-
*
|
|
28528
|
-
*
|
|
28529
|
-
* `ListTagsForResource` requires an ARN. Both `CacheCluster.ARN` and
|
|
28530
|
-
* `CacheSubnetGroup.ARN` are returned by the Describe APIs, so no
|
|
28531
|
-
* extra reconstruction is needed in normal flow; for the explicit
|
|
28532
|
-
* override path we build the ARN from `region` + STS account id +
|
|
28533
|
-
* the resource name.
|
|
28242
|
+
* Supported types (both resolve from an explicit `--resource` override
|
|
28243
|
+
* or the template's physical-name property, verified via the matching
|
|
28244
|
+
* `Describe*` call):
|
|
28245
|
+
* - `AWS::ElastiCache::CacheCluster` — `Properties.ClusterName`.
|
|
28246
|
+
* - `AWS::ElastiCache::SubnetGroup` — `Properties.CacheSubnetGroupName`.
|
|
28534
28247
|
*/
|
|
28535
28248
|
async import(input) {
|
|
28536
28249
|
switch (input.resourceType) {
|
|
@@ -28551,20 +28264,6 @@ var ElastiCacheProvider = class {
|
|
|
28551
28264
|
if (this.isNotFoundError(err, "CacheClusterNotFoundFault")) return null;
|
|
28552
28265
|
throw err;
|
|
28553
28266
|
}
|
|
28554
|
-
if (!input.cdkPath) return null;
|
|
28555
|
-
let marker;
|
|
28556
|
-
do {
|
|
28557
|
-
const list = await this.getClient().send(new DescribeCacheClustersCommand({ ...marker && { Marker: marker } }));
|
|
28558
|
-
for (const c of list.CacheClusters ?? []) {
|
|
28559
|
-
if (!c.CacheClusterId) continue;
|
|
28560
|
-
const arn = c.ARN ?? await this.buildClusterArn(c.CacheClusterId);
|
|
28561
|
-
if (matchesCdkPath((await this.getClient().send(new ListTagsForResourceCommand$10({ ResourceName: arn }))).TagList, input.cdkPath)) return {
|
|
28562
|
-
physicalId: c.CacheClusterId,
|
|
28563
|
-
attributes: {}
|
|
28564
|
-
};
|
|
28565
|
-
}
|
|
28566
|
-
marker = list.Marker;
|
|
28567
|
-
} while (marker);
|
|
28568
28267
|
return null;
|
|
28569
28268
|
}
|
|
28570
28269
|
async importSubnetGroup(input) {
|
|
@@ -28579,39 +28278,8 @@ var ElastiCacheProvider = class {
|
|
|
28579
28278
|
if (this.isNotFoundError(err, "CacheSubnetGroupNotFoundFault")) return null;
|
|
28580
28279
|
throw err;
|
|
28581
28280
|
}
|
|
28582
|
-
if (!input.cdkPath) return null;
|
|
28583
|
-
let marker;
|
|
28584
|
-
do {
|
|
28585
|
-
const list = await this.getClient().send(new DescribeCacheSubnetGroupsCommand({ ...marker && { Marker: marker } }));
|
|
28586
|
-
for (const g of list.CacheSubnetGroups ?? []) {
|
|
28587
|
-
if (!g.CacheSubnetGroupName) continue;
|
|
28588
|
-
const arn = g.ARN ?? await this.buildSubnetGroupArn(g.CacheSubnetGroupName);
|
|
28589
|
-
if (matchesCdkPath((await this.getClient().send(new ListTagsForResourceCommand$10({ ResourceName: arn }))).TagList, input.cdkPath)) return {
|
|
28590
|
-
physicalId: g.CacheSubnetGroupName,
|
|
28591
|
-
attributes: {}
|
|
28592
|
-
};
|
|
28593
|
-
}
|
|
28594
|
-
marker = list.Marker;
|
|
28595
|
-
} while (marker);
|
|
28596
28281
|
return null;
|
|
28597
28282
|
}
|
|
28598
|
-
async buildClusterArn(clusterName) {
|
|
28599
|
-
return `arn:aws:elasticache:${await this.getRegion()}:${await this.getAccountId()}:cluster:${clusterName}`;
|
|
28600
|
-
}
|
|
28601
|
-
async buildSubnetGroupArn(subnetGroupName) {
|
|
28602
|
-
return `arn:aws:elasticache:${await this.getRegion()}:${await this.getAccountId()}:subnetgroup:${subnetGroupName}`;
|
|
28603
|
-
}
|
|
28604
|
-
async getRegion() {
|
|
28605
|
-
return await this.getClient().config.region() || this.providerRegion || "us-east-1";
|
|
28606
|
-
}
|
|
28607
|
-
async getAccountId() {
|
|
28608
|
-
if (this.cachedAccountId) return this.cachedAccountId;
|
|
28609
|
-
if (!this.stsClient) this.stsClient = new STSClient(this.providerRegion ? { region: this.providerRegion } : {});
|
|
28610
|
-
const identity = await this.stsClient.send(new GetCallerIdentityCommand({}));
|
|
28611
|
-
if (!identity.Account) throw new Error("Failed to resolve AWS account id from STS");
|
|
28612
|
-
this.cachedAccountId = identity.Account;
|
|
28613
|
-
return this.cachedAccountId;
|
|
28614
|
-
}
|
|
28615
28283
|
};
|
|
28616
28284
|
|
|
28617
28285
|
//#endregion
|
|
@@ -29331,7 +28999,7 @@ var ServiceDiscoveryProvider = class ServiceDiscoveryProvider {
|
|
|
29331
28999
|
/** Best-effort tag fetch via `ListTagsForResource(ResourceARN)`. */
|
|
29332
29000
|
async attachTags(result, arn) {
|
|
29333
29001
|
try {
|
|
29334
|
-
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForResourceCommand$
|
|
29002
|
+
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForResourceCommand$15({ ResourceARN: arn }))).Tags);
|
|
29335
29003
|
} catch (err) {
|
|
29336
29004
|
this.logger.debug(`ServiceDiscovery ListTagsForResource(${arn}) failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
29337
29005
|
}
|
|
@@ -29373,25 +29041,17 @@ var ServiceDiscoveryProvider = class ServiceDiscoveryProvider {
|
|
|
29373
29041
|
throw err;
|
|
29374
29042
|
}
|
|
29375
29043
|
const desiredName = typeof input.properties?.["Name"] === "string" ? input.properties["Name"] : void 0;
|
|
29044
|
+
if (!desiredName) return null;
|
|
29376
29045
|
let token;
|
|
29377
29046
|
do {
|
|
29378
29047
|
const list = await this.getClient().send(new ListNamespacesCommand({ ...token && { NextToken: token } }));
|
|
29379
29048
|
for (const ns of list.Namespaces ?? []) {
|
|
29380
29049
|
if (!ns.Id || !ns.Arn) continue;
|
|
29381
29050
|
if (expectedKind && ns.Type && ns.Type !== expectedKind) continue;
|
|
29382
|
-
if (
|
|
29051
|
+
if (ns.Name === desiredName) return {
|
|
29383
29052
|
physicalId: ns.Id,
|
|
29384
29053
|
attributes: {}
|
|
29385
29054
|
};
|
|
29386
|
-
if (input.cdkPath) try {
|
|
29387
|
-
if (matchesCdkPath((await this.getClient().send(new ListTagsForResourceCommand$16({ ResourceARN: ns.Arn }))).Tags, input.cdkPath)) return {
|
|
29388
|
-
physicalId: ns.Id,
|
|
29389
|
-
attributes: {}
|
|
29390
|
-
};
|
|
29391
|
-
} catch (err) {
|
|
29392
|
-
if (err instanceof NamespaceNotFound) continue;
|
|
29393
|
-
throw err;
|
|
29394
|
-
}
|
|
29395
29055
|
}
|
|
29396
29056
|
token = list.NextToken;
|
|
29397
29057
|
} while (token);
|
|
@@ -29408,24 +29068,6 @@ var ServiceDiscoveryProvider = class ServiceDiscoveryProvider {
|
|
|
29408
29068
|
if (err instanceof ServiceNotFound) return null;
|
|
29409
29069
|
throw err;
|
|
29410
29070
|
}
|
|
29411
|
-
if (!input.cdkPath) return null;
|
|
29412
|
-
let token;
|
|
29413
|
-
do {
|
|
29414
|
-
const list = await this.getClient().send(new ListServicesCommand$1({ ...token && { NextToken: token } }));
|
|
29415
|
-
for (const svc of list.Services ?? []) {
|
|
29416
|
-
if (!svc.Id || !svc.Arn) continue;
|
|
29417
|
-
try {
|
|
29418
|
-
if (matchesCdkPath((await this.getClient().send(new ListTagsForResourceCommand$16({ ResourceARN: svc.Arn }))).Tags, input.cdkPath)) return {
|
|
29419
|
-
physicalId: svc.Id,
|
|
29420
|
-
attributes: {}
|
|
29421
|
-
};
|
|
29422
|
-
} catch (err) {
|
|
29423
|
-
if (err instanceof ServiceNotFound) continue;
|
|
29424
|
-
throw err;
|
|
29425
|
-
}
|
|
29426
|
-
}
|
|
29427
|
-
token = list.NextToken;
|
|
29428
|
-
} while (token);
|
|
29429
29071
|
return null;
|
|
29430
29072
|
}
|
|
29431
29073
|
/**
|
|
@@ -30318,11 +29960,13 @@ var AppSyncProvider = class {
|
|
|
30318
29960
|
/**
|
|
30319
29961
|
* Adopt an existing AppSync resource into cdkd state.
|
|
30320
29962
|
*
|
|
30321
|
-
* `AWS::AppSync::GraphQLApi`
|
|
30322
|
-
* `
|
|
29963
|
+
* `AWS::AppSync::GraphQLApi` resolves an explicit `--resource` override
|
|
29964
|
+
* (verified via `GetGraphqlApi`). There is no `aws:cdk:path` tag walk —
|
|
29965
|
+
* AWS rejects `aws:`-prefixed tag writes, so that tag never exists on a
|
|
29966
|
+
* real resource (issue #1134); auto-mode import resolves ids from
|
|
29967
|
+
* CloudFormation's `DescribeStackResources` instead. AppSync sub-resources
|
|
30323
29968
|
* (`GraphQLSchema`, `DataSource`, `Resolver`, `ApiKey`) are scoped under a
|
|
30324
|
-
* parent `apiId`
|
|
30325
|
-
* explicit-override only.
|
|
29969
|
+
* parent `apiId` — explicit-override only.
|
|
30326
29970
|
*/
|
|
30327
29971
|
async import(input) {
|
|
30328
29972
|
if (input.resourceType !== "AWS::AppSync::GraphQLApi") {
|
|
@@ -30343,19 +29987,6 @@ var AppSyncProvider = class {
|
|
|
30343
29987
|
if (err instanceof NotFoundException$4) return null;
|
|
30344
29988
|
throw err;
|
|
30345
29989
|
}
|
|
30346
|
-
if (!input.cdkPath) return null;
|
|
30347
|
-
let nextToken;
|
|
30348
|
-
do {
|
|
30349
|
-
const list = await this.getClient().send(new ListGraphqlApisCommand({ ...nextToken && { nextToken } }));
|
|
30350
|
-
for (const api of list.graphqlApis ?? []) {
|
|
30351
|
-
if (!api.apiId) continue;
|
|
30352
|
-
if (api.tags?.["aws:cdk:path"] === input.cdkPath) return {
|
|
30353
|
-
physicalId: api.apiId,
|
|
30354
|
-
attributes: {}
|
|
30355
|
-
};
|
|
30356
|
-
}
|
|
30357
|
-
nextToken = list.nextToken;
|
|
30358
|
-
} while (nextToken);
|
|
30359
29990
|
return null;
|
|
30360
29991
|
}
|
|
30361
29992
|
};
|
|
@@ -30374,8 +30005,6 @@ var AppSyncProvider = class {
|
|
|
30374
30005
|
*/
|
|
30375
30006
|
var GlueProvider = class {
|
|
30376
30007
|
client;
|
|
30377
|
-
stsClient;
|
|
30378
|
-
cachedAccountId;
|
|
30379
30008
|
providerRegion = process.env["AWS_REGION"];
|
|
30380
30009
|
logger = getLogger().child("GlueProvider");
|
|
30381
30010
|
handledProperties = /* @__PURE__ */ new Map([["AWS::Glue::Database", /* @__PURE__ */ new Set([
|
|
@@ -30621,16 +30250,11 @@ var GlueProvider = class {
|
|
|
30621
30250
|
/**
|
|
30622
30251
|
* Adopt an existing Glue Database or Table into cdkd state.
|
|
30623
30252
|
*
|
|
30624
|
-
* Lookup
|
|
30625
|
-
*
|
|
30626
|
-
*
|
|
30627
|
-
*
|
|
30628
|
-
*
|
|
30629
|
-
* a `Record<string,string>` map (not a `Tag[]` array), so the
|
|
30630
|
-
* match is `tags?.[CDK_PATH_TAG] === input.cdkPath`.
|
|
30631
|
-
*
|
|
30632
|
-
* Glue list APIs return only names — ARNs are constructed locally
|
|
30633
|
-
* for the per-item GetTags call.
|
|
30253
|
+
* Lookup (per type): explicit override / template name → verify with
|
|
30254
|
+
* `GetDatabase` or `GetTable`. There is no `aws:cdk:path` tag walk — AWS
|
|
30255
|
+
* rejects `aws:`-prefixed tag writes, so that tag never exists on a real
|
|
30256
|
+
* resource (issue #1134); auto-mode import resolves ids from
|
|
30257
|
+
* CloudFormation's `DescribeStackResources` instead.
|
|
30634
30258
|
*/
|
|
30635
30259
|
/**
|
|
30636
30260
|
* Read the AWS-current Glue resource configuration in CFn-property shape.
|
|
@@ -30751,23 +30375,6 @@ var GlueProvider = class {
|
|
|
30751
30375
|
if (err instanceof EntityNotFoundException) return null;
|
|
30752
30376
|
throw err;
|
|
30753
30377
|
}
|
|
30754
|
-
if (!input.cdkPath) return null;
|
|
30755
|
-
let nextToken;
|
|
30756
|
-
do {
|
|
30757
|
-
const list = await this.getClient().send(new GetDatabasesCommand({
|
|
30758
|
-
...nextToken && { NextToken: nextToken },
|
|
30759
|
-
...catalogId && { CatalogId: catalogId }
|
|
30760
|
-
}));
|
|
30761
|
-
for (const db of list.DatabaseList ?? []) {
|
|
30762
|
-
if (!db.Name) continue;
|
|
30763
|
-
const arn = await this.buildDatabaseArn(db.Name, db.CatalogId);
|
|
30764
|
-
if (await this.tagsMatchCdkPath(arn, input.cdkPath)) return {
|
|
30765
|
-
physicalId: db.Name,
|
|
30766
|
-
attributes: {}
|
|
30767
|
-
};
|
|
30768
|
-
}
|
|
30769
|
-
nextToken = list.NextToken;
|
|
30770
|
-
} while (nextToken);
|
|
30771
30378
|
return null;
|
|
30772
30379
|
}
|
|
30773
30380
|
async importTable(input) {
|
|
@@ -30806,51 +30413,8 @@ var GlueProvider = class {
|
|
|
30806
30413
|
if (err instanceof EntityNotFoundException) return null;
|
|
30807
30414
|
throw err;
|
|
30808
30415
|
}
|
|
30809
|
-
if (!input.cdkPath || !databaseName) return null;
|
|
30810
|
-
let nextToken;
|
|
30811
|
-
do {
|
|
30812
|
-
const list = await this.getClient().send(new GetTablesCommand({
|
|
30813
|
-
DatabaseName: databaseName,
|
|
30814
|
-
...nextToken && { NextToken: nextToken },
|
|
30815
|
-
...catalogId && { CatalogId: catalogId }
|
|
30816
|
-
}));
|
|
30817
|
-
for (const t of list.TableList ?? []) {
|
|
30818
|
-
if (!t.Name) continue;
|
|
30819
|
-
const arn = await this.buildTableArn(databaseName, t.Name, catalogId);
|
|
30820
|
-
if (await this.tagsMatchCdkPath(arn, input.cdkPath)) return {
|
|
30821
|
-
physicalId: `${databaseName}|${t.Name}`,
|
|
30822
|
-
attributes: {}
|
|
30823
|
-
};
|
|
30824
|
-
}
|
|
30825
|
-
nextToken = list.NextToken;
|
|
30826
|
-
} while (nextToken);
|
|
30827
30416
|
return null;
|
|
30828
30417
|
}
|
|
30829
|
-
async tagsMatchCdkPath(arn, cdkPath) {
|
|
30830
|
-
try {
|
|
30831
|
-
return (await this.getClient().send(new GetTagsCommand({ ResourceArn: arn }))).Tags?.[CDK_PATH_TAG] === cdkPath;
|
|
30832
|
-
} catch (err) {
|
|
30833
|
-
if (err instanceof EntityNotFoundException) return false;
|
|
30834
|
-
throw err;
|
|
30835
|
-
}
|
|
30836
|
-
}
|
|
30837
|
-
async buildDatabaseArn(databaseName, catalogId) {
|
|
30838
|
-
return `arn:aws:glue:${await this.getRegion()}:${catalogId ?? await this.getAccountId()}:database/${databaseName}`;
|
|
30839
|
-
}
|
|
30840
|
-
async buildTableArn(databaseName, tableName, catalogId) {
|
|
30841
|
-
return `arn:aws:glue:${await this.getRegion()}:${catalogId ?? await this.getAccountId()}:table/${databaseName}/${tableName}`;
|
|
30842
|
-
}
|
|
30843
|
-
async getRegion() {
|
|
30844
|
-
return await this.getClient().config.region() || this.providerRegion || "us-east-1";
|
|
30845
|
-
}
|
|
30846
|
-
async getAccountId() {
|
|
30847
|
-
if (this.cachedAccountId) return this.cachedAccountId;
|
|
30848
|
-
if (!this.stsClient) this.stsClient = new STSClient(this.providerRegion ? { region: this.providerRegion } : {});
|
|
30849
|
-
const identity = await this.stsClient.send(new GetCallerIdentityCommand({}));
|
|
30850
|
-
if (!identity.Account) throw new Error("Failed to resolve AWS account id from STS");
|
|
30851
|
-
this.cachedAccountId = identity.Account;
|
|
30852
|
-
return this.cachedAccountId;
|
|
30853
|
-
}
|
|
30854
30418
|
};
|
|
30855
30419
|
/**
|
|
30856
30420
|
* SDK Provider for `AWS::Glue::Workflow`.
|
|
@@ -30996,29 +30560,8 @@ var GlueWorkflowProvider = class {
|
|
|
30996
30560
|
if (err instanceof EntityNotFoundException) return null;
|
|
30997
30561
|
throw err;
|
|
30998
30562
|
}
|
|
30999
|
-
if (!input.cdkPath) return null;
|
|
31000
|
-
let nextToken;
|
|
31001
|
-
do {
|
|
31002
|
-
const list = await this.getClient().send(new ListWorkflowsCommand({ ...nextToken && { NextToken: nextToken } }));
|
|
31003
|
-
for (const name of list.Workflows ?? []) {
|
|
31004
|
-
const arn = await this.buildWorkflowArn(name);
|
|
31005
|
-
if (await this.tagsMatchCdkPath(arn, input.cdkPath)) return {
|
|
31006
|
-
physicalId: name,
|
|
31007
|
-
attributes: {}
|
|
31008
|
-
};
|
|
31009
|
-
}
|
|
31010
|
-
nextToken = list.NextToken;
|
|
31011
|
-
} while (nextToken);
|
|
31012
30563
|
return null;
|
|
31013
30564
|
}
|
|
31014
|
-
async tagsMatchCdkPath(arn, cdkPath) {
|
|
31015
|
-
try {
|
|
31016
|
-
return (await this.getClient().send(new GetTagsCommand({ ResourceArn: arn }))).Tags?.[CDK_PATH_TAG] === cdkPath;
|
|
31017
|
-
} catch (err) {
|
|
31018
|
-
if (err instanceof EntityNotFoundException) return false;
|
|
31019
|
-
throw err;
|
|
31020
|
-
}
|
|
31021
|
-
}
|
|
31022
30565
|
async buildWorkflowArn(workflowName) {
|
|
31023
30566
|
return `arn:aws:glue:${await this.getRegion()}:${await this.getAccountId()}:workflow/${workflowName}`;
|
|
31024
30567
|
}
|
|
@@ -31136,15 +30679,6 @@ var GlueSecurityConfigurationProvider = class {
|
|
|
31136
30679
|
if (err instanceof EntityNotFoundException) return null;
|
|
31137
30680
|
throw err;
|
|
31138
30681
|
}
|
|
31139
|
-
if (!explicitName) {
|
|
31140
|
-
let nextToken;
|
|
31141
|
-
do {
|
|
31142
|
-
const list = await this.getClient().send(new GetSecurityConfigurationsCommand({ ...nextToken && { NextToken: nextToken } }));
|
|
31143
|
-
for (const _entry of list.SecurityConfigurations ?? []);
|
|
31144
|
-
nextToken = list.NextToken;
|
|
31145
|
-
} while (nextToken);
|
|
31146
|
-
return null;
|
|
31147
|
-
}
|
|
31148
30682
|
return null;
|
|
31149
30683
|
}
|
|
31150
30684
|
};
|
|
@@ -33096,7 +32630,7 @@ var BudgetsBudgetProvider = class {
|
|
|
33096
32630
|
},
|
|
33097
32631
|
describe: async (budget) => {
|
|
33098
32632
|
if (!budget.BudgetName) return void 0;
|
|
33099
|
-
return await client.send(new ListTagsForResourceCommand$
|
|
32633
|
+
return await client.send(new ListTagsForResourceCommand$16({ ResourceARN: this.budgetArn(accountId, budget.BudgetName) }));
|
|
33100
32634
|
},
|
|
33101
32635
|
tagsOf: (tags) => tags.ResourceTags
|
|
33102
32636
|
});
|
|
@@ -33678,7 +33212,7 @@ var KinesisStreamConsumerProvider = class {
|
|
|
33678
33212
|
if (desc.ConsumerName !== void 0) result["ConsumerName"] = desc.ConsumerName;
|
|
33679
33213
|
if (desc.StreamARN !== void 0) result["StreamARN"] = desc.StreamARN;
|
|
33680
33214
|
try {
|
|
33681
|
-
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForResourceCommand$
|
|
33215
|
+
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForResourceCommand$17({ ResourceARN: physicalId }))).Tags);
|
|
33682
33216
|
} catch (err) {
|
|
33683
33217
|
if (err instanceof ResourceNotFoundException$8) return void 0;
|
|
33684
33218
|
this.logger.debug(`ListTagsForResource(${physicalId}) failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
@@ -35748,8 +35282,8 @@ var FSxFileSystemProvider = class {
|
|
|
35748
35282
|
}
|
|
35749
35283
|
/**
|
|
35750
35284
|
* Adopt an existing FSx file system into cdkd state. Explicit physical
|
|
35751
|
-
* id is verified via `DescribeFileSystems`;
|
|
35752
|
-
*
|
|
35285
|
+
* id is verified via `DescribeFileSystems`; without an override the
|
|
35286
|
+
* resource is reported as not-found.
|
|
35753
35287
|
*/
|
|
35754
35288
|
async import(input) {
|
|
35755
35289
|
if (input.resourceType !== "AWS::FSx::FileSystem") return null;
|
|
@@ -35763,19 +35297,6 @@ var FSxFileSystemProvider = class {
|
|
|
35763
35297
|
if (err instanceof FileSystemNotFound$1) return null;
|
|
35764
35298
|
throw err;
|
|
35765
35299
|
}
|
|
35766
|
-
if (!input.cdkPath) return null;
|
|
35767
|
-
let nextToken;
|
|
35768
|
-
do {
|
|
35769
|
-
const list = await this.getClient().send(new DescribeFileSystemsCommand$1({ ...nextToken && { NextToken: nextToken } }));
|
|
35770
|
-
for (const fs of list.FileSystems ?? []) {
|
|
35771
|
-
if (!fs.FileSystemId) continue;
|
|
35772
|
-
if (matchesCdkPath(fs.Tags, input.cdkPath)) return {
|
|
35773
|
-
physicalId: fs.FileSystemId,
|
|
35774
|
-
attributes: this.buildAttributes(fs)
|
|
35775
|
-
};
|
|
35776
|
-
}
|
|
35777
|
-
nextToken = list.NextToken;
|
|
35778
|
-
} while (nextToken);
|
|
35779
35300
|
return null;
|
|
35780
35301
|
}
|
|
35781
35302
|
};
|
|
@@ -36342,7 +35863,7 @@ var EMRClusterProvider = class {
|
|
|
36342
35863
|
cdkPath: input.cdkPath,
|
|
36343
35864
|
logicalId: input.logicalId,
|
|
36344
35865
|
listPage: async (marker) => {
|
|
36345
|
-
const list = await this.getClient().send(new ListClustersCommand
|
|
35866
|
+
const list = await this.getClient().send(new ListClustersCommand({
|
|
36346
35867
|
ClusterStates: [...NON_TERMINATED_STATES],
|
|
36347
35868
|
...marker && { Marker: marker }
|
|
36348
35869
|
}));
|
|
@@ -39102,11 +38623,11 @@ var CodeBuildProvider = class {
|
|
|
39102
38623
|
/**
|
|
39103
38624
|
* Adopt an existing CodeBuild project into cdkd state.
|
|
39104
38625
|
*
|
|
39105
|
-
* Lookup
|
|
39106
|
-
*
|
|
39107
|
-
*
|
|
39108
|
-
*
|
|
39109
|
-
*
|
|
38626
|
+
* Lookup: `--resource` override or `Properties.Name` → verify via
|
|
38627
|
+
* `BatchGetProjects`. There is no `aws:cdk:path` tag walk — AWS rejects
|
|
38628
|
+
* `aws:`-prefixed tag writes, so that tag never exists on a real resource
|
|
38629
|
+
* (issue #1134); auto-mode import resolves ids from CloudFormation's
|
|
38630
|
+
* `DescribeStackResources` instead.
|
|
39110
38631
|
*/
|
|
39111
38632
|
/**
|
|
39112
38633
|
* Read the AWS-current CodeBuild Project configuration in CFn-property shape.
|
|
@@ -39290,24 +38811,6 @@ var CodeBuildProvider = class {
|
|
|
39290
38811
|
if (err instanceof ResourceNotFoundException$11) return null;
|
|
39291
38812
|
throw err;
|
|
39292
38813
|
}
|
|
39293
|
-
if (!input.cdkPath) return null;
|
|
39294
|
-
let nextToken;
|
|
39295
|
-
do {
|
|
39296
|
-
const list = await this.getClient().send(new ListProjectsCommand({ ...nextToken && { nextToken } }));
|
|
39297
|
-
const names = (list.projects ?? []).filter((n) => typeof n === "string");
|
|
39298
|
-
if (names.length > 0) {
|
|
39299
|
-
const batch = await this.getClient().send(new BatchGetProjectsCommand({ names }));
|
|
39300
|
-
for (const proj of batch.projects ?? []) {
|
|
39301
|
-
if (!proj.name) continue;
|
|
39302
|
-
const tags = proj.tags ?? [];
|
|
39303
|
-
for (const t of tags) if (t.key === "aws:cdk:path" && t.value === input.cdkPath) return {
|
|
39304
|
-
physicalId: proj.name,
|
|
39305
|
-
attributes: {}
|
|
39306
|
-
};
|
|
39307
|
-
}
|
|
39308
|
-
}
|
|
39309
|
-
nextToken = list.nextToken;
|
|
39310
|
-
} while (nextToken);
|
|
39311
38814
|
return null;
|
|
39312
38815
|
}
|
|
39313
38816
|
};
|
|
@@ -39677,7 +39180,7 @@ var CodeCommitRepositoryProvider = class {
|
|
|
39677
39180
|
if (!metadata) return void 0;
|
|
39678
39181
|
let tags = [];
|
|
39679
39182
|
if (metadata.Arn) try {
|
|
39680
|
-
tags = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForResourceCommand$
|
|
39183
|
+
tags = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForResourceCommand$18({ resourceArn: metadata.Arn }))).tags);
|
|
39681
39184
|
} catch (err) {
|
|
39682
39185
|
if (err instanceof RepositoryDoesNotExistException) return void 0;
|
|
39683
39186
|
throw err;
|
|
@@ -39748,7 +39251,7 @@ var CodeCommitRepositoryProvider = class {
|
|
|
39748
39251
|
throw err;
|
|
39749
39252
|
}
|
|
39750
39253
|
if (!metadata?.Arn) return void 0;
|
|
39751
|
-
const tagsResp = await this.getClient().send(new ListTagsForResourceCommand$
|
|
39254
|
+
const tagsResp = await this.getClient().send(new ListTagsForResourceCommand$18({ resourceArn: metadata.Arn }));
|
|
39752
39255
|
return {
|
|
39753
39256
|
metadata,
|
|
39754
39257
|
tags: tagsResp.tags
|
|
@@ -40318,7 +39821,7 @@ var S3VectorsProvider = class {
|
|
|
40318
39821
|
if (Object.keys(enc).length > 0) result["EncryptionConfiguration"] = enc;
|
|
40319
39822
|
}
|
|
40320
39823
|
if (bucket?.vectorBucketArn) try {
|
|
40321
|
-
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForResourceCommand$
|
|
39824
|
+
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForResourceCommand$19({ resourceArn: bucket.vectorBucketArn }))).tags);
|
|
40322
39825
|
} catch (err) {
|
|
40323
39826
|
this.logger.debug(`S3Vectors ListTagsForResource(${bucket.vectorBucketArn}) failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
40324
39827
|
result["Tags"] = [];
|
|
@@ -40360,7 +39863,7 @@ var S3VectorsProvider = class {
|
|
|
40360
39863
|
describe: async (bucket) => {
|
|
40361
39864
|
if (!bucket.vectorBucketName || !bucket.vectorBucketArn) return void 0;
|
|
40362
39865
|
try {
|
|
40363
|
-
return await this.getClient().send(new ListTagsForResourceCommand$
|
|
39866
|
+
return await this.getClient().send(new ListTagsForResourceCommand$19({ resourceArn: bucket.vectorBucketArn }));
|
|
40364
39867
|
} catch (err) {
|
|
40365
39868
|
if (this.isNotFoundError(err)) return void 0;
|
|
40366
39869
|
throw err;
|
|
@@ -40940,16 +40443,10 @@ var S3TablesProvider = class {
|
|
|
40940
40443
|
/**
|
|
40941
40444
|
* Adopt an existing S3 Tables resource into cdkd state.
|
|
40942
40445
|
*
|
|
40943
|
-
* - **AWS::S3Tables::TableBucket**:
|
|
40944
|
-
* `
|
|
40945
|
-
*
|
|
40946
|
-
*
|
|
40947
|
-
* - **AWS::S3Tables::Table**: tag-based auto-lookup walks every
|
|
40948
|
-
* table bucket → namespace → table and calls `ListTagsForResource`
|
|
40949
|
-
* on each table ARN; matches `aws:cdk:path`.
|
|
40950
|
-
* - **AWS::S3Tables::Namespace**: explicit-override only. Namespaces
|
|
40951
|
-
* are not taggable in S3 Tables (`ListTagsForResource` accepts only
|
|
40952
|
-
* table-bucket or table ARNs), so auto-lookup is impossible.
|
|
40446
|
+
* - **AWS::S3Tables::TableBucket**: `--resource <id>=<arn>` override, or
|
|
40447
|
+
* a `Properties.TableBucketName` match against `ListTableBuckets`.
|
|
40448
|
+
* - **AWS::S3Tables::Table**: explicit-override only.
|
|
40449
|
+
* - **AWS::S3Tables::Namespace**: explicit-override only.
|
|
40953
40450
|
*/
|
|
40954
40451
|
async import(input) {
|
|
40955
40452
|
switch (input.resourceType) {
|
|
@@ -40971,24 +40468,16 @@ var S3TablesProvider = class {
|
|
|
40971
40468
|
throw err;
|
|
40972
40469
|
}
|
|
40973
40470
|
const desiredName = typeof input.properties?.["TableBucketName"] === "string" ? input.properties["TableBucketName"] : void 0;
|
|
40471
|
+
if (!desiredName) return null;
|
|
40974
40472
|
let token;
|
|
40975
40473
|
do {
|
|
40976
40474
|
const list = await this.getClient().send(new ListTableBucketsCommand({ ...token && { continuationToken: token } }));
|
|
40977
40475
|
for (const bucket of list.tableBuckets ?? []) {
|
|
40978
40476
|
if (!bucket.arn) continue;
|
|
40979
|
-
if (
|
|
40477
|
+
if (bucket.name === desiredName) return {
|
|
40980
40478
|
physicalId: bucket.arn,
|
|
40981
40479
|
attributes: {}
|
|
40982
40480
|
};
|
|
40983
|
-
if (input.cdkPath) try {
|
|
40984
|
-
if ((await this.getClient().send(new ListTagsForResourceCommand$21({ resourceArn: bucket.arn }))).tags?.["aws:cdk:path"] === input.cdkPath) return {
|
|
40985
|
-
physicalId: bucket.arn,
|
|
40986
|
-
attributes: {}
|
|
40987
|
-
};
|
|
40988
|
-
} catch (err) {
|
|
40989
|
-
if (err instanceof NotFoundException$6) continue;
|
|
40990
|
-
throw err;
|
|
40991
|
-
}
|
|
40992
40481
|
}
|
|
40993
40482
|
token = list.continuationToken;
|
|
40994
40483
|
} while (token);
|
|
@@ -41023,48 +40512,6 @@ var S3TablesProvider = class {
|
|
|
41023
40512
|
attributes: {}
|
|
41024
40513
|
};
|
|
41025
40514
|
}
|
|
41026
|
-
if (!input.cdkPath) return null;
|
|
41027
|
-
let bucketToken;
|
|
41028
|
-
do {
|
|
41029
|
-
const buckets = await this.getClient().send(new ListTableBucketsCommand({ ...bucketToken && { continuationToken: bucketToken } }));
|
|
41030
|
-
for (const bucket of buckets.tableBuckets ?? []) {
|
|
41031
|
-
if (!bucket.arn) continue;
|
|
41032
|
-
let nsToken;
|
|
41033
|
-
do {
|
|
41034
|
-
const namespaces = await this.getClient().send(new ListNamespacesCommand$1({
|
|
41035
|
-
tableBucketARN: bucket.arn,
|
|
41036
|
-
...nsToken && { continuationToken: nsToken }
|
|
41037
|
-
}));
|
|
41038
|
-
for (const ns of namespaces.namespaces ?? []) {
|
|
41039
|
-
const namespaceName = ns.namespace?.[0];
|
|
41040
|
-
if (!namespaceName) continue;
|
|
41041
|
-
let tableToken;
|
|
41042
|
-
do {
|
|
41043
|
-
const tables = await this.getClient().send(new ListTablesCommand$1({
|
|
41044
|
-
tableBucketARN: bucket.arn,
|
|
41045
|
-
namespace: namespaceName,
|
|
41046
|
-
...tableToken && { continuationToken: tableToken }
|
|
41047
|
-
}));
|
|
41048
|
-
for (const table of tables.tables ?? []) {
|
|
41049
|
-
if (!table.name || !table.tableARN) continue;
|
|
41050
|
-
try {
|
|
41051
|
-
if ((await this.getClient().send(new ListTagsForResourceCommand$21({ resourceArn: table.tableARN }))).tags?.["aws:cdk:path"] === input.cdkPath) return {
|
|
41052
|
-
physicalId: `${bucket.arn}|${namespaceName}|${table.name}`,
|
|
41053
|
-
attributes: {}
|
|
41054
|
-
};
|
|
41055
|
-
} catch (err) {
|
|
41056
|
-
if (err instanceof NotFoundException$6) continue;
|
|
41057
|
-
throw err;
|
|
41058
|
-
}
|
|
41059
|
-
}
|
|
41060
|
-
tableToken = tables.continuationToken;
|
|
41061
|
-
} while (tableToken);
|
|
41062
|
-
}
|
|
41063
|
-
nsToken = namespaces.continuationToken;
|
|
41064
|
-
} while (nsToken);
|
|
41065
|
-
}
|
|
41066
|
-
bucketToken = buckets.continuationToken;
|
|
41067
|
-
} while (bucketToken);
|
|
41068
40515
|
return null;
|
|
41069
40516
|
}
|
|
41070
40517
|
async deleteTable(logicalId, physicalId, resourceType, context) {
|
|
@@ -41144,7 +40591,7 @@ var S3TablesProvider = class {
|
|
|
41144
40591
|
*/
|
|
41145
40592
|
async readTagsBestEffort(resourceArn) {
|
|
41146
40593
|
try {
|
|
41147
|
-
const tags = (await this.getClient().send(new ListTagsForResourceCommand$
|
|
40594
|
+
const tags = (await this.getClient().send(new ListTagsForResourceCommand$20({ resourceArn }))).tags ?? {};
|
|
41148
40595
|
const out = [];
|
|
41149
40596
|
for (const [Key, Value] of Object.entries(tags)) out.push({
|
|
41150
40597
|
Key,
|
|
@@ -41901,7 +41348,8 @@ async function runDestroyForStack(stackName, state, ctx) {
|
|
|
41901
41348
|
const providerMinTimeoutMs = provider.getMinResourceTimeoutMs?.() ?? 0;
|
|
41902
41349
|
const warnAfterMs = ctx.resourceWarnAfterByType?.[resource.resourceType] ?? ctx.resourceWarnAfterMs ?? 3e5;
|
|
41903
41350
|
const globalTimeoutMs = ctx.resourceTimeoutMs ?? 18e5;
|
|
41904
|
-
const
|
|
41351
|
+
const slowTypeMinTimeoutMs = slowCcOperationTimeoutMs(resource.resourceType, "DELETE");
|
|
41352
|
+
const timeoutMs = ctx.resourceTimeoutByType?.[resource.resourceType] ?? Math.max(providerMinTimeoutMs, slowTypeMinTimeoutMs, globalTimeoutMs);
|
|
41905
41353
|
await withResourceDeadline(async () => {
|
|
41906
41354
|
const maxAttempts = provider.disableOuterRetry ? 0 : 3;
|
|
41907
41355
|
let lastDeleteError;
|
|
@@ -52003,30 +51451,13 @@ async function importCommand(stackArg, options) {
|
|
|
52003
51451
|
if (migrationCfnStackName) {
|
|
52004
51452
|
logger.info(`Resolving physical IDs from CloudFormation stack '${migrationCfnStackName}' (recursive)...`);
|
|
52005
51453
|
migrationTree = await getCloudFormationResourceTree(migrationCfnStackName, awsClients.cloudFormation);
|
|
52006
|
-
const
|
|
52007
|
-
|
|
52008
|
-
|
|
52009
|
-
|
|
52010
|
-
|
|
52011
|
-
|
|
52012
|
-
|
|
52013
|
-
continue;
|
|
52014
|
-
}
|
|
52015
|
-
if (template.Resources[logicalId]?.Type === "AWS::CloudFormation::Stack") {
|
|
52016
|
-
skippedNestedStackRow++;
|
|
52017
|
-
continue;
|
|
52018
|
-
}
|
|
52019
|
-
if (!overrides.has(logicalId)) {
|
|
52020
|
-
overrides.set(logicalId, physicalId);
|
|
52021
|
-
derived++;
|
|
52022
|
-
}
|
|
52023
|
-
}
|
|
52024
|
-
const overriddenByUser = cfnMapping.size - derived - skippedNonImportable - skippedNestedStackRow;
|
|
52025
|
-
const detail = [];
|
|
52026
|
-
if (overriddenByUser > 0) detail.push(`${overriddenByUser} already overridden by --resource`);
|
|
52027
|
-
if (skippedNonImportable > 0) detail.push(`${skippedNonImportable} non-importable (e.g. CDKMetadata)`);
|
|
52028
|
-
if (skippedNestedStackRow > 0) detail.push(`${skippedNestedStackRow} nested-stack row(s) handled separately`);
|
|
52029
|
-
logger.info(`Resolved ${derived} physical ID(s) from CloudFormation` + (detail.length > 0 ? ` (${detail.join(", ")})` : ""));
|
|
51454
|
+
const mergeStats = mergeCfnDerivedOverrides({
|
|
51455
|
+
cfnMapping: migrationTree.resources,
|
|
51456
|
+
template,
|
|
51457
|
+
templateLogicalIds,
|
|
51458
|
+
overrides
|
|
51459
|
+
});
|
|
51460
|
+
logger.info(`Resolved ${mergeStats.derived} physical ID(s) from CloudFormation` + formatCfnOverrideMergeDetail(mergeStats));
|
|
52030
51461
|
validateNestedStackShape(template, migrationTree, stackInfo.stackName, stackInfo.nestedTemplates ?? {});
|
|
52031
51462
|
}
|
|
52032
51463
|
let accountIdForNestedSynth;
|
|
@@ -52041,15 +51472,13 @@ async function importCommand(stackArg, options) {
|
|
|
52041
51472
|
if (!selectiveMode && !migrationCfnStackName) {
|
|
52042
51473
|
const cfnResources = await tryGetCloudFormationResourceMap(stackInfo.stackName, awsClients.cloudFormation);
|
|
52043
51474
|
if (cfnResources) {
|
|
52044
|
-
|
|
52045
|
-
|
|
52046
|
-
|
|
52047
|
-
|
|
52048
|
-
|
|
52049
|
-
|
|
52050
|
-
|
|
52051
|
-
}
|
|
52052
|
-
if (derived > 0) logger.info(`Resolved ${derived} physical ID(s) from CloudFormation stack '${stackInfo.stackName}'. To adopt AND retire that stack, use --migrate-from-cloudformation.`);
|
|
51475
|
+
const mergeStats = mergeCfnDerivedOverrides({
|
|
51476
|
+
cfnMapping: cfnResources,
|
|
51477
|
+
template,
|
|
51478
|
+
templateLogicalIds,
|
|
51479
|
+
overrides
|
|
51480
|
+
});
|
|
51481
|
+
if (mergeStats.derived > 0) logger.info(`Resolved ${mergeStats.derived} physical ID(s) from CloudFormation stack '${stackInfo.stackName}'. To adopt AND retire that stack, use --migrate-from-cloudformation.`);
|
|
52053
51482
|
else logger.debug(`CloudFormation stack '${stackInfo.stackName}' contributed no new physical IDs.`);
|
|
52054
51483
|
} else logger.debug(`No CloudFormation stack named '${stackInfo.stackName}' — resolving physical IDs per provider.`);
|
|
52055
51484
|
}
|
|
@@ -52166,6 +51595,79 @@ async function importCommand(stackArg, options) {
|
|
|
52166
51595
|
}
|
|
52167
51596
|
}
|
|
52168
51597
|
/**
|
|
51598
|
+
* Merge a CloudFormation-derived `logicalId -> physicalId` map into the run's
|
|
51599
|
+
* `overrides`, applying the three filters every CFn-derived seed needs, and
|
|
51600
|
+
* report what each filter dropped.
|
|
51601
|
+
*
|
|
51602
|
+
* The filters, in order:
|
|
51603
|
+
* 1. **Not an importable template resource** — CFn knows about sentinel rows
|
|
51604
|
+
* like `AWS::CDK::Metadata` that cdkd silently skips on import. Merging
|
|
51605
|
+
* those would make the typo-validation step reject them.
|
|
51606
|
+
* 2. **Nested-stack row** — the AWS-side physical ID of an
|
|
51607
|
+
* `AWS::CloudFormation::Stack` row is the child stack ARN, which is NOT
|
|
51608
|
+
* what we want as an import override. The parent's state entry carries
|
|
51609
|
+
* the synthesized cdkd-local ARN (matching what `NestedStackProvider.create`
|
|
51610
|
+
* writes at deploy time — design §6), populated by `importOne`'s
|
|
51611
|
+
* short-circuit. Filtering here keeps the AWS ARN from overwriting it.
|
|
51612
|
+
* 3. **Already overridden** — user-supplied `--resource` /
|
|
51613
|
+
* `--resource-mapping` entries are inserted before any CFn lookup and
|
|
51614
|
+
* always win.
|
|
51615
|
+
*
|
|
51616
|
+
* Shared by all three CFn-derived seeding sites so a change to any filter
|
|
51617
|
+
* lands once: the `--migrate-from-cloudformation` root walk, the auto-mode
|
|
51618
|
+
* best-effort lookup (issue #1128), and the recursive nested-child walk.
|
|
51619
|
+
* The three differ only in their LOGGING, which stays at the call sites.
|
|
51620
|
+
*
|
|
51621
|
+
* **Second-order effect worth naming:** `overrides` is also consumed by
|
|
51622
|
+
* {@link substituteOverrideRefs}, so seeding it from CloudFormation means a
|
|
51623
|
+
* `{Ref: <X>}` in a resource's Properties pre-resolves to the CFn physical ID
|
|
51624
|
+
* before `provider.import()` sees it. That is intended — it is what makes
|
|
51625
|
+
* sub-resource providers (e.g. `SQSQueuePolicyProvider`, which reads
|
|
51626
|
+
* `properties.Queues[0]` as a literal queue URL) importable — but it is a
|
|
51627
|
+
* behavior beyond "resolve physical IDs", and it applies to every caller of
|
|
51628
|
+
* this helper, not just the migration path. See issue #1131.
|
|
51629
|
+
*
|
|
51630
|
+
* Mutates `overrides` in place; does not mutate `cfnMapping` or `template`.
|
|
51631
|
+
*/
|
|
51632
|
+
function mergeCfnDerivedOverrides(params) {
|
|
51633
|
+
const { cfnMapping, template, templateLogicalIds, overrides } = params;
|
|
51634
|
+
const stats = {
|
|
51635
|
+
derived: 0,
|
|
51636
|
+
skippedNonImportable: 0,
|
|
51637
|
+
skippedNestedStackRow: 0,
|
|
51638
|
+
overriddenByUser: 0
|
|
51639
|
+
};
|
|
51640
|
+
for (const [logicalId, physicalId] of cfnMapping) {
|
|
51641
|
+
if (!templateLogicalIds.has(logicalId)) {
|
|
51642
|
+
stats.skippedNonImportable++;
|
|
51643
|
+
continue;
|
|
51644
|
+
}
|
|
51645
|
+
if (template.Resources[logicalId]?.Type === "AWS::CloudFormation::Stack") {
|
|
51646
|
+
stats.skippedNestedStackRow++;
|
|
51647
|
+
continue;
|
|
51648
|
+
}
|
|
51649
|
+
if (overrides.has(logicalId)) {
|
|
51650
|
+
stats.overriddenByUser++;
|
|
51651
|
+
continue;
|
|
51652
|
+
}
|
|
51653
|
+
overrides.set(logicalId, physicalId);
|
|
51654
|
+
stats.derived++;
|
|
51655
|
+
}
|
|
51656
|
+
return stats;
|
|
51657
|
+
}
|
|
51658
|
+
/**
|
|
51659
|
+
* Render the human-readable breakdown of a {@link mergeCfnDerivedOverrides}
|
|
51660
|
+
* result — the parenthesized suffix of the `Resolved N physical ID(s)` line.
|
|
51661
|
+
* Returns `''` when nothing was dropped (no breakdown worth reporting).
|
|
51662
|
+
*/
|
|
51663
|
+
function formatCfnOverrideMergeDetail(stats) {
|
|
51664
|
+
const detail = [];
|
|
51665
|
+
if (stats.overriddenByUser > 0) detail.push(`${stats.overriddenByUser} already overridden by --resource`);
|
|
51666
|
+
if (stats.skippedNonImportable > 0) detail.push(`${stats.skippedNonImportable} non-importable (e.g. CDKMetadata)`);
|
|
51667
|
+
if (stats.skippedNestedStackRow > 0) detail.push(`${stats.skippedNestedStackRow} nested-stack row(s) handled separately`);
|
|
51668
|
+
return detail.length > 0 ? ` (${detail.join(", ")})` : "";
|
|
51669
|
+
}
|
|
51670
|
+
/**
|
|
52169
51671
|
* Recursively substitute `{Ref: <LogicalId>}` shapes in an arbitrary value
|
|
52170
51672
|
* tree with the matching entry from `overrides`. Used to bridge the gap
|
|
52171
51673
|
* between CDK synth's template (which carries raw intrinsics) and what a
|
|
@@ -52714,11 +52216,12 @@ async function importNestedStackChildrenRecursive(args) {
|
|
|
52714
52216
|
const childResources = collectImportableResources(childTemplate);
|
|
52715
52217
|
const childTemplateLogicalIds = new Set(childResources.map((r) => r.logicalId));
|
|
52716
52218
|
const childOverrides = /* @__PURE__ */ new Map();
|
|
52717
|
-
|
|
52718
|
-
|
|
52719
|
-
|
|
52720
|
-
|
|
52721
|
-
|
|
52219
|
+
mergeCfnDerivedOverrides({
|
|
52220
|
+
cfnMapping: childTreeNode.resources,
|
|
52221
|
+
template: childTemplate,
|
|
52222
|
+
templateLogicalIds: childTemplateLogicalIds,
|
|
52223
|
+
overrides: childOverrides
|
|
52224
|
+
});
|
|
52722
52225
|
const rows = [];
|
|
52723
52226
|
for (const { logicalId, resource } of childResources) {
|
|
52724
52227
|
if (resource.Type === "AWS::CloudFormation::Stack" && childTreeNode.nested.has(logicalId)) {
|
|
@@ -62320,7 +61823,7 @@ function createMigrateCommand() {
|
|
|
62320
61823
|
*/
|
|
62321
61824
|
function buildProgram() {
|
|
62322
61825
|
const program = new Command();
|
|
62323
|
-
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.257.
|
|
61826
|
+
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.257.3");
|
|
62324
61827
|
program.addCommand(createBootstrapCommand());
|
|
62325
61828
|
program.addCommand(createSynthCommand());
|
|
62326
61829
|
program.addCommand(createListCommand());
|