@go-to-k/cdkd 0.231.0 → 0.231.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{asg-provider-Dgj3loIG.js → asg-provider-Dd9Xze-T.js} +2 -2
- package/dist/{asg-provider-Dgj3loIG.js.map → asg-provider-Dd9Xze-T.js.map} +1 -1
- package/dist/cli.js +31 -370
- package/dist/cli.js.map +1 -1
- package/dist/{deploy-engine-IqXCHYxE.js → deploy-engine-B9NOJeGf.js} +360 -8
- package/dist/deploy-engine-B9NOJeGf.js.map +1 -0
- package/dist/{import-helpers-DayvBD4T.js → ec2-termination-protection-uvVnteGl.js} +32 -32
- package/dist/ec2-termination-protection-uvVnteGl.js.map +1 -0
- package/dist/index.js +2 -2
- package/package.json +1 -1
- package/dist/deploy-engine-IqXCHYxE.js.map +0 -1
- package/dist/import-helpers-DayvBD4T.js.map +0 -1
package/dist/cli.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { A as withErrorHandling, B as generateResourceName, C as StackHasActiveImportsError, F as getLiveRenderer, H as withSkipPrefix, I as PATTERN_B_NAME_OPTIONS, L as PATTERN_B_NAME_PROPERTIES, M as getLogger, P as runStackBuffered, R as PATTERN_B_RESOURCE_TYPES, S as ResourceUpdateNotSupportedError, U as withStackName, V as generateResourceNameWithFallback, _ as MissingCdkCliError, a as
|
|
2
|
+
import { A as withErrorHandling, B as generateResourceName, C as StackHasActiveImportsError, F as getLiveRenderer, H as withSkipPrefix, I as PATTERN_B_NAME_OPTIONS, L as PATTERN_B_NAME_PROPERTIES, M as getLogger, P as runStackBuffered, R as PATTERN_B_RESOURCE_TYPES, S as ResourceUpdateNotSupportedError, U as withStackName, V as generateResourceNameWithFallback, _ as MissingCdkCliError, a as normalizeAwsTagsToCfn, b as ProvisioningError, f as LocalInvokeBuildError$1, i as matchesCdkPath, k as normalizeAwsError, l as CdkdError, m as LocalStartServiceError, n as isTerminationProtectionPropagationError, o as resolveExplicitPhysicalId, p as LocalMigrateError, r as CDK_PATH_TAG, s as assertRegionMatch, t as disableInstanceApiTermination, v as NestedStackChildDirectDestroyError, w as StackTerminationProtectionError, x as ResourceTimeoutError, y as PartialFailureError } from "./ec2-termination-protection-uvVnteGl.js";
|
|
3
3
|
import { a as setAwsClients, i as resetAwsClients, r as getAwsClients, t as AwsClients } from "./aws-clients-pjPwZz1r.js";
|
|
4
|
-
import { $ as
|
|
5
|
-
import { t as ASGProvider } from "./asg-provider-
|
|
4
|
+
import { $ as resolveStateBucketWithDefault, A as DagBuilder, B as formatDockerLoginError, C as findActionableSilentDrops, D as WAFv2WebACLProvider, E as cfnRefValueFromPhysicalId, F as shouldRetainResource, G as getDockerImageBySourceHash, H as runDockerForeground, I as AssetPublisher, J as getDefaultStateBucketName, K as Synthesizer, L as stringifyValue, M as LockManager, N as S3StateBackend, O as applyRoleArnIfSet, P as rebuildClientForBucketRegion, Q as resolveSkipPrefix, R as WorkGraph, S as ProviderRegistry, T as IntrinsicFunctionResolver, U as runDockerStreaming, V as getDockerCmd, W as AssetManifestLoader, X as resolveApp, Y as getLegacyStateBucketName, Z as resolveCaptureObservedState, _ as green, a as withRetry, at as findLargeInlineResources, b as IAMRoleProvider, c as computeImplicitDeleteEdges, d as isStatefulRecreateTargetSync, et as resolveStateBucketWithDefaultAndSource, f as renderStatefulReason, g as gray, h as cyan, i as withResourceDeadline, it as MIGRATE_TMP_PREFIX, j as TemplateParser, k as DiffCalculator, l as extractDeploymentEventError, lt as resolveBucketRegion, m as bold, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nt as CFN_TEMPLATE_BODY_LIMIT, o as isRetryableTransientError, ot as uploadCfnTemplate, p as formatResourceLine, q as synthesisStatusMessage, r as DeployEngine, rt as CFN_TEMPLATE_URL_LIMIT, s as IMPLICIT_DELETE_DEPENDENCIES, st as AssemblyReader, t as DEFAULT_RESOURCE_TIMEOUT_MS, tt as warnDeprecatedNoPrefixCliFlag, u as MULTI_REGION_RECREATE_BLOCKED_TYPES, v as red, w as CloudControlProvider, x as collectInlinePolicyNamesManagedBySiblings, y as yellow, z as buildDockerImage } from "./deploy-engine-B9NOJeGf.js";
|
|
5
|
+
import { t as ASGProvider } from "./asg-provider-Dd9Xze-T.js";
|
|
6
6
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
7
7
|
import { createHash, randomBytes, randomUUID } from "node:crypto";
|
|
8
8
|
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";
|
|
@@ -48,20 +48,19 @@ import { CreateStateMachineCommand, DeleteStateMachineCommand, DescribeStateMach
|
|
|
48
48
|
import { CreateClusterCommand, CreateServiceCommand, DeleteClusterCommand, DeleteServiceCommand, DeregisterTaskDefinitionCommand, DescribeClustersCommand, DescribeServicesCommand, DescribeTaskDefinitionCommand, ECSClient, ListClustersCommand, ListServicesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$11, PutClusterCapacityProvidersCommand, RegisterTaskDefinitionCommand, TagResourceCommand as TagResourceCommand$12, UntagResourceCommand as UntagResourceCommand$11, UpdateClusterCommand, UpdateServiceCommand } from "@aws-sdk/client-ecs";
|
|
49
49
|
import { AddTagsToResourceCommand as AddTagsToResourceCommand$3, CreateDBClusterCommand as CreateDBClusterCommand$1, CreateDBInstanceCommand as CreateDBInstanceCommand$1, CreateDBSubnetGroupCommand as CreateDBSubnetGroupCommand$1, DeleteDBClusterCommand as DeleteDBClusterCommand$1, DeleteDBInstanceCommand as DeleteDBInstanceCommand$1, DeleteDBSubnetGroupCommand as DeleteDBSubnetGroupCommand$1, DescribeDBClustersCommand as DescribeDBClustersCommand$1, DescribeDBInstancesCommand as DescribeDBInstancesCommand$1, DescribeDBSubnetGroupsCommand as DescribeDBSubnetGroupsCommand$1, DocDBClient, ListTagsForResourceCommand as ListTagsForResourceCommand$12, ModifyDBClusterCommand as ModifyDBClusterCommand$1, ModifyDBInstanceCommand as ModifyDBInstanceCommand$1, ModifyDBSubnetGroupCommand as ModifyDBSubnetGroupCommand$1, RemoveTagsFromResourceCommand as RemoveTagsFromResourceCommand$3 } from "@aws-sdk/client-docdb";
|
|
50
50
|
import { AddTagsToResourceCommand as AddTagsToResourceCommand$4, CreateDBClusterCommand as CreateDBClusterCommand$2, CreateDBInstanceCommand as CreateDBInstanceCommand$2, CreateDBSubnetGroupCommand as CreateDBSubnetGroupCommand$2, DeleteDBClusterCommand as DeleteDBClusterCommand$2, DeleteDBInstanceCommand as DeleteDBInstanceCommand$2, DeleteDBSubnetGroupCommand as DeleteDBSubnetGroupCommand$2, DescribeDBClustersCommand as DescribeDBClustersCommand$2, DescribeDBInstancesCommand as DescribeDBInstancesCommand$2, DescribeDBSubnetGroupsCommand as DescribeDBSubnetGroupsCommand$2, ListTagsForResourceCommand as ListTagsForResourceCommand$13, ModifyDBClusterCommand as ModifyDBClusterCommand$2, ModifyDBInstanceCommand as ModifyDBInstanceCommand$2, ModifyDBSubnetGroupCommand as ModifyDBSubnetGroupCommand$2, NeptuneClient, RemoveTagsFromResourceCommand as RemoveTagsFromResourceCommand$4 } from "@aws-sdk/client-neptune";
|
|
51
|
-
import {
|
|
52
|
-
import {
|
|
53
|
-
import {
|
|
54
|
-
import { AppSyncClient, CreateApiKeyCommand, CreateDataSourceCommand, CreateGraphqlApiCommand, CreateResolverCommand, DeleteApiKeyCommand, DeleteDataSourceCommand, DeleteGraphqlApiCommand, DeleteResolverCommand, GetDataSourceCommand, GetGraphqlApiCommand, GetIntrospectionSchemaCommand, GetResolverCommand, ListApiKeysCommand, ListGraphqlApisCommand, NotFoundException as NotFoundException$4, StartSchemaCreationCommand, TagResourceCommand as TagResourceCommand$14, UntagResourceCommand as UntagResourceCommand$13, UpdateApiKeyCommand, UpdateDataSourceCommand, UpdateGraphqlApiCommand, UpdateResolverCommand } from "@aws-sdk/client-appsync";
|
|
51
|
+
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";
|
|
52
|
+
import { CreatePrivateDnsNamespaceCommand, CreateServiceCommand as CreateServiceCommand$1, DeleteNamespaceCommand, DeleteServiceAttributesCommand, DeleteServiceCommand as DeleteServiceCommand$1, GetNamespaceCommand, GetOperationCommand, GetServiceAttributesCommand, GetServiceCommand, ListNamespacesCommand, ListServicesCommand as ListServicesCommand$1, ListTagsForResourceCommand as ListTagsForResourceCommand$15, NamespaceNotFound, ServiceDiscoveryClient, ServiceNotFound, UpdatePrivateDnsNamespaceCommand, UpdateServiceAttributesCommand, UpdateServiceCommand as UpdateServiceCommand$1 } from "@aws-sdk/client-servicediscovery";
|
|
53
|
+
import { AppSyncClient, CreateApiKeyCommand, CreateDataSourceCommand, CreateGraphqlApiCommand, CreateResolverCommand, DeleteApiKeyCommand, DeleteDataSourceCommand, DeleteGraphqlApiCommand, DeleteResolverCommand, GetDataSourceCommand, GetGraphqlApiCommand, GetIntrospectionSchemaCommand, GetResolverCommand, ListApiKeysCommand, ListGraphqlApisCommand, NotFoundException as NotFoundException$4, StartSchemaCreationCommand, TagResourceCommand as TagResourceCommand$13, UntagResourceCommand as UntagResourceCommand$12, UpdateApiKeyCommand, UpdateDataSourceCommand, UpdateGraphqlApiCommand, UpdateResolverCommand } from "@aws-sdk/client-appsync";
|
|
55
54
|
import { parse, print } from "graphql";
|
|
56
55
|
import { CrawlerRunningException, CreateConnectionCommand, CreateCrawlerCommand, CreateDatabaseCommand, CreateJobCommand, CreateSecurityConfigurationCommand, CreateTableCommand as CreateTableCommand$1, CreateTriggerCommand, CreateWorkflowCommand, DeleteConnectionCommand, DeleteCrawlerCommand, DeleteDatabaseCommand, DeleteJobCommand, DeleteSecurityConfigurationCommand, DeleteTableCommand as DeleteTableCommand$1, DeleteTriggerCommand, DeleteWorkflowCommand, EntityNotFoundException, GetConnectionCommand, GetCrawlerCommand, GetDatabaseCommand, GetDatabasesCommand, GetJobCommand, GetSecurityConfigurationCommand, GetSecurityConfigurationsCommand, GetTableCommand, GetTablesCommand, GetTagsCommand, GetTriggerCommand, GetWorkflowCommand, GlueClient, ListWorkflowsCommand, StartCrawlerScheduleCommand, StartTriggerCommand, StopCrawlerCommand, StopCrawlerScheduleCommand, StopTriggerCommand, UpdateConnectionCommand, UpdateCrawlerCommand, UpdateDatabaseCommand, UpdateJobCommand, UpdateTableCommand as UpdateTableCommand$1, UpdateTriggerCommand, UpdateWorkflowCommand } from "@aws-sdk/client-glue";
|
|
57
|
-
import { AddTagsToStreamCommand, CreateStreamCommand, DecreaseStreamRetentionPeriodCommand, DeleteStreamCommand, DeregisterStreamConsumerCommand, DescribeStreamCommand, DescribeStreamConsumerCommand, DescribeStreamSummaryCommand, IncreaseStreamRetentionPeriodCommand, KinesisClient, ListStreamsCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$
|
|
56
|
+
import { AddTagsToStreamCommand, CreateStreamCommand, DecreaseStreamRetentionPeriodCommand, DeleteStreamCommand, DeregisterStreamConsumerCommand, DescribeStreamCommand, DescribeStreamConsumerCommand, DescribeStreamSummaryCommand, IncreaseStreamRetentionPeriodCommand, KinesisClient, ListStreamsCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$16, ListTagsForStreamCommand, RegisterStreamConsumerCommand, RemoveTagsFromStreamCommand, ResourceNotFoundException as ResourceNotFoundException$8, StartStreamEncryptionCommand, StopStreamEncryptionCommand, TagResourceCommand as TagResourceCommand$14, UntagResourceCommand as UntagResourceCommand$13, UpdateShardCountCommand, UpdateStreamModeCommand } from "@aws-sdk/client-kinesis";
|
|
58
57
|
import { CreateScheduleCommand, DeleteScheduleCommand, GetScheduleCommand, ResourceNotFoundException as ResourceNotFoundException$9, SchedulerClient, UpdateScheduleCommand } from "@aws-sdk/client-scheduler";
|
|
59
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";
|
|
60
59
|
import { CreateDeliveryStreamCommand, DeleteDeliveryStreamCommand, DescribeDeliveryStreamCommand, FirehoseClient, ListDeliveryStreamsCommand, ListTagsForDeliveryStreamCommand, ResourceNotFoundException as ResourceNotFoundException$10, TagDeliveryStreamCommand, UntagDeliveryStreamCommand, UpdateDestinationCommand } from "@aws-sdk/client-firehose";
|
|
61
60
|
import { AddTagsCommand as AddTagsCommand$1, CloudTrailClient, CreateTrailCommand, DeleteTrailCommand, GetEventSelectorsCommand, GetInsightSelectorsCommand, GetTrailCommand, GetTrailStatusCommand, ListTagsCommand as ListTagsCommand$1, ListTrailsCommand, PutEventSelectorsCommand, PutInsightSelectorsCommand, RemoveTagsCommand as RemoveTagsCommand$1, StartLoggingCommand, StopLoggingCommand, TrailNotFoundException, UpdateTrailCommand } from "@aws-sdk/client-cloudtrail";
|
|
62
61
|
import { BatchGetProjectsCommand, CodeBuildClient, CreateProjectCommand, DeleteProjectCommand, ListProjectsCommand, ResourceNotFoundException as ResourceNotFoundException$11, UpdateProjectCommand } from "@aws-sdk/client-codebuild";
|
|
63
|
-
import { CreateVectorBucketCommand, DeleteIndexCommand, DeleteVectorBucketCommand, GetVectorBucketCommand, ListIndexesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$
|
|
64
|
-
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$
|
|
62
|
+
import { CreateVectorBucketCommand, DeleteIndexCommand, DeleteVectorBucketCommand, GetVectorBucketCommand, ListIndexesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$17, ListVectorBucketsCommand, S3VectorsClient, TagResourceCommand as TagResourceCommand$15, UntagResourceCommand as UntagResourceCommand$14 } from "@aws-sdk/client-s3vectors";
|
|
63
|
+
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$18, NotFoundException as NotFoundException$5, S3TablesClient, TagResourceCommand as TagResourceCommand$16, UntagResourceCommand as UntagResourceCommand$15 } from "@aws-sdk/client-s3tables";
|
|
65
64
|
import { Document, Pair, Scalar, YAMLMap, YAMLSeq, parse as parse$1, stringify } from "yaml";
|
|
66
65
|
import { createLocalStartAgentCoreCommand, createLocalStartCloudFrontCommand, createLocalStateProvider, getEmbedConfig, isCfnFlagPresent, listTargets, rejectExplicitCfnStackWithMultipleStacks, resolveCfnFallbackRegion, setEmbedConfig, substituteAgainstState, substituteAgainstStateAsync, substituteEnvVarsFromState, substituteEnvVarsFromStateAsync } from "cdk-local";
|
|
67
66
|
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";
|
|
@@ -1446,7 +1445,7 @@ const FLUSH_INTERVAL_MS = 2e3;
|
|
|
1446
1445
|
const FLUSH_EVENT_THRESHOLD = 50;
|
|
1447
1446
|
/** Build-time cdkd version, with a dev fallback for non-built contexts. */
|
|
1448
1447
|
function getCdkdVersion() {
|
|
1449
|
-
return "0.231.
|
|
1448
|
+
return "0.231.1";
|
|
1450
1449
|
}
|
|
1451
1450
|
/**
|
|
1452
1451
|
* Generate a time-sortable unique run id, e.g.
|
|
@@ -26016,344 +26015,6 @@ var Route53Provider = class {
|
|
|
26016
26015
|
}
|
|
26017
26016
|
};
|
|
26018
26017
|
|
|
26019
|
-
//#endregion
|
|
26020
|
-
//#region src/provisioning/providers/wafv2-provider.ts
|
|
26021
|
-
/**
|
|
26022
|
-
* Translate the empty-string placeholder `readCurrentState` emits for an
|
|
26023
|
-
* absent `Description` to `undefined` before shipping it to AWS.
|
|
26024
|
-
*
|
|
26025
|
-
* `readCurrentState` always-emits `Description: ''` on a WebACL with no
|
|
26026
|
-
* description (the comparator's top-level walk is state-keys-only, so
|
|
26027
|
-
* the placeholder is required to detect a console-side description add).
|
|
26028
|
-
* AWS WAFv2 `CreateWebACL` / `UpdateWebACL` reject `Description: ''`
|
|
26029
|
-
* with `Member must have length greater than or equal to 1` (min 1 / max
|
|
26030
|
-
* 256). On `cdkd drift --revert` the placeholder would round-trip
|
|
26031
|
-
* through `update()` and surface as a hard AWS rejection, so we sanitize
|
|
26032
|
-
* the wire-layer payload while keeping the read-side placeholder
|
|
26033
|
-
* intact. This is the Class 2 pattern from
|
|
26034
|
-
* `docs/provider-development.md § 3b`.
|
|
26035
|
-
*/
|
|
26036
|
-
function sanitizeDescription(value) {
|
|
26037
|
-
if (value === void 0 || value === null) return void 0;
|
|
26038
|
-
if (typeof value === "string" && value.length === 0) return void 0;
|
|
26039
|
-
return value;
|
|
26040
|
-
}
|
|
26041
|
-
/**
|
|
26042
|
-
* Parse WAFv2 WebACL ARN to extract Id, Name, and Scope.
|
|
26043
|
-
*
|
|
26044
|
-
* ARN format:
|
|
26045
|
-
* arn:aws:wafv2:{region}:{account}:regional/webacl/{name}/{id}
|
|
26046
|
-
* arn:aws:wafv2:{region}:{account}:global/webacl/{name}/{id}
|
|
26047
|
-
*/
|
|
26048
|
-
function parseWebACLArn(arn) {
|
|
26049
|
-
const segments = arn.split(":").slice(5).join(":").split("/");
|
|
26050
|
-
const scopeRaw = segments[0];
|
|
26051
|
-
const name = segments[2];
|
|
26052
|
-
return {
|
|
26053
|
-
id: segments[3],
|
|
26054
|
-
name,
|
|
26055
|
-
scope: scopeRaw === "global" ? "CLOUDFRONT" : "REGIONAL"
|
|
26056
|
-
};
|
|
26057
|
-
}
|
|
26058
|
-
/**
|
|
26059
|
-
* AWS WAFv2 WebACL Provider
|
|
26060
|
-
*
|
|
26061
|
-
* Implements resource provisioning for AWS::WAFv2::WebACL using the WAFv2 SDK.
|
|
26062
|
-
* WHY: WAFv2 CreateWebACL is synchronous - the CC API adds unnecessary polling
|
|
26063
|
-
* overhead for an operation that completes immediately.
|
|
26064
|
-
* This SDK provider eliminates that polling and returns instantly.
|
|
26065
|
-
*/
|
|
26066
|
-
var WAFv2WebACLProvider = class {
|
|
26067
|
-
wafv2Client;
|
|
26068
|
-
providerRegion = process.env["AWS_REGION"];
|
|
26069
|
-
logger = getLogger().child("WAFv2WebACLProvider");
|
|
26070
|
-
handledProperties = new Map([["AWS::WAFv2::WebACL", new Set([
|
|
26071
|
-
"Name",
|
|
26072
|
-
"Scope",
|
|
26073
|
-
"Tags",
|
|
26074
|
-
"DefaultAction",
|
|
26075
|
-
"Description",
|
|
26076
|
-
"Rules",
|
|
26077
|
-
"VisibilityConfig",
|
|
26078
|
-
"CustomResponseBodies",
|
|
26079
|
-
"CaptchaConfig",
|
|
26080
|
-
"ChallengeConfig",
|
|
26081
|
-
"TokenDomains",
|
|
26082
|
-
"AssociationConfig"
|
|
26083
|
-
])]]);
|
|
26084
|
-
getClient() {
|
|
26085
|
-
if (!this.wafv2Client) this.wafv2Client = new WAFV2Client(this.providerRegion ? { region: this.providerRegion } : {});
|
|
26086
|
-
return this.wafv2Client;
|
|
26087
|
-
}
|
|
26088
|
-
/**
|
|
26089
|
-
* Create a WAFv2 WebACL
|
|
26090
|
-
*/
|
|
26091
|
-
async create(logicalId, resourceType, properties) {
|
|
26092
|
-
this.logger.debug(`Creating WAFv2 WebACL ${logicalId}`);
|
|
26093
|
-
const name = properties["Name"] || generateResourceName(logicalId, { maxLength: 128 });
|
|
26094
|
-
const scope = properties["Scope"] || "REGIONAL";
|
|
26095
|
-
try {
|
|
26096
|
-
const tags = [];
|
|
26097
|
-
if (properties["Tags"]) {
|
|
26098
|
-
const tagList = properties["Tags"];
|
|
26099
|
-
for (const tag of tagList) tags.push({
|
|
26100
|
-
Key: tag.Key,
|
|
26101
|
-
Value: tag.Value
|
|
26102
|
-
});
|
|
26103
|
-
}
|
|
26104
|
-
const summary = (await this.getClient().send(new CreateWebACLCommand({
|
|
26105
|
-
Name: name,
|
|
26106
|
-
Scope: scope,
|
|
26107
|
-
DefaultAction: properties["DefaultAction"],
|
|
26108
|
-
Description: sanitizeDescription(properties["Description"]),
|
|
26109
|
-
Rules: properties["Rules"] || [],
|
|
26110
|
-
VisibilityConfig: properties["VisibilityConfig"],
|
|
26111
|
-
...tags.length > 0 && { Tags: tags },
|
|
26112
|
-
CustomResponseBodies: properties["CustomResponseBodies"],
|
|
26113
|
-
CaptchaConfig: properties["CaptchaConfig"],
|
|
26114
|
-
ChallengeConfig: properties["ChallengeConfig"],
|
|
26115
|
-
TokenDomains: properties["TokenDomains"],
|
|
26116
|
-
AssociationConfig: properties["AssociationConfig"]
|
|
26117
|
-
}))).Summary;
|
|
26118
|
-
if (!summary?.ARN || !summary?.Id) throw new Error("CreateWebACL did not return Summary with ARN and Id");
|
|
26119
|
-
this.logger.debug(`Successfully created WAFv2 WebACL ${logicalId}: ${summary.ARN}`);
|
|
26120
|
-
return {
|
|
26121
|
-
physicalId: summary.ARN,
|
|
26122
|
-
attributes: {
|
|
26123
|
-
Arn: summary.ARN,
|
|
26124
|
-
Id: summary.Id,
|
|
26125
|
-
LabelNamespace: summary["LabelNamespace"]
|
|
26126
|
-
}
|
|
26127
|
-
};
|
|
26128
|
-
} catch (error) {
|
|
26129
|
-
if (error instanceof ProvisioningError) throw error;
|
|
26130
|
-
const cause = error instanceof Error ? error : void 0;
|
|
26131
|
-
throw new ProvisioningError(`Failed to create WAFv2 WebACL ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, void 0, cause);
|
|
26132
|
-
}
|
|
26133
|
-
}
|
|
26134
|
-
/**
|
|
26135
|
-
* Update a WAFv2 WebACL
|
|
26136
|
-
*
|
|
26137
|
-
* Name and Scope are immutable - changes to those require replacement.
|
|
26138
|
-
* UpdateWebACL requires LockToken obtained from GetWebACL.
|
|
26139
|
-
*/
|
|
26140
|
-
async update(logicalId, physicalId, resourceType, properties, previousProperties) {
|
|
26141
|
-
this.logger.debug(`Updating WAFv2 WebACL ${logicalId}: ${physicalId}`);
|
|
26142
|
-
try {
|
|
26143
|
-
const { id, name, scope } = parseWebACLArn(physicalId);
|
|
26144
|
-
const getResponse = await this.getClient().send(new GetWebACLCommand({
|
|
26145
|
-
Name: name,
|
|
26146
|
-
Scope: scope,
|
|
26147
|
-
Id: id
|
|
26148
|
-
}));
|
|
26149
|
-
const lockToken = getResponse.LockToken;
|
|
26150
|
-
if (!lockToken) throw new Error("GetWebACL did not return LockToken");
|
|
26151
|
-
await this.getClient().send(new UpdateWebACLCommand({
|
|
26152
|
-
Name: name,
|
|
26153
|
-
Scope: scope,
|
|
26154
|
-
Id: id,
|
|
26155
|
-
LockToken: lockToken,
|
|
26156
|
-
DefaultAction: properties["DefaultAction"],
|
|
26157
|
-
Description: sanitizeDescription(properties["Description"]),
|
|
26158
|
-
Rules: properties["Rules"] || [],
|
|
26159
|
-
VisibilityConfig: properties["VisibilityConfig"],
|
|
26160
|
-
CustomResponseBodies: properties["CustomResponseBodies"],
|
|
26161
|
-
CaptchaConfig: properties["CaptchaConfig"],
|
|
26162
|
-
ChallengeConfig: properties["ChallengeConfig"],
|
|
26163
|
-
TokenDomains: properties["TokenDomains"],
|
|
26164
|
-
AssociationConfig: properties["AssociationConfig"]
|
|
26165
|
-
}));
|
|
26166
|
-
await this.applyTagDiff(physicalId, previousProperties["Tags"], properties["Tags"]);
|
|
26167
|
-
this.logger.debug(`Successfully updated WAFv2 WebACL ${logicalId}`);
|
|
26168
|
-
return {
|
|
26169
|
-
physicalId,
|
|
26170
|
-
wasReplaced: false,
|
|
26171
|
-
attributes: {
|
|
26172
|
-
Arn: physicalId,
|
|
26173
|
-
Id: id,
|
|
26174
|
-
LabelNamespace: getResponse.WebACL?.LabelNamespace
|
|
26175
|
-
}
|
|
26176
|
-
};
|
|
26177
|
-
} catch (error) {
|
|
26178
|
-
if (error instanceof ProvisioningError) throw error;
|
|
26179
|
-
const cause = error instanceof Error ? error : void 0;
|
|
26180
|
-
throw new ProvisioningError(`Failed to update WAFv2 WebACL ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, physicalId, cause);
|
|
26181
|
-
}
|
|
26182
|
-
}
|
|
26183
|
-
/**
|
|
26184
|
-
* Delete a WAFv2 WebACL
|
|
26185
|
-
*
|
|
26186
|
-
* DeleteWebACL requires LockToken obtained from GetWebACL.
|
|
26187
|
-
* WAFNonexistentItemException is treated as success (idempotent delete).
|
|
26188
|
-
*/
|
|
26189
|
-
async delete(logicalId, physicalId, resourceType, _properties, context) {
|
|
26190
|
-
this.logger.debug(`Deleting WAFv2 WebACL ${logicalId}: ${physicalId}`);
|
|
26191
|
-
try {
|
|
26192
|
-
const { id, name, scope } = parseWebACLArn(physicalId);
|
|
26193
|
-
const lockToken = (await this.getClient().send(new GetWebACLCommand({
|
|
26194
|
-
Name: name,
|
|
26195
|
-
Scope: scope,
|
|
26196
|
-
Id: id
|
|
26197
|
-
}))).LockToken;
|
|
26198
|
-
if (!lockToken) throw new Error("GetWebACL did not return LockToken");
|
|
26199
|
-
await this.getClient().send(new DeleteWebACLCommand({
|
|
26200
|
-
Name: name,
|
|
26201
|
-
Scope: scope,
|
|
26202
|
-
Id: id,
|
|
26203
|
-
LockToken: lockToken
|
|
26204
|
-
}));
|
|
26205
|
-
this.logger.debug(`Successfully deleted WAFv2 WebACL ${logicalId}`);
|
|
26206
|
-
} catch (error) {
|
|
26207
|
-
if (error instanceof WAFNonexistentItemException) {
|
|
26208
|
-
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
26209
|
-
this.logger.debug(`WAFv2 WebACL ${physicalId} does not exist, skipping deletion`);
|
|
26210
|
-
return;
|
|
26211
|
-
}
|
|
26212
|
-
const cause = error instanceof Error ? error : void 0;
|
|
26213
|
-
throw new ProvisioningError(`Failed to delete WAFv2 WebACL ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, physicalId, cause);
|
|
26214
|
-
}
|
|
26215
|
-
}
|
|
26216
|
-
/**
|
|
26217
|
-
* Apply a diff between old and new CFn-shape Tags arrays via WAFv2's
|
|
26218
|
-
* `TagResource` / `UntagResource` APIs (keyed by `ResourceARN`).
|
|
26219
|
-
*/
|
|
26220
|
-
async applyTagDiff(arn, oldTagsRaw, newTagsRaw) {
|
|
26221
|
-
const toMap = (tags) => {
|
|
26222
|
-
const m = /* @__PURE__ */ new Map();
|
|
26223
|
-
for (const t of tags ?? []) if (t.Key !== void 0 && t.Value !== void 0) m.set(t.Key, t.Value);
|
|
26224
|
-
return m;
|
|
26225
|
-
};
|
|
26226
|
-
const oldMap = toMap(oldTagsRaw);
|
|
26227
|
-
const newMap = toMap(newTagsRaw);
|
|
26228
|
-
const tagsToAdd = [];
|
|
26229
|
-
for (const [k, v] of newMap) if (oldMap.get(k) !== v) tagsToAdd.push({
|
|
26230
|
-
Key: k,
|
|
26231
|
-
Value: v
|
|
26232
|
-
});
|
|
26233
|
-
const tagsToRemove = [];
|
|
26234
|
-
for (const k of oldMap.keys()) if (!newMap.has(k)) tagsToRemove.push(k);
|
|
26235
|
-
if (tagsToRemove.length > 0) {
|
|
26236
|
-
await this.getClient().send(new UntagResourceCommand$12({
|
|
26237
|
-
ResourceARN: arn,
|
|
26238
|
-
TagKeys: tagsToRemove
|
|
26239
|
-
}));
|
|
26240
|
-
this.logger.debug(`Removed ${tagsToRemove.length} tag(s) from WAFv2 WebACL ${arn}`);
|
|
26241
|
-
}
|
|
26242
|
-
if (tagsToAdd.length > 0) {
|
|
26243
|
-
await this.getClient().send(new TagResourceCommand$13({
|
|
26244
|
-
ResourceARN: arn,
|
|
26245
|
-
Tags: tagsToAdd
|
|
26246
|
-
}));
|
|
26247
|
-
this.logger.debug(`Added/updated ${tagsToAdd.length} tag(s) on WAFv2 WebACL ${arn}`);
|
|
26248
|
-
}
|
|
26249
|
-
}
|
|
26250
|
-
/**
|
|
26251
|
-
* Read the AWS-current WAFv2 WebACL configuration in CFn-property shape.
|
|
26252
|
-
*
|
|
26253
|
-
* The cdkd physicalId is the WebACL ARN; we parse it back to
|
|
26254
|
-
* `(id, name, scope)` and call `GetWebACL`. The response holds Name,
|
|
26255
|
-
* Description, DefaultAction, Rules, VisibilityConfig,
|
|
26256
|
-
* CustomResponseBodies, CaptchaConfig, ChallengeConfig, TokenDomains,
|
|
26257
|
-
* and AssociationConfig — every key cdkd state declares as
|
|
26258
|
-
* `handledProperties`. `Scope` is recovered from the ARN parse.
|
|
26259
|
-
*
|
|
26260
|
-
* Tags are surfaced via a follow-up `ListTagsForResource(ResourceARN)`
|
|
26261
|
-
* call. CDK's `aws:*` auto-tags are filtered out and the result key is
|
|
26262
|
-
* omitted when AWS reports no user tags. Returns `undefined`
|
|
26263
|
-
* when the ARN can't be parsed or the WebACL is gone
|
|
26264
|
-
* (`WAFNonexistentItemException`).
|
|
26265
|
-
*/
|
|
26266
|
-
async readCurrentState(physicalId, _logicalId, _resourceType) {
|
|
26267
|
-
let id;
|
|
26268
|
-
let name;
|
|
26269
|
-
let scope;
|
|
26270
|
-
try {
|
|
26271
|
-
({id, name, scope} = parseWebACLArn(physicalId));
|
|
26272
|
-
} catch {
|
|
26273
|
-
return;
|
|
26274
|
-
}
|
|
26275
|
-
let webACL;
|
|
26276
|
-
try {
|
|
26277
|
-
webACL = (await this.getClient().send(new GetWebACLCommand({
|
|
26278
|
-
Id: id,
|
|
26279
|
-
Name: name,
|
|
26280
|
-
Scope: scope
|
|
26281
|
-
}))).WebACL;
|
|
26282
|
-
} catch (err) {
|
|
26283
|
-
if (err instanceof WAFNonexistentItemException) return void 0;
|
|
26284
|
-
throw err;
|
|
26285
|
-
}
|
|
26286
|
-
if (!webACL) return void 0;
|
|
26287
|
-
const result = {};
|
|
26288
|
-
if (webACL.Name !== void 0) result["Name"] = webACL.Name;
|
|
26289
|
-
result["Scope"] = scope;
|
|
26290
|
-
result["Description"] = webACL.Description ?? "";
|
|
26291
|
-
if (webACL.DefaultAction) result["DefaultAction"] = webACL.DefaultAction;
|
|
26292
|
-
result["Rules"] = (webACL.Rules ?? []).map((r) => r);
|
|
26293
|
-
if (webACL.VisibilityConfig) result["VisibilityConfig"] = webACL.VisibilityConfig;
|
|
26294
|
-
result["CustomResponseBodies"] = webACL.CustomResponseBodies ?? {};
|
|
26295
|
-
if (webACL.CaptchaConfig) result["CaptchaConfig"] = webACL.CaptchaConfig;
|
|
26296
|
-
if (webACL.ChallengeConfig) result["ChallengeConfig"] = webACL.ChallengeConfig;
|
|
26297
|
-
result["TokenDomains"] = webACL.TokenDomains ? [...webACL.TokenDomains] : [];
|
|
26298
|
-
if (webACL.AssociationConfig) result["AssociationConfig"] = webACL.AssociationConfig;
|
|
26299
|
-
try {
|
|
26300
|
-
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForResourceCommand$14({ ResourceARN: physicalId }))).TagInfoForResource?.TagList);
|
|
26301
|
-
} catch (err) {
|
|
26302
|
-
this.logger.debug(`WAFv2 ListTagsForResource(${physicalId}) failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
26303
|
-
}
|
|
26304
|
-
return result;
|
|
26305
|
-
}
|
|
26306
|
-
/**
|
|
26307
|
-
* Adopt an existing WAFv2 WebACL into cdkd state.
|
|
26308
|
-
*
|
|
26309
|
-
* Lookup order:
|
|
26310
|
-
* 1. `--resource <id>=<arn>` override → verify with `GetWebACL` (parses
|
|
26311
|
-
* Name/Id/Scope back out of the ARN).
|
|
26312
|
-
* 2. Walk `ListWebACLs(Scope)` → match `aws:cdk:path` via
|
|
26313
|
-
* `ListTagsForResource(ResourceARN)` (returns
|
|
26314
|
-
* `TagInfoForResource.TagList`, standard `Key`/`Value` shape).
|
|
26315
|
-
*
|
|
26316
|
-
* `Scope` is required by `ListWebACLs` — read from
|
|
26317
|
-
* `Properties.Scope` (`REGIONAL` is the default).
|
|
26318
|
-
*/
|
|
26319
|
-
async import(input) {
|
|
26320
|
-
if (input.knownPhysicalId) try {
|
|
26321
|
-
const { id, name, scope } = parseWebACLArn(input.knownPhysicalId);
|
|
26322
|
-
await this.getClient().send(new GetWebACLCommand({
|
|
26323
|
-
Id: id,
|
|
26324
|
-
Name: name,
|
|
26325
|
-
Scope: scope
|
|
26326
|
-
}));
|
|
26327
|
-
return {
|
|
26328
|
-
physicalId: input.knownPhysicalId,
|
|
26329
|
-
attributes: {}
|
|
26330
|
-
};
|
|
26331
|
-
} catch (err) {
|
|
26332
|
-
if (err instanceof WAFNonexistentItemException) return null;
|
|
26333
|
-
throw err;
|
|
26334
|
-
}
|
|
26335
|
-
if (!input.cdkPath) return null;
|
|
26336
|
-
const scope = input.properties["Scope"] || "REGIONAL";
|
|
26337
|
-
let nextMarker;
|
|
26338
|
-
do {
|
|
26339
|
-
const list = await this.getClient().send(new ListWebACLsCommand({
|
|
26340
|
-
Scope: scope,
|
|
26341
|
-
...nextMarker && { NextMarker: nextMarker }
|
|
26342
|
-
}));
|
|
26343
|
-
for (const item of list.WebACLs ?? []) {
|
|
26344
|
-
if (!item.ARN) continue;
|
|
26345
|
-
const tagList = (await this.getClient().send(new ListTagsForResourceCommand$14({ ResourceARN: item.ARN }))).TagInfoForResource?.TagList;
|
|
26346
|
-
if (matchesCdkPath(tagList, input.cdkPath)) return {
|
|
26347
|
-
physicalId: item.ARN,
|
|
26348
|
-
attributes: {}
|
|
26349
|
-
};
|
|
26350
|
-
}
|
|
26351
|
-
nextMarker = list.NextMarker;
|
|
26352
|
-
} while (nextMarker);
|
|
26353
|
-
return null;
|
|
26354
|
-
}
|
|
26355
|
-
};
|
|
26356
|
-
|
|
26357
26018
|
//#endregion
|
|
26358
26019
|
//#region src/provisioning/providers/cognito-provider.ts
|
|
26359
26020
|
/**
|
|
@@ -26908,7 +26569,7 @@ var CognitoUserPoolProvider = class {
|
|
|
26908
26569
|
if (input.cdkPath) try {
|
|
26909
26570
|
const arn = (await this.getClient().send(new DescribeUserPoolCommand({ UserPoolId: pool.Id }))).UserPool?.Arn;
|
|
26910
26571
|
if (!arn) continue;
|
|
26911
|
-
if ((await this.getClient().send(new ListTagsForResourceCommand$
|
|
26572
|
+
if ((await this.getClient().send(new ListTagsForResourceCommand$14({ ResourceArn: arn }))).Tags?.["aws:cdk:path"] === input.cdkPath) return {
|
|
26912
26573
|
physicalId: pool.Id,
|
|
26913
26574
|
attributes: {}
|
|
26914
26575
|
};
|
|
@@ -27896,7 +27557,7 @@ var ServiceDiscoveryProvider = class {
|
|
|
27896
27557
|
/** Best-effort tag fetch via `ListTagsForResource(ResourceARN)`. */
|
|
27897
27558
|
async attachTags(result, arn) {
|
|
27898
27559
|
try {
|
|
27899
|
-
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForResourceCommand$
|
|
27560
|
+
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForResourceCommand$15({ ResourceARN: arn }))).Tags);
|
|
27900
27561
|
} catch (err) {
|
|
27901
27562
|
this.logger.debug(`ServiceDiscovery ListTagsForResource(${arn}) failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
27902
27563
|
}
|
|
@@ -27930,7 +27591,7 @@ var ServiceDiscoveryProvider = class {
|
|
|
27930
27591
|
attributes: {}
|
|
27931
27592
|
};
|
|
27932
27593
|
if (input.cdkPath) try {
|
|
27933
|
-
if (matchesCdkPath((await this.getClient().send(new ListTagsForResourceCommand$
|
|
27594
|
+
if (matchesCdkPath((await this.getClient().send(new ListTagsForResourceCommand$15({ ResourceARN: ns.Arn }))).Tags, input.cdkPath)) return {
|
|
27934
27595
|
physicalId: ns.Id,
|
|
27935
27596
|
attributes: {}
|
|
27936
27597
|
};
|
|
@@ -27961,7 +27622,7 @@ var ServiceDiscoveryProvider = class {
|
|
|
27961
27622
|
for (const svc of list.Services ?? []) {
|
|
27962
27623
|
if (!svc.Id || !svc.Arn) continue;
|
|
27963
27624
|
try {
|
|
27964
|
-
if (matchesCdkPath((await this.getClient().send(new ListTagsForResourceCommand$
|
|
27625
|
+
if (matchesCdkPath((await this.getClient().send(new ListTagsForResourceCommand$15({ ResourceARN: svc.Arn }))).Tags, input.cdkPath)) return {
|
|
27965
27626
|
physicalId: svc.Id,
|
|
27966
27627
|
attributes: {}
|
|
27967
27628
|
};
|
|
@@ -28351,7 +28012,7 @@ var AppSyncProvider = class {
|
|
|
28351
28012
|
const tagsToAdd = {};
|
|
28352
28013
|
for (const [k, v] of Object.entries(newMap)) if (oldMap[k] !== v) tagsToAdd[k] = v;
|
|
28353
28014
|
if (tagKeysToRemove.length > 0) try {
|
|
28354
|
-
await this.getClient().send(new UntagResourceCommand$
|
|
28015
|
+
await this.getClient().send(new UntagResourceCommand$12({
|
|
28355
28016
|
resourceArn: arn,
|
|
28356
28017
|
tagKeys: tagKeysToRemove
|
|
28357
28018
|
}));
|
|
@@ -28359,7 +28020,7 @@ var AppSyncProvider = class {
|
|
|
28359
28020
|
throw this.wrapUpdateError(error, resourceType, logicalId, apiId, "GraphqlApi (untag)");
|
|
28360
28021
|
}
|
|
28361
28022
|
if (Object.keys(tagsToAdd).length > 0) try {
|
|
28362
|
-
await this.getClient().send(new TagResourceCommand$
|
|
28023
|
+
await this.getClient().send(new TagResourceCommand$13({
|
|
28363
28024
|
resourceArn: arn,
|
|
28364
28025
|
tags: tagsToAdd
|
|
28365
28026
|
}));
|
|
@@ -31711,7 +31372,7 @@ var KinesisStreamConsumerProvider = class {
|
|
|
31711
31372
|
if (desc.ConsumerName !== void 0) result["ConsumerName"] = desc.ConsumerName;
|
|
31712
31373
|
if (desc.StreamARN !== void 0) result["StreamARN"] = desc.StreamARN;
|
|
31713
31374
|
try {
|
|
31714
|
-
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForResourceCommand$
|
|
31375
|
+
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForResourceCommand$16({ ResourceARN: physicalId }))).Tags);
|
|
31715
31376
|
} catch (err) {
|
|
31716
31377
|
if (err instanceof ResourceNotFoundException$8) return void 0;
|
|
31717
31378
|
this.logger.debug(`ListTagsForResource(${physicalId}) failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
@@ -31735,14 +31396,14 @@ var KinesisStreamConsumerProvider = class {
|
|
|
31735
31396
|
const tagsToRemove = [];
|
|
31736
31397
|
for (const k of Object.keys(oldMap)) if (!(k in newMap)) tagsToRemove.push(k);
|
|
31737
31398
|
if (tagsToRemove.length > 0) {
|
|
31738
|
-
await this.getClient().send(new UntagResourceCommand$
|
|
31399
|
+
await this.getClient().send(new UntagResourceCommand$13({
|
|
31739
31400
|
ResourceARN: consumerArn,
|
|
31740
31401
|
TagKeys: tagsToRemove
|
|
31741
31402
|
}));
|
|
31742
31403
|
this.logger.debug(`Removed ${tagsToRemove.length} tag(s) from Kinesis stream consumer ${consumerArn}`);
|
|
31743
31404
|
}
|
|
31744
31405
|
if (Object.keys(tagsToAdd).length > 0) {
|
|
31745
|
-
await this.getClient().send(new TagResourceCommand$
|
|
31406
|
+
await this.getClient().send(new TagResourceCommand$14({
|
|
31746
31407
|
ResourceARN: consumerArn,
|
|
31747
31408
|
Tags: tagsToAdd
|
|
31748
31409
|
}));
|
|
@@ -34808,11 +34469,11 @@ var S3VectorsProvider = class {
|
|
|
34808
34469
|
}
|
|
34809
34470
|
if (!resourceArn) throw new ProvisioningError(`Could not resolve ARN for S3 VectorBucket ${logicalId} (${physicalId}); cannot apply tag update.`, resourceType, logicalId, physicalId);
|
|
34810
34471
|
try {
|
|
34811
|
-
if (Object.keys(toSet).length > 0) await this.getClient().send(new TagResourceCommand$
|
|
34472
|
+
if (Object.keys(toSet).length > 0) await this.getClient().send(new TagResourceCommand$15({
|
|
34812
34473
|
resourceArn,
|
|
34813
34474
|
tags: toSet
|
|
34814
34475
|
}));
|
|
34815
|
-
if (toRemove.length > 0) await this.getClient().send(new UntagResourceCommand$
|
|
34476
|
+
if (toRemove.length > 0) await this.getClient().send(new UntagResourceCommand$14({
|
|
34816
34477
|
resourceArn,
|
|
34817
34478
|
tagKeys: toRemove
|
|
34818
34479
|
}));
|
|
@@ -34940,7 +34601,7 @@ var S3VectorsProvider = class {
|
|
|
34940
34601
|
if (Object.keys(enc).length > 0) result["EncryptionConfiguration"] = enc;
|
|
34941
34602
|
}
|
|
34942
34603
|
if (bucket?.vectorBucketArn) try {
|
|
34943
|
-
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForResourceCommand$
|
|
34604
|
+
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForResourceCommand$17({ resourceArn: bucket.vectorBucketArn }))).tags);
|
|
34944
34605
|
} catch (err) {
|
|
34945
34606
|
this.logger.debug(`S3Vectors ListTagsForResource(${bucket.vectorBucketArn}) failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
34946
34607
|
result["Tags"] = [];
|
|
@@ -34976,7 +34637,7 @@ var S3VectorsProvider = class {
|
|
|
34976
34637
|
for (const bucket of list.vectorBuckets ?? []) {
|
|
34977
34638
|
if (!bucket.vectorBucketName || !bucket.vectorBucketArn) continue;
|
|
34978
34639
|
try {
|
|
34979
|
-
if ((await this.getClient().send(new ListTagsForResourceCommand$
|
|
34640
|
+
if ((await this.getClient().send(new ListTagsForResourceCommand$17({ resourceArn: bucket.vectorBucketArn }))).tags?.["aws:cdk:path"] === input.cdkPath) return {
|
|
34980
34641
|
physicalId: bucket.vectorBucketName,
|
|
34981
34642
|
attributes: {}
|
|
34982
34643
|
};
|
|
@@ -35586,7 +35247,7 @@ var S3TablesProvider = class {
|
|
|
35586
35247
|
attributes: {}
|
|
35587
35248
|
};
|
|
35588
35249
|
if (input.cdkPath) try {
|
|
35589
|
-
if ((await this.getClient().send(new ListTagsForResourceCommand$
|
|
35250
|
+
if ((await this.getClient().send(new ListTagsForResourceCommand$18({ resourceArn: bucket.arn }))).tags?.["aws:cdk:path"] === input.cdkPath) return {
|
|
35590
35251
|
physicalId: bucket.arn,
|
|
35591
35252
|
attributes: {}
|
|
35592
35253
|
};
|
|
@@ -35653,7 +35314,7 @@ var S3TablesProvider = class {
|
|
|
35653
35314
|
for (const table of tables.tables ?? []) {
|
|
35654
35315
|
if (!table.name || !table.tableARN) continue;
|
|
35655
35316
|
try {
|
|
35656
|
-
if ((await this.getClient().send(new ListTagsForResourceCommand$
|
|
35317
|
+
if ((await this.getClient().send(new ListTagsForResourceCommand$18({ resourceArn: table.tableARN }))).tags?.["aws:cdk:path"] === input.cdkPath) return {
|
|
35657
35318
|
physicalId: `${bucket.arn}|${namespaceName}|${table.name}`,
|
|
35658
35319
|
attributes: {}
|
|
35659
35320
|
};
|
|
@@ -35749,7 +35410,7 @@ var S3TablesProvider = class {
|
|
|
35749
35410
|
*/
|
|
35750
35411
|
async readTagsBestEffort(resourceArn) {
|
|
35751
35412
|
try {
|
|
35752
|
-
const tags = (await this.getClient().send(new ListTagsForResourceCommand$
|
|
35413
|
+
const tags = (await this.getClient().send(new ListTagsForResourceCommand$18({ resourceArn }))).tags ?? {};
|
|
35753
35414
|
const out = [];
|
|
35754
35415
|
for (const [Key, Value] of Object.entries(tags)) out.push({
|
|
35755
35416
|
Key,
|
|
@@ -35803,7 +35464,7 @@ var S3TablesProvider = class {
|
|
|
35803
35464
|
const resourceArn = await this.lookupTableArn(tableBucketARN, namespace, name);
|
|
35804
35465
|
if (!resourceArn) throw new ProvisioningError(`applyTableTagsDiff: GetTable returned no tableARN for ${physicalId} — table is gone or state is out-of-sync. Refusing to silently drop the tag update (run 'cdkd state orphan ${logicalId}' to clean up if the table was deleted out-of-band).`, resourceType, logicalId, physicalId);
|
|
35805
35466
|
if (removedKeys.length > 0) try {
|
|
35806
|
-
await this.getClient().send(new UntagResourceCommand$
|
|
35467
|
+
await this.getClient().send(new UntagResourceCommand$15({
|
|
35807
35468
|
resourceArn,
|
|
35808
35469
|
tagKeys: removedKeys
|
|
35809
35470
|
}));
|
|
@@ -35812,7 +35473,7 @@ var S3TablesProvider = class {
|
|
|
35812
35473
|
throw new ProvisioningError(`applyTableTagsDiff: UntagResource failed for ${resourceArn} (keys: ${removedKeys.join(", ")}): ${err instanceof Error ? err.message : String(err)}. State has NOT been updated so the next deploy will retry the tag-diff.`, resourceType, logicalId, physicalId, cause);
|
|
35813
35474
|
}
|
|
35814
35475
|
if (Object.keys(upserts).length > 0) try {
|
|
35815
|
-
await this.getClient().send(new TagResourceCommand$
|
|
35476
|
+
await this.getClient().send(new TagResourceCommand$16({
|
|
35816
35477
|
resourceArn,
|
|
35817
35478
|
tags: upserts
|
|
35818
35479
|
}));
|
|
@@ -35844,7 +35505,7 @@ var S3TablesProvider = class {
|
|
|
35844
35505
|
if (removedKeys.length === 0 && Object.keys(upserts).length === 0) return;
|
|
35845
35506
|
const resourceArn = physicalId;
|
|
35846
35507
|
if (removedKeys.length > 0) try {
|
|
35847
|
-
await this.getClient().send(new UntagResourceCommand$
|
|
35508
|
+
await this.getClient().send(new UntagResourceCommand$15({
|
|
35848
35509
|
resourceArn,
|
|
35849
35510
|
tagKeys: removedKeys
|
|
35850
35511
|
}));
|
|
@@ -35853,7 +35514,7 @@ var S3TablesProvider = class {
|
|
|
35853
35514
|
throw new ProvisioningError(`applyTableBucketTagsDiff: UntagResource failed for ${resourceArn} (keys: ${removedKeys.join(", ")}): ${err instanceof Error ? err.message : String(err)}. State has NOT been updated so the next deploy will retry the tag-diff.`, resourceType, logicalId, physicalId, cause);
|
|
35854
35515
|
}
|
|
35855
35516
|
if (Object.keys(upserts).length > 0) try {
|
|
35856
|
-
await this.getClient().send(new TagResourceCommand$
|
|
35517
|
+
await this.getClient().send(new TagResourceCommand$16({
|
|
35857
35518
|
resourceArn,
|
|
35858
35519
|
tags: upserts
|
|
35859
35520
|
}));
|
|
@@ -55796,7 +55457,7 @@ function reorderArgs(argv) {
|
|
|
55796
55457
|
async function main() {
|
|
55797
55458
|
installPipeCloseHandler();
|
|
55798
55459
|
const program = new Command();
|
|
55799
|
-
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.231.
|
|
55460
|
+
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.231.1");
|
|
55800
55461
|
program.addCommand(createBootstrapCommand());
|
|
55801
55462
|
program.addCommand(createSynthCommand());
|
|
55802
55463
|
program.addCommand(createListCommand());
|