@go-to-k/cdkd 0.257.4 → 0.258.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{asg-provider-BhmMKcnJ.js → asg-provider-rcNqhfPS.js} +2 -2
- package/dist/{asg-provider-BhmMKcnJ.js.map → asg-provider-rcNqhfPS.js.map} +1 -1
- package/dist/cli.js +464 -74
- package/dist/cli.js.map +1 -1
- package/dist/{deploy-engine-DMpr3qtv.js → deploy-engine-Dg51mHCV.js} +50 -5
- package/dist/deploy-engine-Dg51mHCV.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +2 -1
- package/dist/deploy-engine-DMpr3qtv.js.map +0 -1
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { $ as getBootstrapMarkerKey, A as refStateLookupFromResource, At as resolveBucketRegion, B as S3StateBackend, Bt as LocalMigrateError, C as findActionableSilentDrops, Ct as CFN_TEMPLATE_URL_LIMIT, D as isTerminationProtectionPropagationError, Dt as expectedOwnerParam, E as disableInstanceApiTermination, Et as uploadCfnTemplate, F as applyRoleArnIfSet, G as WorkGraph, Gt as PartialFailureError, H as shouldRetainResource, I as DiffCalculator, It as CdkdError, J as loadPublishableAssetManifest, Jt as ResourceUpdateNotSupportedError, K as buildAssetRedirectMap, Kt as ProvisioningError, L as DagBuilder, M as normalizeAwsTagsToCfn, Mt as getAwsClients, N as resolveExplicitPhysicalId, Nt as resetAwsClients, O as IntrinsicFunctionResolver, Ot as AssemblyReader, P as assertRegionMatch, Pt as setAwsClients, Q as ensureAssetStorage, R as TemplateParser, S as ProviderRegistry, St as CFN_TEMPLATE_BODY_LIMIT, T as slowCcOperationTimeoutMs, Tt as findLargeInlineResources, U as AssetPublisher, Ut as MissingCdkCliError, V as rebuildClientForBucketRegion, Vt as LocalStartServiceError, W as stringifyValue, Wt as NestedStackChildDirectDestroyError, X as AssetModeResolver, Xt as StackTerminationProtectionError, Y as rewriteTemplateAssetReferences, Yt as StackHasActiveImportsError, Z as BOOTSTRAP_MARKER_PREFIX, _ as green, _t as resolveSkipPrefix, a as withRetry, at as getDockerCmd, b as IAMRoleProvider, bt as resolveUseCdkBootstrapAssets, c as computeImplicitDeleteEdges, ct as AssetManifestLoader, d as isStatefulRecreateTargetSync, dt as synthesisStatusMessage, et as parseBootstrapMarker, f as renderStatefulReason, ft as getDefaultStateBucketName, g as gray, gt as resolveCaptureObservedState, h as cyan, ht as resolveAutoAssetStorage, i as withResourceDeadline, it as formatDockerLoginError, j as WAFv2WebACLProvider, jt as AwsClients, k as cfnRefValueFromPhysicalId, l as extractDeploymentEventError, lt as getDockerImageBySourceHash, m as bold, mt as resolveApp, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nn as withErrorHandling, nt as validateContainerRepoName, o as isRetryableTransientError, ot as runDockerForeground, p as formatResourceLine, pt as getLegacyStateBucketName, q as createAssetRedirectResolver, qt as ResourceTimeoutError, r as DeployEngine, rt as buildDockerImage, s as IMPLICIT_DELETE_DEPENDENCIES, st as runDockerStreaming, t as DEFAULT_RESOURCE_TIMEOUT_MS, tn as normalizeAwsError, tt as validateAssetBucketName, u as MULTI_REGION_RECREATE_BLOCKED_TYPES, ut as Synthesizer, v as red, vt as resolveStateBucketWithDefault, w as CloudControlProvider, wt as MIGRATE_TMP_PREFIX, x as collectInlinePolicyNamesManagedBySiblings, xt as warnDeprecatedNoPrefixCliFlag, y as yellow, yt as resolveStateBucketWithDefaultAndSource, z as LockManager, zt as LocalInvokeBuildError$1 } from "./deploy-engine-
|
|
2
|
+
import { $ as getBootstrapMarkerKey, A as refStateLookupFromResource, At as resolveBucketRegion, B as S3StateBackend, Bt as LocalMigrateError, C as findActionableSilentDrops, Ct as CFN_TEMPLATE_URL_LIMIT, D as isTerminationProtectionPropagationError, Dt as expectedOwnerParam, E as disableInstanceApiTermination, Et as uploadCfnTemplate, F as applyRoleArnIfSet, G as WorkGraph, Gt as PartialFailureError, H as shouldRetainResource, I as DiffCalculator, It as CdkdError, J as loadPublishableAssetManifest, Jt as ResourceUpdateNotSupportedError, K as buildAssetRedirectMap, Kt as ProvisioningError, L as DagBuilder, M as normalizeAwsTagsToCfn, Mt as getAwsClients, N as resolveExplicitPhysicalId, Nt as resetAwsClients, O as IntrinsicFunctionResolver, Ot as AssemblyReader, P as assertRegionMatch, Pt as setAwsClients, Q as ensureAssetStorage, R as TemplateParser, S as ProviderRegistry, St as CFN_TEMPLATE_BODY_LIMIT, T as slowCcOperationTimeoutMs, Tt as findLargeInlineResources, U as AssetPublisher, Ut as MissingCdkCliError, V as rebuildClientForBucketRegion, Vt as LocalStartServiceError, W as stringifyValue, Wt as NestedStackChildDirectDestroyError, X as AssetModeResolver, Xt as StackTerminationProtectionError, Y as rewriteTemplateAssetReferences, Yt as StackHasActiveImportsError, Z as BOOTSTRAP_MARKER_PREFIX, _ as green, _t as resolveSkipPrefix, a as withRetry, at as getDockerCmd, b as IAMRoleProvider, bt as resolveUseCdkBootstrapAssets, c as computeImplicitDeleteEdges, ct as AssetManifestLoader, d as isStatefulRecreateTargetSync, dt as synthesisStatusMessage, et as parseBootstrapMarker, f as renderStatefulReason, ft as getDefaultStateBucketName, g as gray, gt as resolveCaptureObservedState, h as cyan, ht as resolveAutoAssetStorage, i as withResourceDeadline, it as formatDockerLoginError, j as WAFv2WebACLProvider, jt as AwsClients, k as cfnRefValueFromPhysicalId, l as extractDeploymentEventError, lt as getDockerImageBySourceHash, m as bold, mt as resolveApp, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nn as withErrorHandling, nt as validateContainerRepoName, o as isRetryableTransientError, ot as runDockerForeground, p as formatResourceLine, pt as getLegacyStateBucketName, q as createAssetRedirectResolver, qt as ResourceTimeoutError, r as DeployEngine, rt as buildDockerImage, s as IMPLICIT_DELETE_DEPENDENCIES, st as runDockerStreaming, t as DEFAULT_RESOURCE_TIMEOUT_MS, tn as normalizeAwsError, tt as validateAssetBucketName, u as MULTI_REGION_RECREATE_BLOCKED_TYPES, ut as Synthesizer, v as red, vt as resolveStateBucketWithDefault, w as CloudControlProvider, wt as MIGRATE_TMP_PREFIX, x as collectInlinePolicyNamesManagedBySiblings, xt as warnDeprecatedNoPrefixCliFlag, y as yellow, yt as resolveStateBucketWithDefaultAndSource, z as LockManager, zt as LocalInvokeBuildError$1 } from "./deploy-engine-Dg51mHCV.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-rcNqhfPS.js";
|
|
5
5
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
6
6
|
import { createHash, randomBytes, randomUUID } from "node:crypto";
|
|
7
7
|
import { CopyObjectCommand, CreateBucketCommand, DeleteBucketAnalyticsConfigurationCommand, DeleteBucketCommand, DeleteBucketCorsCommand, DeleteBucketIntelligentTieringConfigurationCommand, DeleteBucketInventoryConfigurationCommand, DeleteBucketLifecycleCommand, DeleteBucketMetricsConfigurationCommand, DeleteBucketPolicyCommand, DeleteBucketReplicationCommand, DeleteBucketTaggingCommand, DeleteBucketWebsiteCommand, DeleteObjectsCommand, GetBucketAccelerateConfigurationCommand, GetBucketCorsCommand, GetBucketEncryptionCommand, GetBucketLifecycleConfigurationCommand, GetBucketLocationCommand, GetBucketLoggingCommand, GetBucketNotificationConfigurationCommand, GetBucketPolicyCommand, GetBucketReplicationCommand, GetBucketTaggingCommand, GetBucketVersioningCommand, GetBucketWebsiteCommand, GetObjectCommand, GetObjectLockConfigurationCommand, GetPublicAccessBlockCommand, HeadBucketCommand, ListBucketAnalyticsConfigurationsCommand, ListBucketIntelligentTieringConfigurationsCommand, ListBucketInventoryConfigurationsCommand, ListBucketMetricsConfigurationsCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchBucket, PutBucketAccelerateConfigurationCommand, PutBucketAnalyticsConfigurationCommand, PutBucketCorsCommand, PutBucketEncryptionCommand, PutBucketIntelligentTieringConfigurationCommand, PutBucketInventoryConfigurationCommand, PutBucketLifecycleConfigurationCommand, PutBucketLoggingCommand, PutBucketMetricsConfigurationCommand, PutBucketNotificationConfigurationCommand, PutBucketOwnershipControlsCommand, PutBucketPolicyCommand, PutBucketReplicationCommand, PutBucketTaggingCommand, PutBucketVersioningCommand, PutBucketWebsiteCommand, PutObjectCommand, PutObjectLockConfigurationCommand, PutPublicAccessBlockCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
|
|
@@ -22,6 +22,7 @@ import { CloudWatchClient, DeleteAlarmsCommand, DescribeAlarmsCommand, ListTagsF
|
|
|
22
22
|
import { AssociateKmsKeyCommand, CloudWatchLogsClient, CreateLogGroupCommand, DeleteDataProtectionPolicyCommand, DeleteIndexPolicyCommand, DeleteLogGroupCommand, DeleteRetentionPolicyCommand, DescribeIndexPoliciesCommand, DescribeLogGroupsCommand, DisassociateKmsKeyCommand, GetDataProtectionPolicyCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$5, PutBearerTokenAuthenticationCommand, PutDataProtectionPolicyCommand, PutIndexPolicyCommand, PutLogGroupDeletionProtectionCommand, PutRetentionPolicyCommand, ResourceAlreadyExistsException, ResourceNotFoundException as ResourceNotFoundException$4, TagResourceCommand as TagResourceCommand$8, UntagResourceCommand as UntagResourceCommand$8 } from "@aws-sdk/client-cloudwatch-logs";
|
|
23
23
|
import { BedrockAgentCoreControlClient, CreateAgentRuntimeCommand, CreateEvaluatorCommand, DeleteAgentRuntimeCommand, DeleteEvaluatorCommand, GetAgentRuntimeCommand, GetBrowserCommand, GetCodeInterpreterCommand, GetEvaluatorCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$6, ResourceNotFoundException as ResourceNotFoundException$5, TagResourceCommand as TagResourceCommand$9, UntagResourceCommand as UntagResourceCommand$9, UpdateAgentRuntimeCommand, UpdateEvaluatorCommand } from "@aws-sdk/client-bedrock-agentcore-control";
|
|
24
24
|
import { ACMClient, AddTagsToCertificateCommand, DeleteCertificateCommand, DescribeCertificateCommand, ListTagsForCertificateCommand, RemoveTagsFromCertificateCommand, RequestCertificateCommand, ResourceNotFoundException as ResourceNotFoundException$6, UpdateCertificateOptionsCommand } from "@aws-sdk/client-acm";
|
|
25
|
+
import { CreateMicrovmImageCommand, DeleteMicrovmImageCommand, GetMicrovmImageCommand, LambdaMicrovmsClient, ResourceNotFoundException as ResourceNotFoundException$7, TagResourceCommand as TagResourceCommand$10, UntagResourceCommand as UntagResourceCommand$10, UpdateMicrovmImageCommand } from "@aws-sdk/client-lambda-microvms";
|
|
25
26
|
import * as fs from "node:fs";
|
|
26
27
|
import { cpSync, existsSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, rmSync, statSync, writeFileSync } from "node:fs";
|
|
27
28
|
import * as path from "node:path";
|
|
@@ -30,9 +31,9 @@ import { execFile, spawn } from "node:child_process";
|
|
|
30
31
|
import { tmpdir } from "node:os";
|
|
31
32
|
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
33
|
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
|
-
import { CreateAliasCommand, CreateKeyCommand, DeleteAliasCommand, DescribeKeyCommand, DisableKeyCommand, DisableKeyRotationCommand, EnableKeyCommand, EnableKeyRotationCommand, GetKeyPolicyCommand, GetKeyRotationStatusCommand, KMSClient, ListAliasesCommand, ListResourceTagsCommand, NotFoundException as NotFoundException$2, PutKeyPolicyCommand, ScheduleKeyDeletionCommand, TagResourceCommand as TagResourceCommand$
|
|
34
|
+
import { CreateAliasCommand, CreateKeyCommand, DeleteAliasCommand, DescribeKeyCommand, DisableKeyCommand, DisableKeyRotationCommand, EnableKeyCommand, EnableKeyRotationCommand, GetKeyPolicyCommand, GetKeyRotationStatusCommand, KMSClient, ListAliasesCommand, ListResourceTagsCommand, NotFoundException as NotFoundException$2, PutKeyPolicyCommand, ScheduleKeyDeletionCommand, TagResourceCommand as TagResourceCommand$11, UntagResourceCommand as UntagResourceCommand$11, UpdateAliasCommand, UpdateKeyDescriptionCommand } from "@aws-sdk/client-kms";
|
|
34
35
|
import { join as join$1 } from "path";
|
|
35
|
-
import { BatchDeleteImageCommand, CreateRepositoryCommand, DeleteLifecyclePolicyCommand, DeleteRepositoryCommand, DeleteRepositoryPolicyCommand, DescribeImagesCommand as DescribeImagesCommand$1, DescribeRepositoriesCommand, ECRClient, GetAuthorizationTokenCommand, GetLifecyclePolicyCommand, LifecyclePolicyNotFoundException, ListTagsForResourceCommand as ListTagsForResourceCommand$8, PutImageScanningConfigurationCommand, PutImageTagMutabilityCommand, PutLifecyclePolicyCommand, RepositoryNotFoundException, SetRepositoryPolicyCommand, TagResourceCommand as TagResourceCommand$
|
|
36
|
+
import { BatchDeleteImageCommand, CreateRepositoryCommand, DeleteLifecyclePolicyCommand, DeleteRepositoryCommand, DeleteRepositoryPolicyCommand, DescribeImagesCommand as DescribeImagesCommand$1, DescribeRepositoriesCommand, ECRClient, GetAuthorizationTokenCommand, GetLifecyclePolicyCommand, LifecyclePolicyNotFoundException, ListTagsForResourceCommand as ListTagsForResourceCommand$8, PutImageScanningConfigurationCommand, PutImageTagMutabilityCommand, PutLifecyclePolicyCommand, RepositoryNotFoundException, SetRepositoryPolicyCommand, TagResourceCommand as TagResourceCommand$12, UntagResourceCommand as UntagResourceCommand$12 } from "@aws-sdk/client-ecr";
|
|
36
37
|
import graphlib from "graphlib";
|
|
37
38
|
import { AddTagsToResourceCommand as AddTagsToResourceCommand$1, CreateDBClusterCommand, CreateDBInstanceCommand, CreateDBProxyCommand, CreateDBProxyEndpointCommand, CreateDBSubnetGroupCommand, DBProxyEndpointNotFoundFault, DBProxyNotFoundFault, DBProxyTargetGroupNotFoundFault, DBProxyTargetNotFoundFault, DeleteDBClusterCommand, DeleteDBInstanceCommand, DeleteDBProxyCommand, DeleteDBProxyEndpointCommand, DeleteDBSubnetGroupCommand, DeregisterDBProxyTargetsCommand, DescribeDBClustersCommand, DescribeDBInstancesCommand, DescribeDBProxiesCommand, DescribeDBProxyEndpointsCommand, DescribeDBProxyTargetGroupsCommand, DescribeDBProxyTargetsCommand, DescribeDBSubnetGroupsCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$9, ModifyDBClusterCommand, ModifyDBInstanceCommand, ModifyDBProxyCommand, ModifyDBProxyEndpointCommand, ModifyDBProxyTargetGroupCommand, ModifyDBSubnetGroupCommand, RDSClient, RegisterDBProxyTargetsCommand, RemoveTagsFromResourceCommand as RemoveTagsFromResourceCommand$1 } from "@aws-sdk/client-rds";
|
|
38
39
|
import { AddTagsToResourceCommand as AddTagsToResourceCommand$2, CreateCacheClusterCommand, CreateCacheSubnetGroupCommand, DeleteCacheClusterCommand, DeleteCacheSubnetGroupCommand, DescribeCacheClustersCommand, DescribeCacheSubnetGroupsCommand, ElastiCacheClient, ListTagsForResourceCommand as ListTagsForResourceCommand$10, ModifyCacheClusterCommand, ModifyCacheSubnetGroupCommand, RemoveTagsFromResourceCommand as RemoveTagsFromResourceCommand$2 } from "@aws-sdk/client-elasticache";
|
|
@@ -43,29 +44,29 @@ import { writeFileSync as writeFileSync$1 } from "fs";
|
|
|
43
44
|
import * as zlib from "node:zlib";
|
|
44
45
|
import { ApplicationAutoScalingClient, DeleteScalingPolicyCommand, DeregisterScalableTargetCommand, DescribeScalableTargetsCommand, DescribeScalingPoliciesCommand, PutScalingPolicyCommand, RegisterScalableTargetCommand } from "@aws-sdk/client-application-auto-scaling";
|
|
45
46
|
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
|
-
import { CreateStateMachineCommand, DeleteStateMachineCommand, DescribeStateMachineCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$11, SFNClient, StateMachineDoesNotExist, TagResourceCommand as TagResourceCommand$
|
|
47
|
-
import { CreateClusterCommand, CreateServiceCommand, DeleteClusterCommand, DeleteServiceCommand, DeregisterTaskDefinitionCommand, DescribeClustersCommand, DescribeServicesCommand, DescribeTaskDefinitionCommand, ECSClient, PutClusterCapacityProvidersCommand, RegisterTaskDefinitionCommand, TagResourceCommand as TagResourceCommand$
|
|
47
|
+
import { CreateStateMachineCommand, DeleteStateMachineCommand, DescribeStateMachineCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$11, SFNClient, StateMachineDoesNotExist, TagResourceCommand as TagResourceCommand$13, UntagResourceCommand as UntagResourceCommand$13, UpdateStateMachineCommand } from "@aws-sdk/client-sfn";
|
|
48
|
+
import { CreateClusterCommand, CreateServiceCommand, DeleteClusterCommand, DeleteServiceCommand, DeregisterTaskDefinitionCommand, DescribeClustersCommand, DescribeServicesCommand, DescribeTaskDefinitionCommand, ECSClient, PutClusterCapacityProvidersCommand, RegisterTaskDefinitionCommand, TagResourceCommand as TagResourceCommand$14, UntagResourceCommand as UntagResourceCommand$14, UpdateClusterCommand, UpdateServiceCommand } from "@aws-sdk/client-ecs";
|
|
48
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";
|
|
49
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";
|
|
50
|
-
import { AddCustomAttributesCommand, CognitoIdentityProviderClient, CreateUserPoolCommand, DeleteUserPoolCommand, DescribeUserPoolCommand, GetUserPoolMfaConfigCommand, ListUserPoolsCommand, ResourceNotFoundException as ResourceNotFoundException$
|
|
51
|
-
import { CreateHttpNamespaceCommand, CreatePrivateDnsNamespaceCommand, CreatePublicDnsNamespaceCommand, CreateServiceCommand as CreateServiceCommand$1, DeleteNamespaceCommand, DeleteServiceAttributesCommand, DeleteServiceCommand as DeleteServiceCommand$1, GetNamespaceCommand, GetOperationCommand, GetServiceAttributesCommand, GetServiceCommand, ListNamespacesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$14, NamespaceNotFound, ServiceDiscoveryClient, ServiceNotFound, TagResourceCommand as TagResourceCommand$
|
|
52
|
-
import { AppSyncClient, CreateApiKeyCommand, CreateDataSourceCommand, CreateGraphqlApiCommand, CreateResolverCommand, DeleteApiKeyCommand, DeleteDataSourceCommand, DeleteGraphqlApiCommand, DeleteResolverCommand, GetDataSourceCommand, GetGraphqlApiCommand, GetIntrospectionSchemaCommand, GetResolverCommand, ListApiKeysCommand, NotFoundException as NotFoundException$4, StartSchemaCreationCommand, TagResourceCommand as TagResourceCommand$
|
|
51
|
+
import { AddCustomAttributesCommand, CognitoIdentityProviderClient, CreateUserPoolCommand, DeleteUserPoolCommand, DescribeUserPoolCommand, GetUserPoolMfaConfigCommand, ListUserPoolsCommand, ResourceNotFoundException as ResourceNotFoundException$8, SetUserPoolMfaConfigCommand, UpdateUserPoolCommand } from "@aws-sdk/client-cognito-identity-provider";
|
|
52
|
+
import { CreateHttpNamespaceCommand, CreatePrivateDnsNamespaceCommand, CreatePublicDnsNamespaceCommand, CreateServiceCommand as CreateServiceCommand$1, DeleteNamespaceCommand, DeleteServiceAttributesCommand, DeleteServiceCommand as DeleteServiceCommand$1, GetNamespaceCommand, GetOperationCommand, GetServiceAttributesCommand, GetServiceCommand, ListNamespacesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$14, NamespaceNotFound, ServiceDiscoveryClient, ServiceNotFound, TagResourceCommand as TagResourceCommand$15, UntagResourceCommand as UntagResourceCommand$15, UpdateHttpNamespaceCommand, UpdatePrivateDnsNamespaceCommand, UpdatePublicDnsNamespaceCommand, UpdateServiceAttributesCommand, UpdateServiceCommand as UpdateServiceCommand$1 } from "@aws-sdk/client-servicediscovery";
|
|
53
|
+
import { AppSyncClient, CreateApiKeyCommand, CreateDataSourceCommand, CreateGraphqlApiCommand, CreateResolverCommand, DeleteApiKeyCommand, DeleteDataSourceCommand, DeleteGraphqlApiCommand, DeleteResolverCommand, GetDataSourceCommand, GetGraphqlApiCommand, GetIntrospectionSchemaCommand, GetResolverCommand, ListApiKeysCommand, NotFoundException as NotFoundException$4, StartSchemaCreationCommand, TagResourceCommand as TagResourceCommand$16, UntagResourceCommand as UntagResourceCommand$16, UpdateApiKeyCommand, UpdateDataSourceCommand, UpdateGraphqlApiCommand, UpdateResolverCommand } from "@aws-sdk/client-appsync";
|
|
53
54
|
import { parse, print } from "graphql";
|
|
54
55
|
import { CrawlerRunningException, CreateConnectionCommand, CreateCrawlerCommand, CreateDatabaseCommand, CreateJobCommand, CreateSecurityConfigurationCommand, CreateTableCommand as CreateTableCommand$1, CreateTriggerCommand, CreateWorkflowCommand, DeleteConnectionCommand, DeleteCrawlerCommand, DeleteDatabaseCommand, DeleteJobCommand, DeleteSecurityConfigurationCommand, DeleteTableCommand as DeleteTableCommand$1, DeleteTriggerCommand, DeleteWorkflowCommand, EntityNotFoundException, GetConnectionCommand, GetCrawlerCommand, GetDatabaseCommand, GetJobCommand, GetSecurityConfigurationCommand, GetTableCommand, GetTagsCommand, GetTriggerCommand, GetWorkflowCommand, GlueClient, StartCrawlerScheduleCommand, StartTriggerCommand, StopCrawlerCommand, StopCrawlerScheduleCommand, StopTriggerCommand, UpdateConnectionCommand, UpdateCrawlerCommand, UpdateDatabaseCommand, UpdateJobCommand, UpdateTableCommand as UpdateTableCommand$1, UpdateTriggerCommand, UpdateWorkflowCommand } from "@aws-sdk/client-glue";
|
|
55
|
-
import { BudgetsClient, CreateBudgetCommand, CreateNotificationCommand, CreateSubscriberCommand, DeleteBudgetCommand, DeleteNotificationCommand, DeleteSubscriberCommand, DescribeBudgetCommand, DuplicateRecordException, NotFoundException as NotFoundException$5, TagResourceCommand as TagResourceCommand$
|
|
56
|
-
import { AddTagsToStreamCommand, CreateStreamCommand, DecreaseStreamRetentionPeriodCommand, DeleteStreamCommand, DeregisterStreamConsumerCommand, DescribeStreamCommand, DescribeStreamConsumerCommand, DescribeStreamSummaryCommand, IncreaseStreamRetentionPeriodCommand, KinesisClient, ListTagsForResourceCommand as ListTagsForResourceCommand$15, ListTagsForStreamCommand, RegisterStreamConsumerCommand, RemoveTagsFromStreamCommand, ResourceNotFoundException as ResourceNotFoundException$
|
|
57
|
-
import { CreateScheduleCommand, DeleteScheduleCommand, GetScheduleCommand, ResourceNotFoundException as ResourceNotFoundException$
|
|
56
|
+
import { BudgetsClient, CreateBudgetCommand, CreateNotificationCommand, CreateSubscriberCommand, DeleteBudgetCommand, DeleteNotificationCommand, DeleteSubscriberCommand, DescribeBudgetCommand, DuplicateRecordException, NotFoundException as NotFoundException$5, TagResourceCommand as TagResourceCommand$17, UntagResourceCommand as UntagResourceCommand$17, UpdateBudgetCommand } from "@aws-sdk/client-budgets";
|
|
57
|
+
import { AddTagsToStreamCommand, CreateStreamCommand, DecreaseStreamRetentionPeriodCommand, DeleteStreamCommand, DeregisterStreamConsumerCommand, DescribeStreamCommand, DescribeStreamConsumerCommand, DescribeStreamSummaryCommand, IncreaseStreamRetentionPeriodCommand, KinesisClient, ListTagsForResourceCommand as ListTagsForResourceCommand$15, ListTagsForStreamCommand, RegisterStreamConsumerCommand, RemoveTagsFromStreamCommand, ResourceNotFoundException as ResourceNotFoundException$9, StartStreamEncryptionCommand, StopStreamEncryptionCommand, TagResourceCommand as TagResourceCommand$18, UntagResourceCommand as UntagResourceCommand$18, UpdateShardCountCommand, UpdateStreamModeCommand } from "@aws-sdk/client-kinesis";
|
|
58
|
+
import { CreateScheduleCommand, DeleteScheduleCommand, GetScheduleCommand, ResourceNotFoundException as ResourceNotFoundException$10, SchedulerClient, UpdateScheduleCommand } from "@aws-sdk/client-scheduler";
|
|
58
59
|
import { AccessPointNotFound, CreateAccessPointCommand, CreateFileSystemCommand, CreateMountTargetCommand, DeleteAccessPointCommand, DeleteFileSystemCommand, DeleteMountTargetCommand, DescribeAccessPointsCommand, DescribeBackupPolicyCommand, DescribeFileSystemPolicyCommand, DescribeFileSystemsCommand, DescribeLifecycleConfigurationCommand, DescribeMountTargetSecurityGroupsCommand, DescribeMountTargetsCommand, EFSClient, FileSystemNotFound, ModifyMountTargetSecurityGroupsCommand, MountTargetNotFound, PutBackupPolicyCommand, PutFileSystemPolicyCommand, PutLifecycleConfigurationCommand, UpdateFileSystemCommand, UpdateFileSystemProtectionCommand } from "@aws-sdk/client-efs";
|
|
59
|
-
import { CreateFileSystemCommand as CreateFileSystemCommand$1, CreateFileSystemFromBackupCommand, DeleteFileSystemCommand as DeleteFileSystemCommand$1, DescribeFileSystemsCommand as DescribeFileSystemsCommand$1, FSxClient, FileSystemNotFound as FileSystemNotFound$1, TagResourceCommand as TagResourceCommand$
|
|
60
|
+
import { CreateFileSystemCommand as CreateFileSystemCommand$1, CreateFileSystemFromBackupCommand, DeleteFileSystemCommand as DeleteFileSystemCommand$1, DescribeFileSystemsCommand as DescribeFileSystemsCommand$1, FSxClient, FileSystemNotFound as FileSystemNotFound$1, TagResourceCommand as TagResourceCommand$19, UntagResourceCommand as UntagResourceCommand$19, UpdateFileSystemCommand as UpdateFileSystemCommand$1 } from "@aws-sdk/client-fsx";
|
|
60
61
|
import { AddInstanceFleetCommand, AddInstanceGroupsCommand, AddTagsCommand as AddTagsCommand$1, DescribeClusterCommand, EMRClient, InvalidRequestException, ListInstanceFleetsCommand, ListInstanceGroupsCommand, ModifyClusterCommand, ModifyInstanceFleetCommand, ModifyInstanceGroupsCommand, PutAutoScalingPolicyCommand, PutAutoTerminationPolicyCommand, PutManagedScalingPolicyCommand, RemoveAutoScalingPolicyCommand, RemoveAutoTerminationPolicyCommand, RemoveManagedScalingPolicyCommand, RemoveTagsCommand as RemoveTagsCommand$1, RunJobFlowCommand, SetTerminationProtectionCommand, SetVisibleToAllUsersCommand, TerminateJobFlowsCommand } from "@aws-sdk/client-emr";
|
|
61
|
-
import { CreateDeliveryStreamCommand, DeleteDeliveryStreamCommand, DescribeDeliveryStreamCommand, FirehoseClient, ListTagsForDeliveryStreamCommand, ResourceNotFoundException as ResourceNotFoundException$
|
|
62
|
+
import { CreateDeliveryStreamCommand, DeleteDeliveryStreamCommand, DescribeDeliveryStreamCommand, FirehoseClient, ListTagsForDeliveryStreamCommand, ResourceNotFoundException as ResourceNotFoundException$11, TagDeliveryStreamCommand, UntagDeliveryStreamCommand, UpdateDestinationCommand } from "@aws-sdk/client-firehose";
|
|
62
63
|
import { AddTagsCommand as AddTagsCommand$2, CloudTrailClient, CreateTrailCommand, DeleteTrailCommand, GetEventSelectorsCommand, GetInsightSelectorsCommand, GetTrailCommand, GetTrailStatusCommand, ListTagsCommand as ListTagsCommand$1, PutEventSelectorsCommand, PutInsightSelectorsCommand, RemoveTagsCommand as RemoveTagsCommand$2, StartLoggingCommand, StopLoggingCommand, TrailNotFoundException, UpdateTrailCommand } from "@aws-sdk/client-cloudtrail";
|
|
63
|
-
import { BatchGetProjectsCommand, CodeBuildClient, CreateProjectCommand, DeleteProjectCommand, ResourceNotFoundException as ResourceNotFoundException$
|
|
64
|
-
import { CodeCommitClient, CreateCommitCommand, CreateRepositoryCommand as CreateRepositoryCommand$1, DeleteRepositoryCommand as DeleteRepositoryCommand$1, GetRepositoryCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$16, PutRepositoryTriggersCommand, RepositoryDoesNotExistException, TagResourceCommand as TagResourceCommand$
|
|
64
|
+
import { BatchGetProjectsCommand, CodeBuildClient, CreateProjectCommand, DeleteProjectCommand, ResourceNotFoundException as ResourceNotFoundException$12, UpdateProjectCommand } from "@aws-sdk/client-codebuild";
|
|
65
|
+
import { CodeCommitClient, CreateCommitCommand, CreateRepositoryCommand as CreateRepositoryCommand$1, DeleteRepositoryCommand as DeleteRepositoryCommand$1, GetRepositoryCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$16, PutRepositoryTriggersCommand, RepositoryDoesNotExistException, TagResourceCommand as TagResourceCommand$20, UntagResourceCommand as UntagResourceCommand$20, UpdateRepositoryDescriptionCommand, UpdateRepositoryEncryptionKeyCommand, UpdateRepositoryNameCommand } from "@aws-sdk/client-codecommit";
|
|
65
66
|
import AdmZip from "adm-zip";
|
|
66
|
-
import { CreateLifecyclePolicyCommand, DLMClient, DeleteLifecyclePolicyCommand as DeleteLifecyclePolicyCommand$1, GetLifecyclePolicyCommand as GetLifecyclePolicyCommand$1, ResourceNotFoundException as ResourceNotFoundException$
|
|
67
|
-
import { CreateVectorBucketCommand, DeleteIndexCommand, DeleteVectorBucketCommand, GetVectorBucketCommand, ListIndexesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$17, S3VectorsClient, TagResourceCommand as TagResourceCommand$
|
|
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, ListTagsForResourceCommand as ListTagsForResourceCommand$18, NotFoundException as NotFoundException$6, S3TablesClient, TagResourceCommand as TagResourceCommand$
|
|
67
|
+
import { CreateLifecyclePolicyCommand, DLMClient, DeleteLifecyclePolicyCommand as DeleteLifecyclePolicyCommand$1, GetLifecyclePolicyCommand as GetLifecyclePolicyCommand$1, ResourceNotFoundException as ResourceNotFoundException$13, TagResourceCommand as TagResourceCommand$21, UntagResourceCommand as UntagResourceCommand$21, UpdateLifecyclePolicyCommand } from "@aws-sdk/client-dlm";
|
|
68
|
+
import { CreateVectorBucketCommand, DeleteIndexCommand, DeleteVectorBucketCommand, GetVectorBucketCommand, ListIndexesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$17, S3VectorsClient, TagResourceCommand as TagResourceCommand$22, UntagResourceCommand as UntagResourceCommand$22 } from "@aws-sdk/client-s3vectors";
|
|
69
|
+
import { CreateNamespaceCommand, CreateTableBucketCommand, CreateTableCommand as CreateTableCommand$2, DeleteNamespaceCommand as DeleteNamespaceCommand$1, DeleteTableBucketCommand, DeleteTableCommand as DeleteTableCommand$2, GetTableBucketCommand, GetTableCommand as GetTableCommand$1, ListNamespacesCommand as ListNamespacesCommand$1, ListTableBucketsCommand, ListTablesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$18, NotFoundException as NotFoundException$6, S3TablesClient, TagResourceCommand as TagResourceCommand$23, UntagResourceCommand as UntagResourceCommand$23 } from "@aws-sdk/client-s3tables";
|
|
69
70
|
import { Document, Pair, Scalar, YAMLMap, YAMLSeq, parse as parse$1, stringify } from "yaml";
|
|
70
71
|
import { createLocalStartAgentCoreCommand, createLocalStartCloudFrontCommand, createLocalStateProvider, getEmbedConfig, isCfnFlagPresent, listTargets, rejectExplicitCfnStackWithMultipleStacks, resolveCfnFallbackRegion, setEmbedConfig, substituteAgainstState, substituteAgainstStateAsync, substituteEnvVarsFromState, substituteEnvVarsFromStateAsync } from "cdk-local";
|
|
71
72
|
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";
|
|
@@ -1900,7 +1901,7 @@ const FLUSH_INTERVAL_MS = 2e3;
|
|
|
1900
1901
|
const FLUSH_EVENT_THRESHOLD = 50;
|
|
1901
1902
|
/** Build-time cdkd version, with a dev fallback for non-built contexts. */
|
|
1902
1903
|
function getCdkdVersion() {
|
|
1903
|
-
return "0.
|
|
1904
|
+
return "0.258.0";
|
|
1904
1905
|
}
|
|
1905
1906
|
/**
|
|
1906
1907
|
* Generate a time-sortable unique run id, e.g.
|
|
@@ -10392,6 +10393,394 @@ var LambdaEventInvokeConfigProvider = class {
|
|
|
10392
10393
|
}
|
|
10393
10394
|
};
|
|
10394
10395
|
|
|
10396
|
+
//#endregion
|
|
10397
|
+
//#region src/provisioning/providers/lambda-microvm-image-provider.ts
|
|
10398
|
+
/**
|
|
10399
|
+
* AWS Lambda MicroVM Image Provider
|
|
10400
|
+
*
|
|
10401
|
+
* Implements `AWS::Lambda::MicrovmImage` using the dedicated `lambda-microvms`
|
|
10402
|
+
* service SDK (`@aws-sdk/client-lambda-microvms`) — NOT `@aws-sdk/client-lambda`.
|
|
10403
|
+
* The MicroVM image APIs (`CreateMicrovmImage` / `GetMicrovmImage` /
|
|
10404
|
+
* `UpdateMicrovmImage` / `DeleteMicrovmImage`) live in their own service model.
|
|
10405
|
+
*
|
|
10406
|
+
* **The build is asynchronous.** `CreateMicrovmImage` returns immediately with
|
|
10407
|
+
* the image in `CREATING` state; Lambda then downloads the code artifact zip
|
|
10408
|
+
* from S3, runs the Dockerfile, starts the application, and captures a
|
|
10409
|
+
* Firecracker snapshot. The image reaches `CREATED` on success or
|
|
10410
|
+
* `CREATE_FAILED` on failure (build logs land in CloudWatch under
|
|
10411
|
+
* `/aws/lambda/microvms/<name>`). `create()` polls `GetMicrovmImage` until the
|
|
10412
|
+
* image reaches `CREATED`. `UpdateMicrovmImage` triggers the same async rebuild
|
|
10413
|
+
* (`UPDATING` -> `UPDATED` / `UPDATE_FAILED`).
|
|
10414
|
+
*
|
|
10415
|
+
* `CDKD_NO_WAIT=true` (or `cdkd deploy --no-wait`) short-circuits the create /
|
|
10416
|
+
* update poll and returns immediately with the image ARN. The build continues
|
|
10417
|
+
* asynchronously on the AWS side — cdkd will NOT observe a later
|
|
10418
|
+
* `CREATE_FAILED`, and an immediate `destroy` may race the in-flight build.
|
|
10419
|
+
* The Cloud Control fallback path does NOT honor `--no-wait` (it always polls
|
|
10420
|
+
* its request token to a terminal state), so this SDK provider is what makes
|
|
10421
|
+
* `--no-wait` effective for this resource type.
|
|
10422
|
+
*
|
|
10423
|
+
* **Physical id is the image ARN** (`primaryIdentifier` = `/properties/ImageArn`,
|
|
10424
|
+
* an AWS-assigned read-only attribute). CFn `Ref` returns the ARN. `Name` is a
|
|
10425
|
+
* create-only property, so a `Name` change is routed to REPLACEMENT by cdkd's
|
|
10426
|
+
* create-only detection (`getCreateOnlyPropertyPaths`) and never reaches
|
|
10427
|
+
* `update()`.
|
|
10428
|
+
*
|
|
10429
|
+
* **CFn <-> SDK shape translation.** The template carries CloudFormation-schema
|
|
10430
|
+
* PascalCase properties (e.g. `CodeArtifact: { Uri }`, `Tags: [{Key, Value}]`,
|
|
10431
|
+
* `Logging: { Disabled: true }`); the SDK expects camelCase with different
|
|
10432
|
+
* container shapes (`codeArtifact: { uri }`, `tags: Record<string,string>`,
|
|
10433
|
+
* `logging: { disabled: {} }`). The mapping helpers below translate each field
|
|
10434
|
+
* explicitly so this provider accepts the exact same template the Cloud Control
|
|
10435
|
+
* fallback would.
|
|
10436
|
+
*
|
|
10437
|
+
* **Tags update out-of-band.** `Tags` is `tagUpdatable` but is NOT a field on
|
|
10438
|
+
* `UpdateMicrovmImage`, so `update()` reconciles tag changes via `TagResource`
|
|
10439
|
+
* / `UntagResource` (no rebuild). A change limited to `Tags` skips the
|
|
10440
|
+
* `UpdateMicrovmImage` rebuild entirely; only a build-affecting property change
|
|
10441
|
+
* ({@link BUILD_AFFECTING_CFN_KEYS}) issues the async rebuild.
|
|
10442
|
+
*/
|
|
10443
|
+
var LambdaMicrovmImageProvider = class {
|
|
10444
|
+
client;
|
|
10445
|
+
logger = getLogger().child("LambdaMicrovmImageProvider");
|
|
10446
|
+
maxPollAttempts = Number(process.env["CDKD_MICROVM_IMAGE_POLL_ATTEMPTS"] ?? 180);
|
|
10447
|
+
pollIntervalMs = Number(process.env["CDKD_MICROVM_IMAGE_POLL_INTERVAL_MS"] ?? 1e4);
|
|
10448
|
+
constructor() {
|
|
10449
|
+
this.client = getAwsClients().lambdaMicrovms;
|
|
10450
|
+
}
|
|
10451
|
+
handledProperties = /* @__PURE__ */ new Map([["AWS::Lambda::MicrovmImage", /* @__PURE__ */ new Set([
|
|
10452
|
+
"Name",
|
|
10453
|
+
"BaseImageArn",
|
|
10454
|
+
"BaseImageVersion",
|
|
10455
|
+
"BuildRoleArn",
|
|
10456
|
+
"Description",
|
|
10457
|
+
"CodeArtifact",
|
|
10458
|
+
"Logging",
|
|
10459
|
+
"EgressNetworkConnectors",
|
|
10460
|
+
"CpuConfigurations",
|
|
10461
|
+
"Resources",
|
|
10462
|
+
"AdditionalOsCapabilities",
|
|
10463
|
+
"Hooks",
|
|
10464
|
+
"EnvironmentVariables",
|
|
10465
|
+
"Tags"
|
|
10466
|
+
])]]);
|
|
10467
|
+
unhandledByDesign = /* @__PURE__ */ new Map([["AWS::Lambda::MicrovmImage", /* @__PURE__ */ new Map([
|
|
10468
|
+
["ImageArn", "AWS-managed read-only attribute (primaryIdentifier / physical id)"],
|
|
10469
|
+
["State", "AWS-managed read-only attribute"],
|
|
10470
|
+
["LatestActiveImageVersion", "AWS-managed read-only attribute"],
|
|
10471
|
+
["LatestFailedImageVersion", "AWS-managed read-only attribute"],
|
|
10472
|
+
["CreatedAt", "AWS-managed read-only attribute"],
|
|
10473
|
+
["UpdatedAt", "AWS-managed read-only attribute"]
|
|
10474
|
+
])]]);
|
|
10475
|
+
getMinResourceTimeoutMs() {
|
|
10476
|
+
return this.maxPollAttempts * this.pollIntervalMs;
|
|
10477
|
+
}
|
|
10478
|
+
async create(logicalId, resourceType, properties) {
|
|
10479
|
+
this.logger.debug(`Creating MicroVM image ${logicalId}`);
|
|
10480
|
+
const name = properties["Name"];
|
|
10481
|
+
const baseImageArn = properties["BaseImageArn"];
|
|
10482
|
+
const buildRoleArn = properties["BuildRoleArn"];
|
|
10483
|
+
const codeArtifact = mapCodeArtifact(properties["CodeArtifact"]);
|
|
10484
|
+
const missing = [
|
|
10485
|
+
!name && "Name",
|
|
10486
|
+
!baseImageArn && "BaseImageArn",
|
|
10487
|
+
!buildRoleArn && "BuildRoleArn",
|
|
10488
|
+
!codeArtifact && "CodeArtifact.Uri"
|
|
10489
|
+
].filter(Boolean);
|
|
10490
|
+
if (missing.length > 0) throw new ProvisioningError(`${missing.join(", ")} ${missing.length === 1 ? "is" : "are"} required for MicroVM image ${logicalId}`, resourceType, logicalId);
|
|
10491
|
+
const input = {
|
|
10492
|
+
name,
|
|
10493
|
+
baseImageArn,
|
|
10494
|
+
buildRoleArn,
|
|
10495
|
+
codeArtifact,
|
|
10496
|
+
...buildCommonImageInput(properties)
|
|
10497
|
+
};
|
|
10498
|
+
const tags = mapKeyValueListToRecord(properties["Tags"]);
|
|
10499
|
+
if (tags) input.tags = tags;
|
|
10500
|
+
try {
|
|
10501
|
+
const response = await this.client.send(new CreateMicrovmImageCommand(input));
|
|
10502
|
+
const imageArn = response.imageArn;
|
|
10503
|
+
if (!imageArn) throw new ProvisioningError(`CreateMicrovmImage succeeded but no imageArn returned for ${logicalId}`, resourceType, logicalId);
|
|
10504
|
+
this.logger.debug(`Created MicroVM image ${logicalId}: ${imageArn} (state=${response.state})`);
|
|
10505
|
+
const noWait = process.env["CDKD_NO_WAIT"] === "true";
|
|
10506
|
+
let latest = {
|
|
10507
|
+
state: response.state,
|
|
10508
|
+
latestActiveImageVersion: response.latestActiveImageVersion,
|
|
10509
|
+
latestFailedImageVersion: response.latestFailedImageVersion,
|
|
10510
|
+
createdAt: response.createdAt,
|
|
10511
|
+
updatedAt: response.updatedAt
|
|
10512
|
+
};
|
|
10513
|
+
if (!noWait) latest = await this.waitForTerminalState(imageArn, logicalId, "create");
|
|
10514
|
+
else this.logger.warn(`Skipping wait for MicroVM image ${logicalId} (CDKD_NO_WAIT=true). The build continues asynchronously; a CREATE_FAILED will not be observed here.`);
|
|
10515
|
+
return {
|
|
10516
|
+
physicalId: imageArn,
|
|
10517
|
+
attributes: this.buildAttributes(imageArn, latest.state, {
|
|
10518
|
+
latestActiveImageVersion: latest.latestActiveImageVersion,
|
|
10519
|
+
latestFailedImageVersion: latest.latestFailedImageVersion,
|
|
10520
|
+
createdAt: latest.createdAt,
|
|
10521
|
+
updatedAt: latest.updatedAt
|
|
10522
|
+
})
|
|
10523
|
+
};
|
|
10524
|
+
} catch (error) {
|
|
10525
|
+
throw this.wrapError("create", logicalId, resourceType, void 0, error);
|
|
10526
|
+
}
|
|
10527
|
+
}
|
|
10528
|
+
async update(logicalId, physicalId, resourceType, properties, previousProperties) {
|
|
10529
|
+
this.logger.debug(`Updating MicroVM image ${logicalId}: ${physicalId}`);
|
|
10530
|
+
if (properties["Name"] !== previousProperties["Name"]) throw new ProvisioningError(`MicroVM image ${logicalId} Name is create-only and cannot be changed in place (${String(previousProperties["Name"])} -> ${String(properties["Name"])}); this requires replacement.`, resourceType, logicalId, physicalId);
|
|
10531
|
+
try {
|
|
10532
|
+
await this.reconcileTags(physicalId, properties["Tags"], previousProperties["Tags"]);
|
|
10533
|
+
if (!BUILD_AFFECTING_CFN_KEYS.some((key) => JSON.stringify(properties[key]) !== JSON.stringify(previousProperties[key]))) {
|
|
10534
|
+
this.logger.debug(`MicroVM image ${logicalId}: only tags changed, skipping UpdateMicrovmImage rebuild`);
|
|
10535
|
+
const current = await this.client.send(new GetMicrovmImageCommand({ imageIdentifier: physicalId }));
|
|
10536
|
+
return {
|
|
10537
|
+
physicalId,
|
|
10538
|
+
wasReplaced: false,
|
|
10539
|
+
attributes: this.buildAttributes(physicalId, current.state, current)
|
|
10540
|
+
};
|
|
10541
|
+
}
|
|
10542
|
+
const baseImageArn = properties["BaseImageArn"];
|
|
10543
|
+
const buildRoleArn = properties["BuildRoleArn"];
|
|
10544
|
+
const codeArtifact = mapCodeArtifact(properties["CodeArtifact"]);
|
|
10545
|
+
if (!baseImageArn || !buildRoleArn || !codeArtifact) throw new ProvisioningError(`BaseImageArn, BuildRoleArn, and CodeArtifact.Uri are required to update MicroVM image ${logicalId}`, resourceType, logicalId, physicalId);
|
|
10546
|
+
const input = {
|
|
10547
|
+
imageIdentifier: physicalId,
|
|
10548
|
+
baseImageArn,
|
|
10549
|
+
buildRoleArn,
|
|
10550
|
+
codeArtifact,
|
|
10551
|
+
...buildCommonImageInput(properties),
|
|
10552
|
+
environmentVariables: mapKeyValueListToRecord(properties["EnvironmentVariables"]) ?? {}
|
|
10553
|
+
};
|
|
10554
|
+
await this.client.send(new UpdateMicrovmImageCommand(input));
|
|
10555
|
+
const noWait = process.env["CDKD_NO_WAIT"] === "true";
|
|
10556
|
+
let latest;
|
|
10557
|
+
if (!noWait) latest = await this.waitForTerminalState(physicalId, logicalId, "update");
|
|
10558
|
+
else this.logger.warn(`Skipping wait for MicroVM image ${logicalId} update (CDKD_NO_WAIT=true). The rebuild continues asynchronously.`);
|
|
10559
|
+
return {
|
|
10560
|
+
physicalId,
|
|
10561
|
+
wasReplaced: false,
|
|
10562
|
+
attributes: this.buildAttributes(physicalId, latest?.state, {
|
|
10563
|
+
latestActiveImageVersion: latest?.latestActiveImageVersion,
|
|
10564
|
+
latestFailedImageVersion: latest?.latestFailedImageVersion,
|
|
10565
|
+
createdAt: latest?.createdAt,
|
|
10566
|
+
updatedAt: latest?.updatedAt
|
|
10567
|
+
})
|
|
10568
|
+
};
|
|
10569
|
+
} catch (error) {
|
|
10570
|
+
throw this.wrapError("update", logicalId, resourceType, physicalId, error);
|
|
10571
|
+
}
|
|
10572
|
+
}
|
|
10573
|
+
async delete(logicalId, physicalId, resourceType, _properties, context) {
|
|
10574
|
+
this.logger.debug(`Deleting MicroVM image ${logicalId}: ${physicalId}`);
|
|
10575
|
+
try {
|
|
10576
|
+
try {
|
|
10577
|
+
await this.client.send(new DeleteMicrovmImageCommand({ imageIdentifier: physicalId }));
|
|
10578
|
+
} catch (error) {
|
|
10579
|
+
if (error instanceof ResourceNotFoundException$7) {
|
|
10580
|
+
assertRegionMatch(await this.client.config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
10581
|
+
this.logger.debug(`MicroVM image ${physicalId} does not exist, skipping deletion`);
|
|
10582
|
+
return;
|
|
10583
|
+
}
|
|
10584
|
+
throw error;
|
|
10585
|
+
}
|
|
10586
|
+
await this.waitForDeleted(physicalId, logicalId);
|
|
10587
|
+
this.logger.debug(`Successfully deleted MicroVM image ${logicalId}`);
|
|
10588
|
+
} catch (error) {
|
|
10589
|
+
throw this.wrapError("delete", logicalId, resourceType, physicalId, error);
|
|
10590
|
+
}
|
|
10591
|
+
}
|
|
10592
|
+
async getAttribute(physicalId, _resourceType, attributeName) {
|
|
10593
|
+
if (attributeName === "ImageArn") return physicalId;
|
|
10594
|
+
const resp = await this.client.send(new GetMicrovmImageCommand({ imageIdentifier: physicalId }));
|
|
10595
|
+
switch (attributeName) {
|
|
10596
|
+
case "State": return resp.state;
|
|
10597
|
+
case "LatestActiveImageVersion": return resp.latestActiveImageVersion;
|
|
10598
|
+
case "LatestFailedImageVersion": return resp.latestFailedImageVersion;
|
|
10599
|
+
case "CreatedAt": return resp.createdAt?.toISOString();
|
|
10600
|
+
case "UpdatedAt": return resp.updatedAt?.toISOString();
|
|
10601
|
+
default: return;
|
|
10602
|
+
}
|
|
10603
|
+
}
|
|
10604
|
+
buildAttributes(imageArn, state, extra) {
|
|
10605
|
+
const attributes = { ImageArn: imageArn };
|
|
10606
|
+
if (state !== void 0) attributes["State"] = state;
|
|
10607
|
+
if (extra.latestActiveImageVersion !== void 0) attributes["LatestActiveImageVersion"] = extra.latestActiveImageVersion;
|
|
10608
|
+
if (extra.latestFailedImageVersion !== void 0) attributes["LatestFailedImageVersion"] = extra.latestFailedImageVersion;
|
|
10609
|
+
if (extra.createdAt !== void 0) attributes["CreatedAt"] = extra.createdAt.toISOString();
|
|
10610
|
+
if (extra.updatedAt !== void 0) attributes["UpdatedAt"] = extra.updatedAt.toISOString();
|
|
10611
|
+
return attributes;
|
|
10612
|
+
}
|
|
10613
|
+
/**
|
|
10614
|
+
* Poll `GetMicrovmImage` until the image reaches a terminal success state
|
|
10615
|
+
* (`CREATED` after create, `CREATED` / `UPDATED` after update). Throws on the
|
|
10616
|
+
* matching failure state (`CREATE_FAILED` / `UPDATE_FAILED`) or on
|
|
10617
|
+
* poll-cap exhaustion.
|
|
10618
|
+
*/
|
|
10619
|
+
async waitForTerminalState(imageArn, logicalId, operation) {
|
|
10620
|
+
this.logger.debug(`Waiting for MicroVM image ${imageArn} to finish ${operation}...`);
|
|
10621
|
+
for (let attempt = 1; attempt <= this.maxPollAttempts; attempt++) {
|
|
10622
|
+
const resp = await this.client.send(new GetMicrovmImageCommand({ imageIdentifier: imageArn }));
|
|
10623
|
+
const state = resp.state;
|
|
10624
|
+
if (state === "CREATED" || state === "UPDATED") {
|
|
10625
|
+
this.logger.debug(`MicroVM image ${imageArn} reached ${state}`);
|
|
10626
|
+
return resp;
|
|
10627
|
+
}
|
|
10628
|
+
if (state === "CREATE_FAILED" || state === "UPDATE_FAILED") throw new Error(`MicroVM image ${logicalId} (${imageArn}) entered ${state} during ${operation}. Check the build logs in CloudWatch under /aws/lambda/microvms/ to diagnose.`);
|
|
10629
|
+
this.logger.debug(`MicroVM image ${imageArn} state: ${state} (attempt ${attempt}/${this.maxPollAttempts})`);
|
|
10630
|
+
await sleep$2(this.pollIntervalMs);
|
|
10631
|
+
}
|
|
10632
|
+
throw new Error(`MicroVM image ${logicalId} (${imageArn}) did not finish ${operation} within ${this.maxPollAttempts * this.pollIntervalMs / 1e3}s. Increase --resource-timeout AWS::Lambda::MicrovmImage=<duration> or set CDKD_NO_WAIT=true.`);
|
|
10633
|
+
}
|
|
10634
|
+
/**
|
|
10635
|
+
* Poll `GetMicrovmImage` until it 404s (image fully deleted). Throws on
|
|
10636
|
+
* `DELETE_FAILED` or poll-cap exhaustion.
|
|
10637
|
+
*/
|
|
10638
|
+
async waitForDeleted(imageArn, logicalId) {
|
|
10639
|
+
for (let attempt = 1; attempt <= this.maxPollAttempts; attempt++) {
|
|
10640
|
+
let resp;
|
|
10641
|
+
try {
|
|
10642
|
+
resp = await this.client.send(new GetMicrovmImageCommand({ imageIdentifier: imageArn }));
|
|
10643
|
+
} catch (error) {
|
|
10644
|
+
if (error instanceof ResourceNotFoundException$7) return;
|
|
10645
|
+
throw error;
|
|
10646
|
+
}
|
|
10647
|
+
if (resp.state === "DELETE_FAILED") throw new Error(`MicroVM image ${logicalId} (${imageArn}) entered DELETE_FAILED. Check the CloudWatch build logs under /aws/lambda/microvms/ to diagnose.`);
|
|
10648
|
+
this.logger.debug(`MicroVM image ${imageArn} state: ${resp.state} (delete attempt ${attempt}/${this.maxPollAttempts})`);
|
|
10649
|
+
await sleep$2(this.pollIntervalMs);
|
|
10650
|
+
}
|
|
10651
|
+
throw new Error(`MicroVM image ${logicalId} (${imageArn}) was not fully deleted within ${this.maxPollAttempts * this.pollIntervalMs / 1e3}s.`);
|
|
10652
|
+
}
|
|
10653
|
+
/**
|
|
10654
|
+
* Reconcile the resource's tags to the desired set via TagResource /
|
|
10655
|
+
* UntagResource (diff of the CFn `Tags` list, old vs new). Tags are NOT a
|
|
10656
|
+
* field on UpdateMicrovmImage, so this is the only way a tag change reaches
|
|
10657
|
+
* AWS on update — and it applies without an image rebuild.
|
|
10658
|
+
*/
|
|
10659
|
+
async reconcileTags(physicalId, newTags, oldTags) {
|
|
10660
|
+
const newMap = mapKeyValueListToRecord(newTags) ?? {};
|
|
10661
|
+
const oldMap = mapKeyValueListToRecord(oldTags) ?? {};
|
|
10662
|
+
const keysToRemove = Object.keys(oldMap).filter((k) => !(k in newMap));
|
|
10663
|
+
const tagsToAdd = {};
|
|
10664
|
+
for (const [k, v] of Object.entries(newMap)) if (oldMap[k] !== v) tagsToAdd[k] = v;
|
|
10665
|
+
if (keysToRemove.length > 0) await this.client.send(new UntagResourceCommand$10({
|
|
10666
|
+
Resource: physicalId,
|
|
10667
|
+
TagKeys: keysToRemove
|
|
10668
|
+
}));
|
|
10669
|
+
if (Object.keys(tagsToAdd).length > 0) await this.client.send(new TagResourceCommand$10({
|
|
10670
|
+
Resource: physicalId,
|
|
10671
|
+
Tags: tagsToAdd
|
|
10672
|
+
}));
|
|
10673
|
+
}
|
|
10674
|
+
wrapError(operation, logicalId, resourceType, physicalId, error) {
|
|
10675
|
+
if (error instanceof ProvisioningError) return error;
|
|
10676
|
+
const cause = error instanceof Error ? error : void 0;
|
|
10677
|
+
return new ProvisioningError(`Failed to ${operation} MicroVM image ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, physicalId, cause);
|
|
10678
|
+
}
|
|
10679
|
+
};
|
|
10680
|
+
/**
|
|
10681
|
+
* CFn property names whose change requires an UpdateMicrovmImage call (an async
|
|
10682
|
+
* image rebuild). Everything the SDK's UpdateMicrovmImage accepts EXCEPT tags
|
|
10683
|
+
* (which reconcile out-of-band via TagResource / UntagResource) and Name
|
|
10684
|
+
* (create-only). A change limited to `Tags` skips the rebuild.
|
|
10685
|
+
*/
|
|
10686
|
+
const BUILD_AFFECTING_CFN_KEYS = [
|
|
10687
|
+
"BaseImageArn",
|
|
10688
|
+
"BaseImageVersion",
|
|
10689
|
+
"BuildRoleArn",
|
|
10690
|
+
"Description",
|
|
10691
|
+
"CodeArtifact",
|
|
10692
|
+
"Logging",
|
|
10693
|
+
"EgressNetworkConnectors",
|
|
10694
|
+
"CpuConfigurations",
|
|
10695
|
+
"Resources",
|
|
10696
|
+
"AdditionalOsCapabilities",
|
|
10697
|
+
"Hooks",
|
|
10698
|
+
"EnvironmentVariables"
|
|
10699
|
+
];
|
|
10700
|
+
function sleep$2(ms) {
|
|
10701
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
10702
|
+
}
|
|
10703
|
+
/**
|
|
10704
|
+
* Build the optional create/update input fields shared by both operations,
|
|
10705
|
+
* translating each from its CloudFormation-schema shape to the SDK shape.
|
|
10706
|
+
* Only defined fields are included so the request never carries `undefined`.
|
|
10707
|
+
*/
|
|
10708
|
+
function buildCommonImageInput(properties) {
|
|
10709
|
+
const input = {};
|
|
10710
|
+
if (typeof properties["BaseImageVersion"] === "string") input.baseImageVersion = properties["BaseImageVersion"];
|
|
10711
|
+
if (typeof properties["Description"] === "string") input.description = properties["Description"];
|
|
10712
|
+
const logging = mapLogging(properties["Logging"]);
|
|
10713
|
+
if (logging) input.logging = logging;
|
|
10714
|
+
if (Array.isArray(properties["EgressNetworkConnectors"])) input.egressNetworkConnectors = properties["EgressNetworkConnectors"];
|
|
10715
|
+
const cpuConfigurations = mapCpuConfigurations(properties["CpuConfigurations"]);
|
|
10716
|
+
if (cpuConfigurations) input.cpuConfigurations = cpuConfigurations;
|
|
10717
|
+
const resources = mapResources(properties["Resources"]);
|
|
10718
|
+
if (resources) input.resources = resources;
|
|
10719
|
+
if (Array.isArray(properties["AdditionalOsCapabilities"])) input.additionalOsCapabilities = properties["AdditionalOsCapabilities"];
|
|
10720
|
+
const hooks = mapHooks(properties["Hooks"]);
|
|
10721
|
+
if (hooks) input.hooks = hooks;
|
|
10722
|
+
const environmentVariables = mapKeyValueListToRecord(properties["EnvironmentVariables"]);
|
|
10723
|
+
if (environmentVariables) input.environmentVariables = environmentVariables;
|
|
10724
|
+
return input;
|
|
10725
|
+
}
|
|
10726
|
+
function mapCodeArtifact(value) {
|
|
10727
|
+
if (!isRecord(value)) return void 0;
|
|
10728
|
+
const uri = value["Uri"];
|
|
10729
|
+
return typeof uri === "string" ? { uri } : void 0;
|
|
10730
|
+
}
|
|
10731
|
+
function mapLogging(value) {
|
|
10732
|
+
if (!isRecord(value)) return void 0;
|
|
10733
|
+
if (value["Disabled"] === true) return { disabled: {} };
|
|
10734
|
+
const cloudWatch = value["CloudWatch"];
|
|
10735
|
+
if (isRecord(cloudWatch)) {
|
|
10736
|
+
const cw = {};
|
|
10737
|
+
if (typeof cloudWatch["LogGroup"] === "string") cw.logGroup = cloudWatch["LogGroup"];
|
|
10738
|
+
if (typeof cloudWatch["LogStream"] === "string") cw.logStream = cloudWatch["LogStream"];
|
|
10739
|
+
return { cloudWatch: cw };
|
|
10740
|
+
}
|
|
10741
|
+
}
|
|
10742
|
+
function mapCpuConfigurations(value) {
|
|
10743
|
+
if (!Array.isArray(value)) return void 0;
|
|
10744
|
+
return value.filter(isRecord).map((c) => ({ architecture: c["Architecture"] }));
|
|
10745
|
+
}
|
|
10746
|
+
function mapResources(value) {
|
|
10747
|
+
if (!Array.isArray(value)) return void 0;
|
|
10748
|
+
return value.filter(isRecord).map((r) => Number(r["MinimumMemoryInMiB"])).filter((n) => Number.isFinite(n)).map((minimumMemoryInMiB) => ({ minimumMemoryInMiB }));
|
|
10749
|
+
}
|
|
10750
|
+
/**
|
|
10751
|
+
* Translate the CFn `Hooks` structure (PascalCase keys throughout, all leaf
|
|
10752
|
+
* values are strings/numbers) to the SDK `hooks` shape (camelCase keys). Safe
|
|
10753
|
+
* to lower-case the first character of every key recursively because Hooks
|
|
10754
|
+
* carries no tagged unions and no array-of-record members.
|
|
10755
|
+
*/
|
|
10756
|
+
function mapHooks(value) {
|
|
10757
|
+
if (!isRecord(value)) return void 0;
|
|
10758
|
+
return lowerFirstKeysDeep(value);
|
|
10759
|
+
}
|
|
10760
|
+
/**
|
|
10761
|
+
* Convert a CFn `[{Key, Value}]` list (used by both `Tags` and
|
|
10762
|
+
* `EnvironmentVariables`) to the SDK `Record<string, string>` shape. Returns
|
|
10763
|
+
* `undefined` for an empty / absent list so the request omits the field.
|
|
10764
|
+
*/
|
|
10765
|
+
function mapKeyValueListToRecord(value) {
|
|
10766
|
+
if (!Array.isArray(value)) return void 0;
|
|
10767
|
+
const out = {};
|
|
10768
|
+
for (const entry of value) if (isRecord(entry) && typeof entry["Key"] === "string") out[entry["Key"]] = typeof entry["Value"] === "string" ? entry["Value"] : "";
|
|
10769
|
+
return Object.keys(out).length > 0 ? out : void 0;
|
|
10770
|
+
}
|
|
10771
|
+
function lowerFirstKeysDeep(value) {
|
|
10772
|
+
if (Array.isArray(value)) return value.map(lowerFirstKeysDeep);
|
|
10773
|
+
if (isRecord(value)) {
|
|
10774
|
+
const out = {};
|
|
10775
|
+
for (const [k, v] of Object.entries(value)) out[k.charAt(0).toLowerCase() + k.slice(1)] = lowerFirstKeysDeep(v);
|
|
10776
|
+
return out;
|
|
10777
|
+
}
|
|
10778
|
+
return value;
|
|
10779
|
+
}
|
|
10780
|
+
function isRecord(value) {
|
|
10781
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
10782
|
+
}
|
|
10783
|
+
|
|
10395
10784
|
//#endregion
|
|
10396
10785
|
//#region src/provisioning/providers/dynamodb-table-provider.ts
|
|
10397
10786
|
/**
|
|
@@ -21037,14 +21426,14 @@ var StepFunctionsProvider = class {
|
|
|
21037
21426
|
const tagsToRemove = [];
|
|
21038
21427
|
for (const k of oldMap.keys()) if (!newMap.has(k)) tagsToRemove.push(k);
|
|
21039
21428
|
if (tagsToRemove.length > 0) {
|
|
21040
|
-
await this.getClient().send(new UntagResourceCommand$
|
|
21429
|
+
await this.getClient().send(new UntagResourceCommand$13({
|
|
21041
21430
|
resourceArn: stateMachineArn,
|
|
21042
21431
|
tagKeys: tagsToRemove
|
|
21043
21432
|
}));
|
|
21044
21433
|
this.logger.debug(`Removed ${tagsToRemove.length} tag(s) from SFN state machine ${stateMachineArn}`);
|
|
21045
21434
|
}
|
|
21046
21435
|
if (tagsToAdd.length > 0) {
|
|
21047
|
-
await this.getClient().send(new TagResourceCommand$
|
|
21436
|
+
await this.getClient().send(new TagResourceCommand$13({
|
|
21048
21437
|
resourceArn: stateMachineArn,
|
|
21049
21438
|
tags: tagsToAdd
|
|
21050
21439
|
}));
|
|
@@ -21656,14 +22045,14 @@ var ECSProvider = class {
|
|
|
21656
22045
|
const tagsToRemove = [];
|
|
21657
22046
|
for (const k of oldMap.keys()) if (!newMap.has(k)) tagsToRemove.push(k);
|
|
21658
22047
|
if (tagsToRemove.length > 0) {
|
|
21659
|
-
await this.getClient().send(new UntagResourceCommand$
|
|
22048
|
+
await this.getClient().send(new UntagResourceCommand$14({
|
|
21660
22049
|
resourceArn,
|
|
21661
22050
|
tagKeys: tagsToRemove
|
|
21662
22051
|
}));
|
|
21663
22052
|
this.logger.debug(`Removed ${tagsToRemove.length} tag(s) from ECS resource ${resourceArn}`);
|
|
21664
22053
|
}
|
|
21665
22054
|
if (tagsToAdd.length > 0) {
|
|
21666
|
-
await this.getClient().send(new TagResourceCommand$
|
|
22055
|
+
await this.getClient().send(new TagResourceCommand$14({
|
|
21667
22056
|
resourceArn,
|
|
21668
22057
|
tags: tagsToAdd
|
|
21669
22058
|
}));
|
|
@@ -27075,7 +27464,7 @@ var CognitoUserPoolProvider = class {
|
|
|
27075
27464
|
if (!templatedActive) try {
|
|
27076
27465
|
needsFlip = (await this.getClient().send(new DescribeUserPoolCommand({ UserPoolId: physicalId }))).UserPool?.DeletionProtection === "ACTIVE";
|
|
27077
27466
|
} catch (descError) {
|
|
27078
|
-
if (descError instanceof ResourceNotFoundException$
|
|
27467
|
+
if (descError instanceof ResourceNotFoundException$8) {
|
|
27079
27468
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
27080
27469
|
this.logger.debug(`Cognito User Pool ${physicalId} does not exist, skipping deletion`);
|
|
27081
27470
|
return;
|
|
@@ -27098,7 +27487,7 @@ var CognitoUserPoolProvider = class {
|
|
|
27098
27487
|
await this.getClient().send(new DeleteUserPoolCommand({ UserPoolId: physicalId }));
|
|
27099
27488
|
this.logger.debug(`Successfully deleted Cognito User Pool ${logicalId}`);
|
|
27100
27489
|
} catch (error) {
|
|
27101
|
-
if (error instanceof ResourceNotFoundException$
|
|
27490
|
+
if (error instanceof ResourceNotFoundException$8) {
|
|
27102
27491
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
27103
27492
|
this.logger.debug(`Cognito User Pool ${physicalId} does not exist, skipping deletion`);
|
|
27104
27493
|
return;
|
|
@@ -27131,7 +27520,7 @@ var CognitoUserPoolProvider = class {
|
|
|
27131
27520
|
try {
|
|
27132
27521
|
resp = await this.getClient().send(new DescribeUserPoolCommand({ UserPoolId: physicalId }));
|
|
27133
27522
|
} catch (err) {
|
|
27134
|
-
if (err instanceof ResourceNotFoundException$
|
|
27523
|
+
if (err instanceof ResourceNotFoundException$8) return void 0;
|
|
27135
27524
|
throw err;
|
|
27136
27525
|
}
|
|
27137
27526
|
const pool = resp.UserPool;
|
|
@@ -27205,7 +27594,7 @@ var CognitoUserPoolProvider = class {
|
|
|
27205
27594
|
attributes: {}
|
|
27206
27595
|
};
|
|
27207
27596
|
} catch (err) {
|
|
27208
|
-
if (err instanceof ResourceNotFoundException$
|
|
27597
|
+
if (err instanceof ResourceNotFoundException$8) return null;
|
|
27209
27598
|
throw err;
|
|
27210
27599
|
}
|
|
27211
27600
|
const desiredName = typeof input.properties?.["UserPoolName"] === "string" ? input.properties["UserPoolName"] : void 0;
|
|
@@ -28223,11 +28612,11 @@ var ServiceDiscoveryProvider = class ServiceDiscoveryProvider {
|
|
|
28223
28612
|
const hasAdds = !!newTags && newTags.length > 0;
|
|
28224
28613
|
if (removedKeys.length === 0 && !hasAdds) return;
|
|
28225
28614
|
const arn = await this.resolveNamespaceArn(physicalId);
|
|
28226
|
-
if (removedKeys.length > 0) await this.getClient().send(new UntagResourceCommand$
|
|
28615
|
+
if (removedKeys.length > 0) await this.getClient().send(new UntagResourceCommand$15({
|
|
28227
28616
|
ResourceARN: arn,
|
|
28228
28617
|
TagKeys: removedKeys
|
|
28229
28618
|
}));
|
|
28230
|
-
if (hasAdds) await this.getClient().send(new TagResourceCommand$
|
|
28619
|
+
if (hasAdds) await this.getClient().send(new TagResourceCommand$15({
|
|
28231
28620
|
ResourceARN: arn,
|
|
28232
28621
|
Tags: newTags
|
|
28233
28622
|
}));
|
|
@@ -28863,7 +29252,7 @@ var AppSyncProvider = class {
|
|
|
28863
29252
|
const tagsToAdd = {};
|
|
28864
29253
|
for (const [k, v] of Object.entries(newMap)) if (oldMap[k] !== v) tagsToAdd[k] = v;
|
|
28865
29254
|
if (tagKeysToRemove.length > 0) try {
|
|
28866
|
-
await this.getClient().send(new UntagResourceCommand$
|
|
29255
|
+
await this.getClient().send(new UntagResourceCommand$16({
|
|
28867
29256
|
resourceArn: arn,
|
|
28868
29257
|
tagKeys: tagKeysToRemove
|
|
28869
29258
|
}));
|
|
@@ -28871,7 +29260,7 @@ var AppSyncProvider = class {
|
|
|
28871
29260
|
throw this.wrapUpdateError(error, resourceType, logicalId, apiId, "GraphqlApi (untag)");
|
|
28872
29261
|
}
|
|
28873
29262
|
if (Object.keys(tagsToAdd).length > 0) try {
|
|
28874
|
-
await this.getClient().send(new TagResourceCommand$
|
|
29263
|
+
await this.getClient().send(new TagResourceCommand$16({
|
|
28875
29264
|
resourceArn: arn,
|
|
28876
29265
|
tags: tagsToAdd
|
|
28877
29266
|
}));
|
|
@@ -31316,14 +31705,14 @@ var KMSProvider = class {
|
|
|
31316
31705
|
const tagsToRemove = [];
|
|
31317
31706
|
for (const k of oldMap.keys()) if (!newMap.has(k)) tagsToRemove.push(k);
|
|
31318
31707
|
if (tagsToRemove.length > 0) {
|
|
31319
|
-
await this.getClient().send(new UntagResourceCommand$
|
|
31708
|
+
await this.getClient().send(new UntagResourceCommand$11({
|
|
31320
31709
|
KeyId: keyId,
|
|
31321
31710
|
TagKeys: tagsToRemove
|
|
31322
31711
|
}));
|
|
31323
31712
|
this.logger.debug(`Removed ${tagsToRemove.length} tag(s) from KMS Key ${keyId}`);
|
|
31324
31713
|
}
|
|
31325
31714
|
if (tagsToAdd.length > 0) {
|
|
31326
|
-
await this.getClient().send(new TagResourceCommand$
|
|
31715
|
+
await this.getClient().send(new TagResourceCommand$11({
|
|
31327
31716
|
KeyId: keyId,
|
|
31328
31717
|
Tags: tagsToAdd
|
|
31329
31718
|
}));
|
|
@@ -31919,11 +32308,11 @@ var BudgetsBudgetProvider = class {
|
|
|
31919
32308
|
const removedKeys = oldTags.map((t) => t.Key).filter((k) => {
|
|
31920
32309
|
return typeof k === "string" && !newKeys.has(k);
|
|
31921
32310
|
});
|
|
31922
|
-
if (removedKeys.length > 0) await this.getClient().send(new UntagResourceCommand$
|
|
32311
|
+
if (removedKeys.length > 0) await this.getClient().send(new UntagResourceCommand$17({
|
|
31923
32312
|
ResourceARN: arn,
|
|
31924
32313
|
ResourceTagKeys: removedKeys
|
|
31925
32314
|
}));
|
|
31926
|
-
if (newTags.length > 0) await this.getClient().send(new TagResourceCommand$
|
|
32315
|
+
if (newTags.length > 0) await this.getClient().send(new TagResourceCommand$17({
|
|
31927
32316
|
ResourceARN: arn,
|
|
31928
32317
|
ResourceTags: newTags
|
|
31929
32318
|
}));
|
|
@@ -32206,7 +32595,7 @@ var KinesisStreamProvider = class {
|
|
|
32206
32595
|
}));
|
|
32207
32596
|
this.logger.debug(`Successfully deleted Kinesis stream ${logicalId}`);
|
|
32208
32597
|
} catch (error) {
|
|
32209
|
-
if (error instanceof ResourceNotFoundException$
|
|
32598
|
+
if (error instanceof ResourceNotFoundException$9) {
|
|
32210
32599
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
32211
32600
|
this.logger.debug(`Kinesis stream ${physicalId} does not exist, skipping deletion`);
|
|
32212
32601
|
return;
|
|
@@ -32281,7 +32670,7 @@ var KinesisStreamProvider = class {
|
|
|
32281
32670
|
try {
|
|
32282
32671
|
stream = (await this.getClient().send(new DescribeStreamCommand({ StreamName: physicalId }))).StreamDescription;
|
|
32283
32672
|
} catch (err) {
|
|
32284
|
-
if (err instanceof ResourceNotFoundException$
|
|
32673
|
+
if (err instanceof ResourceNotFoundException$9) return void 0;
|
|
32285
32674
|
throw err;
|
|
32286
32675
|
}
|
|
32287
32676
|
if (!stream) return void 0;
|
|
@@ -32299,7 +32688,7 @@ var KinesisStreamProvider = class {
|
|
|
32299
32688
|
try {
|
|
32300
32689
|
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForStreamCommand({ StreamName: physicalId }))).Tags);
|
|
32301
32690
|
} catch (err) {
|
|
32302
|
-
if (err instanceof ResourceNotFoundException$
|
|
32691
|
+
if (err instanceof ResourceNotFoundException$9) return void 0;
|
|
32303
32692
|
this.logger.debug(`Kinesis ListTagsForStream(${physicalId}) failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
32304
32693
|
}
|
|
32305
32694
|
return result;
|
|
@@ -32313,7 +32702,7 @@ var KinesisStreamProvider = class {
|
|
|
32313
32702
|
attributes: {}
|
|
32314
32703
|
};
|
|
32315
32704
|
} catch (err) {
|
|
32316
|
-
if (err instanceof ResourceNotFoundException$
|
|
32705
|
+
if (err instanceof ResourceNotFoundException$9) return null;
|
|
32317
32706
|
throw err;
|
|
32318
32707
|
}
|
|
32319
32708
|
return null;
|
|
@@ -32492,7 +32881,7 @@ var KinesisStreamConsumerProvider = class {
|
|
|
32492
32881
|
await this.getClient().send(new DeregisterStreamConsumerCommand({ ConsumerARN: physicalId }));
|
|
32493
32882
|
this.logger.debug(`Successfully deregistered Kinesis stream consumer ${logicalId}`);
|
|
32494
32883
|
} catch (error) {
|
|
32495
|
-
if (error instanceof ResourceNotFoundException$
|
|
32884
|
+
if (error instanceof ResourceNotFoundException$9) {
|
|
32496
32885
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
32497
32886
|
this.logger.debug(`Kinesis stream consumer ${physicalId} not found, skipping`);
|
|
32498
32887
|
return;
|
|
@@ -32538,7 +32927,7 @@ var KinesisStreamConsumerProvider = class {
|
|
|
32538
32927
|
try {
|
|
32539
32928
|
desc = (await this.getClient().send(new DescribeStreamConsumerCommand({ ConsumerARN: physicalId }))).ConsumerDescription;
|
|
32540
32929
|
} catch (err) {
|
|
32541
|
-
if (err instanceof ResourceNotFoundException$
|
|
32930
|
+
if (err instanceof ResourceNotFoundException$9) return void 0;
|
|
32542
32931
|
throw err;
|
|
32543
32932
|
}
|
|
32544
32933
|
if (!desc) return void 0;
|
|
@@ -32548,7 +32937,7 @@ var KinesisStreamConsumerProvider = class {
|
|
|
32548
32937
|
try {
|
|
32549
32938
|
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForResourceCommand$15({ ResourceARN: physicalId }))).Tags);
|
|
32550
32939
|
} catch (err) {
|
|
32551
|
-
if (err instanceof ResourceNotFoundException$
|
|
32940
|
+
if (err instanceof ResourceNotFoundException$9) return void 0;
|
|
32552
32941
|
this.logger.debug(`ListTagsForResource(${physicalId}) failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
32553
32942
|
result["Tags"] = [];
|
|
32554
32943
|
}
|
|
@@ -32570,14 +32959,14 @@ var KinesisStreamConsumerProvider = class {
|
|
|
32570
32959
|
const tagsToRemove = [];
|
|
32571
32960
|
for (const k of Object.keys(oldMap)) if (!(k in newMap)) tagsToRemove.push(k);
|
|
32572
32961
|
if (tagsToRemove.length > 0) {
|
|
32573
|
-
await this.getClient().send(new UntagResourceCommand$
|
|
32962
|
+
await this.getClient().send(new UntagResourceCommand$18({
|
|
32574
32963
|
ResourceARN: consumerArn,
|
|
32575
32964
|
TagKeys: tagsToRemove
|
|
32576
32965
|
}));
|
|
32577
32966
|
this.logger.debug(`Removed ${tagsToRemove.length} tag(s) from Kinesis stream consumer ${consumerArn}`);
|
|
32578
32967
|
}
|
|
32579
32968
|
if (Object.keys(tagsToAdd).length > 0) {
|
|
32580
|
-
await this.getClient().send(new TagResourceCommand$
|
|
32969
|
+
await this.getClient().send(new TagResourceCommand$18({
|
|
32581
32970
|
ResourceARN: consumerArn,
|
|
32582
32971
|
Tags: tagsToAdd
|
|
32583
32972
|
}));
|
|
@@ -32754,7 +33143,7 @@ var SchedulerScheduleProvider = class {
|
|
|
32754
33143
|
}));
|
|
32755
33144
|
this.logger.debug(`Deleted Schedule ${logicalId}`);
|
|
32756
33145
|
} catch (error) {
|
|
32757
|
-
if (error instanceof ResourceNotFoundException$
|
|
33146
|
+
if (error instanceof ResourceNotFoundException$10) {
|
|
32758
33147
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
32759
33148
|
this.logger.debug(`Schedule ${logicalId} already deleted (not found), treating as success`);
|
|
32760
33149
|
return;
|
|
@@ -32776,7 +33165,7 @@ var SchedulerScheduleProvider = class {
|
|
|
32776
33165
|
return (await this.getClient().send(new GetScheduleCommand({ Name: physicalId }))).Arn;
|
|
32777
33166
|
} catch (error) {
|
|
32778
33167
|
const cause = error instanceof Error ? error : void 0;
|
|
32779
|
-
const customGroupHint = error instanceof ResourceNotFoundException$
|
|
33168
|
+
const customGroupHint = error instanceof ResourceNotFoundException$10 ? " Schedules in a custom group cannot be looked up by bare name; the Arn is normally served from cdkd state attributes." : "";
|
|
32780
33169
|
throw new ProvisioningError(`Failed to resolve Arn for Schedule ${physicalId}: ${cause?.message ?? String(error)}.${customGroupHint}`, resourceType, physicalId, physicalId, cause);
|
|
32781
33170
|
}
|
|
32782
33171
|
}
|
|
@@ -32806,7 +33195,7 @@ var SchedulerScheduleProvider = class {
|
|
|
32806
33195
|
...response.Target !== void 0 && { Target: response.Target }
|
|
32807
33196
|
};
|
|
32808
33197
|
} catch (error) {
|
|
32809
|
-
if (error instanceof ResourceNotFoundException$
|
|
33198
|
+
if (error instanceof ResourceNotFoundException$10) return;
|
|
32810
33199
|
throw error;
|
|
32811
33200
|
}
|
|
32812
33201
|
}
|
|
@@ -32832,7 +33221,7 @@ var SchedulerScheduleProvider = class {
|
|
|
32832
33221
|
attributes: response.Arn ? { Arn: response.Arn } : {}
|
|
32833
33222
|
};
|
|
32834
33223
|
} catch (error) {
|
|
32835
|
-
if (error instanceof ResourceNotFoundException$
|
|
33224
|
+
if (error instanceof ResourceNotFoundException$10) return null;
|
|
32836
33225
|
throw error;
|
|
32837
33226
|
}
|
|
32838
33227
|
}
|
|
@@ -34194,11 +34583,11 @@ var FSxFileSystemProvider = class {
|
|
|
34194
34583
|
}
|
|
34195
34584
|
const toRemove = [];
|
|
34196
34585
|
for (const key of prev.keys()) if (key !== void 0 && !next.has(key)) toRemove.push(key);
|
|
34197
|
-
if (toSet.length > 0) await this.getClient().send(new TagResourceCommand$
|
|
34586
|
+
if (toSet.length > 0) await this.getClient().send(new TagResourceCommand$19({
|
|
34198
34587
|
ResourceARN: arn,
|
|
34199
34588
|
Tags: toSet
|
|
34200
34589
|
}));
|
|
34201
|
-
if (toRemove.length > 0) await this.getClient().send(new UntagResourceCommand$
|
|
34590
|
+
if (toRemove.length > 0) await this.getClient().send(new UntagResourceCommand$19({
|
|
34202
34591
|
ResourceARN: arn,
|
|
34203
34592
|
TagKeys: toRemove
|
|
34204
34593
|
}));
|
|
@@ -36482,7 +36871,7 @@ var FirehoseProvider = class {
|
|
|
36482
36871
|
await this.getClient().send(new DeleteDeliveryStreamCommand({ DeliveryStreamName: physicalId }));
|
|
36483
36872
|
this.logger.debug(`Successfully deleted Firehose delivery stream ${logicalId}`);
|
|
36484
36873
|
} catch (error) {
|
|
36485
|
-
if (error instanceof ResourceNotFoundException$
|
|
36874
|
+
if (error instanceof ResourceNotFoundException$11) {
|
|
36486
36875
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
36487
36876
|
this.logger.debug(`Firehose delivery stream ${physicalId} does not exist, skipping deletion`);
|
|
36488
36877
|
return;
|
|
@@ -37019,7 +37408,7 @@ var FirehoseProvider = class {
|
|
|
37019
37408
|
try {
|
|
37020
37409
|
desc = (await this.getClient().send(new DescribeDeliveryStreamCommand({ DeliveryStreamName: physicalId }))).DeliveryStreamDescription;
|
|
37021
37410
|
} catch (err) {
|
|
37022
|
-
if (err instanceof ResourceNotFoundException$
|
|
37411
|
+
if (err instanceof ResourceNotFoundException$11) return void 0;
|
|
37023
37412
|
throw err;
|
|
37024
37413
|
}
|
|
37025
37414
|
if (!desc) return void 0;
|
|
@@ -37050,7 +37439,7 @@ var FirehoseProvider = class {
|
|
|
37050
37439
|
try {
|
|
37051
37440
|
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForDeliveryStreamCommand({ DeliveryStreamName: physicalId }))).Tags);
|
|
37052
37441
|
} catch (err) {
|
|
37053
|
-
if (err instanceof ResourceNotFoundException$
|
|
37442
|
+
if (err instanceof ResourceNotFoundException$11) return void 0;
|
|
37054
37443
|
this.logger.debug(`Firehose ListTagsForDeliveryStream(${physicalId}) failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
37055
37444
|
result["Tags"] = [];
|
|
37056
37445
|
}
|
|
@@ -37087,7 +37476,7 @@ var FirehoseProvider = class {
|
|
|
37087
37476
|
attributes: {}
|
|
37088
37477
|
};
|
|
37089
37478
|
} catch (err) {
|
|
37090
|
-
if (err instanceof ResourceNotFoundException$
|
|
37479
|
+
if (err instanceof ResourceNotFoundException$11) return null;
|
|
37091
37480
|
throw err;
|
|
37092
37481
|
}
|
|
37093
37482
|
return null;
|
|
@@ -37829,7 +38218,7 @@ var CodeBuildProvider = class {
|
|
|
37829
38218
|
await this.getClient().send(new DeleteProjectCommand({ name: physicalId }));
|
|
37830
38219
|
this.logger.debug(`Successfully deleted CodeBuild Project ${logicalId}`);
|
|
37831
38220
|
} catch (error) {
|
|
37832
|
-
if (error instanceof ResourceNotFoundException$
|
|
38221
|
+
if (error instanceof ResourceNotFoundException$12) {
|
|
37833
38222
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
37834
38223
|
this.logger.debug(`CodeBuild Project ${physicalId} does not exist, skipping deletion`);
|
|
37835
38224
|
return;
|
|
@@ -37884,7 +38273,7 @@ var CodeBuildProvider = class {
|
|
|
37884
38273
|
try {
|
|
37885
38274
|
project = (await this.getClient().send(new BatchGetProjectsCommand({ names: [physicalId] }))).projects?.[0];
|
|
37886
38275
|
} catch (err) {
|
|
37887
|
-
if (err instanceof ResourceNotFoundException$
|
|
38276
|
+
if (err instanceof ResourceNotFoundException$12) return void 0;
|
|
37888
38277
|
throw err;
|
|
37889
38278
|
}
|
|
37890
38279
|
if (!project) return void 0;
|
|
@@ -38029,7 +38418,7 @@ var CodeBuildProvider = class {
|
|
|
38029
38418
|
attributes: {}
|
|
38030
38419
|
} : null;
|
|
38031
38420
|
} catch (err) {
|
|
38032
|
-
if (err instanceof ResourceNotFoundException$
|
|
38421
|
+
if (err instanceof ResourceNotFoundException$12) return null;
|
|
38033
38422
|
throw err;
|
|
38034
38423
|
}
|
|
38035
38424
|
return null;
|
|
@@ -38269,11 +38658,11 @@ var CodeCommitRepositoryProvider = class {
|
|
|
38269
38658
|
const repoArn = metadata?.Arn;
|
|
38270
38659
|
if (repoArn) {
|
|
38271
38660
|
const removedKeys = Object.keys(oldTagMap).filter((k) => !(k in newTagMap));
|
|
38272
|
-
if (removedKeys.length > 0) await this.getClient().send(new UntagResourceCommand$
|
|
38661
|
+
if (removedKeys.length > 0) await this.getClient().send(new UntagResourceCommand$20({
|
|
38273
38662
|
resourceArn: repoArn,
|
|
38274
38663
|
tagKeys: removedKeys
|
|
38275
38664
|
}));
|
|
38276
|
-
if (Object.keys(newTagMap).length > 0) await this.getClient().send(new TagResourceCommand$
|
|
38665
|
+
if (Object.keys(newTagMap).length > 0) await this.getClient().send(new TagResourceCommand$20({
|
|
38277
38666
|
resourceArn: repoArn,
|
|
38278
38667
|
tags: newTagMap
|
|
38279
38668
|
}));
|
|
@@ -38653,7 +39042,7 @@ var DLMLifecyclePolicyProvider = class {
|
|
|
38653
39042
|
if (tagsChanged && arn) {
|
|
38654
39043
|
const removedKeys = Object.keys(oldTags).filter((k) => !(k in newTags));
|
|
38655
39044
|
if (removedKeys.length > 0) {
|
|
38656
|
-
await this.getClient().send(new UntagResourceCommand$
|
|
39045
|
+
await this.getClient().send(new UntagResourceCommand$21({
|
|
38657
39046
|
ResourceArn: arn,
|
|
38658
39047
|
TagKeys: removedKeys
|
|
38659
39048
|
}));
|
|
@@ -38662,7 +39051,7 @@ var DLMLifecyclePolicyProvider = class {
|
|
|
38662
39051
|
const tagsToAdd = {};
|
|
38663
39052
|
for (const [k, v] of Object.entries(newTags)) if (oldTags[k] !== v) tagsToAdd[k] = v;
|
|
38664
39053
|
if (Object.keys(tagsToAdd).length > 0) {
|
|
38665
|
-
await this.getClient().send(new TagResourceCommand$
|
|
39054
|
+
await this.getClient().send(new TagResourceCommand$21({
|
|
38666
39055
|
ResourceArn: arn,
|
|
38667
39056
|
Tags: tagsToAdd
|
|
38668
39057
|
}));
|
|
@@ -38686,7 +39075,7 @@ var DLMLifecyclePolicyProvider = class {
|
|
|
38686
39075
|
await this.getClient().send(new DeleteLifecyclePolicyCommand$1({ PolicyId: physicalId }));
|
|
38687
39076
|
this.logger.debug(`Successfully deleted DLM Lifecycle Policy ${logicalId}`);
|
|
38688
39077
|
} catch (error) {
|
|
38689
|
-
if (error instanceof ResourceNotFoundException$
|
|
39078
|
+
if (error instanceof ResourceNotFoundException$13) {
|
|
38690
39079
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
38691
39080
|
this.logger.debug(`DLM Lifecycle Policy ${physicalId} does not exist, skipping deletion`);
|
|
38692
39081
|
return;
|
|
@@ -38737,7 +39126,7 @@ var DLMLifecyclePolicyProvider = class {
|
|
|
38737
39126
|
Tags: normalizeAwsTagsToCfn(policy.Tags)
|
|
38738
39127
|
};
|
|
38739
39128
|
} catch (error) {
|
|
38740
|
-
if (error instanceof ResourceNotFoundException$
|
|
39129
|
+
if (error instanceof ResourceNotFoundException$13) return;
|
|
38741
39130
|
throw error;
|
|
38742
39131
|
}
|
|
38743
39132
|
}
|
|
@@ -38773,7 +39162,7 @@ var DLMLifecyclePolicyProvider = class {
|
|
|
38773
39162
|
attributes: response.Policy.PolicyArn ? { Arn: response.Policy.PolicyArn } : {}
|
|
38774
39163
|
} : null;
|
|
38775
39164
|
} catch (err) {
|
|
38776
|
-
if (err instanceof ResourceNotFoundException$
|
|
39165
|
+
if (err instanceof ResourceNotFoundException$13) return null;
|
|
38777
39166
|
throw err;
|
|
38778
39167
|
}
|
|
38779
39168
|
return null;
|
|
@@ -38853,11 +39242,11 @@ var S3VectorsProvider = class {
|
|
|
38853
39242
|
}
|
|
38854
39243
|
if (!resourceArn) throw new ProvisioningError(`Could not resolve ARN for S3 VectorBucket ${logicalId} (${physicalId}); cannot apply tag update.`, resourceType, logicalId, physicalId);
|
|
38855
39244
|
try {
|
|
38856
|
-
if (Object.keys(toSet).length > 0) await this.getClient().send(new TagResourceCommand$
|
|
39245
|
+
if (Object.keys(toSet).length > 0) await this.getClient().send(new TagResourceCommand$22({
|
|
38857
39246
|
resourceArn,
|
|
38858
39247
|
tags: toSet
|
|
38859
39248
|
}));
|
|
38860
|
-
if (toRemove.length > 0) await this.getClient().send(new UntagResourceCommand$
|
|
39249
|
+
if (toRemove.length > 0) await this.getClient().send(new UntagResourceCommand$22({
|
|
38861
39250
|
resourceArn,
|
|
38862
39251
|
tagKeys: toRemove
|
|
38863
39252
|
}));
|
|
@@ -39749,7 +40138,7 @@ var S3TablesProvider = class {
|
|
|
39749
40138
|
const resourceArn = await this.lookupTableArn(tableBucketARN, namespace, name);
|
|
39750
40139
|
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);
|
|
39751
40140
|
if (removedKeys.length > 0) try {
|
|
39752
|
-
await this.getClient().send(new UntagResourceCommand$
|
|
40141
|
+
await this.getClient().send(new UntagResourceCommand$23({
|
|
39753
40142
|
resourceArn,
|
|
39754
40143
|
tagKeys: removedKeys
|
|
39755
40144
|
}));
|
|
@@ -39758,7 +40147,7 @@ var S3TablesProvider = class {
|
|
|
39758
40147
|
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);
|
|
39759
40148
|
}
|
|
39760
40149
|
if (Object.keys(upserts).length > 0) try {
|
|
39761
|
-
await this.getClient().send(new TagResourceCommand$
|
|
40150
|
+
await this.getClient().send(new TagResourceCommand$23({
|
|
39762
40151
|
resourceArn,
|
|
39763
40152
|
tags: upserts
|
|
39764
40153
|
}));
|
|
@@ -39790,7 +40179,7 @@ var S3TablesProvider = class {
|
|
|
39790
40179
|
if (removedKeys.length === 0 && Object.keys(upserts).length === 0) return;
|
|
39791
40180
|
const resourceArn = physicalId;
|
|
39792
40181
|
if (removedKeys.length > 0) try {
|
|
39793
|
-
await this.getClient().send(new UntagResourceCommand$
|
|
40182
|
+
await this.getClient().send(new UntagResourceCommand$23({
|
|
39794
40183
|
resourceArn,
|
|
39795
40184
|
tagKeys: removedKeys
|
|
39796
40185
|
}));
|
|
@@ -39799,7 +40188,7 @@ var S3TablesProvider = class {
|
|
|
39799
40188
|
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);
|
|
39800
40189
|
}
|
|
39801
40190
|
if (Object.keys(upserts).length > 0) try {
|
|
39802
|
-
await this.getClient().send(new TagResourceCommand$
|
|
40191
|
+
await this.getClient().send(new TagResourceCommand$23({
|
|
39803
40192
|
resourceArn,
|
|
39804
40193
|
tags: upserts
|
|
39805
40194
|
}));
|
|
@@ -39982,11 +40371,11 @@ var ECRProvider = class {
|
|
|
39982
40371
|
if (repoArn) {
|
|
39983
40372
|
const newKeys = new Set((newTags ?? []).map((t) => t.Key).filter((k) => !!k));
|
|
39984
40373
|
const removedKeys = (oldTags ?? []).map((t) => t.Key).filter((k) => !!k && !newKeys.has(k));
|
|
39985
|
-
if (removedKeys.length > 0) await this.getClient().send(new UntagResourceCommand$
|
|
40374
|
+
if (removedKeys.length > 0) await this.getClient().send(new UntagResourceCommand$12({
|
|
39986
40375
|
resourceArn: repoArn,
|
|
39987
40376
|
tagKeys: removedKeys
|
|
39988
40377
|
}));
|
|
39989
|
-
if (newTags && newTags.length > 0) await this.getClient().send(new TagResourceCommand$
|
|
40378
|
+
if (newTags && newTags.length > 0) await this.getClient().send(new TagResourceCommand$12({
|
|
39990
40379
|
resourceArn: repoArn,
|
|
39991
40380
|
tags: newTags
|
|
39992
40381
|
}));
|
|
@@ -41299,6 +41688,7 @@ function registerAllProviders(registry) {
|
|
|
41299
41688
|
registry.register("AWS::Lambda::EventSourceMapping", new LambdaEventSourceMappingProvider());
|
|
41300
41689
|
registry.register("AWS::Lambda::LayerVersion", new LambdaLayerVersionProvider());
|
|
41301
41690
|
registry.register("AWS::Lambda::EventInvokeConfig", new LambdaEventInvokeConfigProvider());
|
|
41691
|
+
registry.register("AWS::Lambda::MicrovmImage", new LambdaMicrovmImageProvider());
|
|
41302
41692
|
registry.register("AWS::DynamoDB::Table", new DynamoDBTableProvider());
|
|
41303
41693
|
registry.register("AWS::DynamoDB::GlobalTable", new DynamoDBGlobalTableProvider());
|
|
41304
41694
|
registry.register("AWS::Logs::LogGroup", new LogsLogGroupProvider());
|
|
@@ -60870,7 +61260,7 @@ function createMigrateCommand() {
|
|
|
60870
61260
|
*/
|
|
60871
61261
|
function buildProgram() {
|
|
60872
61262
|
const program = new Command();
|
|
60873
|
-
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.
|
|
61263
|
+
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.258.0");
|
|
60874
61264
|
program.addCommand(createBootstrapCommand());
|
|
60875
61265
|
program.addCommand(createSynthCommand());
|
|
60876
61266
|
program.addCommand(createListCommand());
|