@go-to-k/cdkd 0.257.4 → 0.259.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 +488 -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.259.0";
|
|
1904
1905
|
}
|
|
1905
1906
|
/**
|
|
1906
1907
|
* Generate a time-sortable unique run id, e.g.
|
|
@@ -10392,6 +10393,418 @@ 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
|
+
/**
|
|
10605
|
+
* Adopt an existing MicroVM image into cdkd state.
|
|
10606
|
+
*
|
|
10607
|
+
* Override-only: the image ARN must be supplied via `--resource
|
|
10608
|
+
* <logicalId>=<arn>`. There is no auto-lookup — MicroVM images have no
|
|
10609
|
+
* `aws:cdk:path` tag (AWS reserves the `aws:` tag prefix) and a bare `Name`
|
|
10610
|
+
* is rejected by `GetMicrovmImage` ("Invalid ARN format"), so the physical id
|
|
10611
|
+
* must be the image ARN. Returns `null` when the image does not exist.
|
|
10612
|
+
*/
|
|
10613
|
+
async import(input) {
|
|
10614
|
+
const arn = input.knownPhysicalId;
|
|
10615
|
+
if (!arn) return null;
|
|
10616
|
+
if (!arn.startsWith("arn:")) throw new Error(`--resource override for ${input.logicalId} must be a MicroVM image ARN (got '${arn}'). A bare image name is not accepted; use the arn:...:microvm-image:... ARN.`);
|
|
10617
|
+
try {
|
|
10618
|
+
await this.client.send(new GetMicrovmImageCommand({ imageIdentifier: arn }));
|
|
10619
|
+
return {
|
|
10620
|
+
physicalId: arn,
|
|
10621
|
+
attributes: { ImageArn: arn }
|
|
10622
|
+
};
|
|
10623
|
+
} catch (error) {
|
|
10624
|
+
if (error instanceof ResourceNotFoundException$7) return null;
|
|
10625
|
+
throw error;
|
|
10626
|
+
}
|
|
10627
|
+
}
|
|
10628
|
+
buildAttributes(imageArn, state, extra) {
|
|
10629
|
+
const attributes = { ImageArn: imageArn };
|
|
10630
|
+
if (state !== void 0) attributes["State"] = state;
|
|
10631
|
+
if (extra.latestActiveImageVersion !== void 0) attributes["LatestActiveImageVersion"] = extra.latestActiveImageVersion;
|
|
10632
|
+
if (extra.latestFailedImageVersion !== void 0) attributes["LatestFailedImageVersion"] = extra.latestFailedImageVersion;
|
|
10633
|
+
if (extra.createdAt !== void 0) attributes["CreatedAt"] = extra.createdAt.toISOString();
|
|
10634
|
+
if (extra.updatedAt !== void 0) attributes["UpdatedAt"] = extra.updatedAt.toISOString();
|
|
10635
|
+
return attributes;
|
|
10636
|
+
}
|
|
10637
|
+
/**
|
|
10638
|
+
* Poll `GetMicrovmImage` until the image reaches a terminal success state
|
|
10639
|
+
* (`CREATED` after create, `CREATED` / `UPDATED` after update). Throws on the
|
|
10640
|
+
* matching failure state (`CREATE_FAILED` / `UPDATE_FAILED`) or on
|
|
10641
|
+
* poll-cap exhaustion.
|
|
10642
|
+
*/
|
|
10643
|
+
async waitForTerminalState(imageArn, logicalId, operation) {
|
|
10644
|
+
this.logger.debug(`Waiting for MicroVM image ${imageArn} to finish ${operation}...`);
|
|
10645
|
+
for (let attempt = 1; attempt <= this.maxPollAttempts; attempt++) {
|
|
10646
|
+
const resp = await this.client.send(new GetMicrovmImageCommand({ imageIdentifier: imageArn }));
|
|
10647
|
+
const state = resp.state;
|
|
10648
|
+
if (state === "CREATED" || state === "UPDATED") {
|
|
10649
|
+
this.logger.debug(`MicroVM image ${imageArn} reached ${state}`);
|
|
10650
|
+
return resp;
|
|
10651
|
+
}
|
|
10652
|
+
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.`);
|
|
10653
|
+
this.logger.debug(`MicroVM image ${imageArn} state: ${state} (attempt ${attempt}/${this.maxPollAttempts})`);
|
|
10654
|
+
await sleep$2(this.pollIntervalMs);
|
|
10655
|
+
}
|
|
10656
|
+
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.`);
|
|
10657
|
+
}
|
|
10658
|
+
/**
|
|
10659
|
+
* Poll `GetMicrovmImage` until it 404s (image fully deleted). Throws on
|
|
10660
|
+
* `DELETE_FAILED` or poll-cap exhaustion.
|
|
10661
|
+
*/
|
|
10662
|
+
async waitForDeleted(imageArn, logicalId) {
|
|
10663
|
+
for (let attempt = 1; attempt <= this.maxPollAttempts; attempt++) {
|
|
10664
|
+
let resp;
|
|
10665
|
+
try {
|
|
10666
|
+
resp = await this.client.send(new GetMicrovmImageCommand({ imageIdentifier: imageArn }));
|
|
10667
|
+
} catch (error) {
|
|
10668
|
+
if (error instanceof ResourceNotFoundException$7) return;
|
|
10669
|
+
throw error;
|
|
10670
|
+
}
|
|
10671
|
+
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.`);
|
|
10672
|
+
this.logger.debug(`MicroVM image ${imageArn} state: ${resp.state} (delete attempt ${attempt}/${this.maxPollAttempts})`);
|
|
10673
|
+
await sleep$2(this.pollIntervalMs);
|
|
10674
|
+
}
|
|
10675
|
+
throw new Error(`MicroVM image ${logicalId} (${imageArn}) was not fully deleted within ${this.maxPollAttempts * this.pollIntervalMs / 1e3}s.`);
|
|
10676
|
+
}
|
|
10677
|
+
/**
|
|
10678
|
+
* Reconcile the resource's tags to the desired set via TagResource /
|
|
10679
|
+
* UntagResource (diff of the CFn `Tags` list, old vs new). Tags are NOT a
|
|
10680
|
+
* field on UpdateMicrovmImage, so this is the only way a tag change reaches
|
|
10681
|
+
* AWS on update — and it applies without an image rebuild.
|
|
10682
|
+
*/
|
|
10683
|
+
async reconcileTags(physicalId, newTags, oldTags) {
|
|
10684
|
+
const newMap = mapKeyValueListToRecord(newTags) ?? {};
|
|
10685
|
+
const oldMap = mapKeyValueListToRecord(oldTags) ?? {};
|
|
10686
|
+
const keysToRemove = Object.keys(oldMap).filter((k) => !(k in newMap));
|
|
10687
|
+
const tagsToAdd = {};
|
|
10688
|
+
for (const [k, v] of Object.entries(newMap)) if (oldMap[k] !== v) tagsToAdd[k] = v;
|
|
10689
|
+
if (keysToRemove.length > 0) await this.client.send(new UntagResourceCommand$10({
|
|
10690
|
+
Resource: physicalId,
|
|
10691
|
+
TagKeys: keysToRemove
|
|
10692
|
+
}));
|
|
10693
|
+
if (Object.keys(tagsToAdd).length > 0) await this.client.send(new TagResourceCommand$10({
|
|
10694
|
+
Resource: physicalId,
|
|
10695
|
+
Tags: tagsToAdd
|
|
10696
|
+
}));
|
|
10697
|
+
}
|
|
10698
|
+
wrapError(operation, logicalId, resourceType, physicalId, error) {
|
|
10699
|
+
if (error instanceof ProvisioningError) return error;
|
|
10700
|
+
const cause = error instanceof Error ? error : void 0;
|
|
10701
|
+
return new ProvisioningError(`Failed to ${operation} MicroVM image ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, physicalId, cause);
|
|
10702
|
+
}
|
|
10703
|
+
};
|
|
10704
|
+
/**
|
|
10705
|
+
* CFn property names whose change requires an UpdateMicrovmImage call (an async
|
|
10706
|
+
* image rebuild). Everything the SDK's UpdateMicrovmImage accepts EXCEPT tags
|
|
10707
|
+
* (which reconcile out-of-band via TagResource / UntagResource) and Name
|
|
10708
|
+
* (create-only). A change limited to `Tags` skips the rebuild.
|
|
10709
|
+
*/
|
|
10710
|
+
const BUILD_AFFECTING_CFN_KEYS = [
|
|
10711
|
+
"BaseImageArn",
|
|
10712
|
+
"BaseImageVersion",
|
|
10713
|
+
"BuildRoleArn",
|
|
10714
|
+
"Description",
|
|
10715
|
+
"CodeArtifact",
|
|
10716
|
+
"Logging",
|
|
10717
|
+
"EgressNetworkConnectors",
|
|
10718
|
+
"CpuConfigurations",
|
|
10719
|
+
"Resources",
|
|
10720
|
+
"AdditionalOsCapabilities",
|
|
10721
|
+
"Hooks",
|
|
10722
|
+
"EnvironmentVariables"
|
|
10723
|
+
];
|
|
10724
|
+
function sleep$2(ms) {
|
|
10725
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
10726
|
+
}
|
|
10727
|
+
/**
|
|
10728
|
+
* Build the optional create/update input fields shared by both operations,
|
|
10729
|
+
* translating each from its CloudFormation-schema shape to the SDK shape.
|
|
10730
|
+
* Only defined fields are included so the request never carries `undefined`.
|
|
10731
|
+
*/
|
|
10732
|
+
function buildCommonImageInput(properties) {
|
|
10733
|
+
const input = {};
|
|
10734
|
+
if (typeof properties["BaseImageVersion"] === "string") input.baseImageVersion = properties["BaseImageVersion"];
|
|
10735
|
+
if (typeof properties["Description"] === "string") input.description = properties["Description"];
|
|
10736
|
+
const logging = mapLogging(properties["Logging"]);
|
|
10737
|
+
if (logging) input.logging = logging;
|
|
10738
|
+
if (Array.isArray(properties["EgressNetworkConnectors"])) input.egressNetworkConnectors = properties["EgressNetworkConnectors"];
|
|
10739
|
+
const cpuConfigurations = mapCpuConfigurations(properties["CpuConfigurations"]);
|
|
10740
|
+
if (cpuConfigurations) input.cpuConfigurations = cpuConfigurations;
|
|
10741
|
+
const resources = mapResources(properties["Resources"]);
|
|
10742
|
+
if (resources) input.resources = resources;
|
|
10743
|
+
if (Array.isArray(properties["AdditionalOsCapabilities"])) input.additionalOsCapabilities = properties["AdditionalOsCapabilities"];
|
|
10744
|
+
const hooks = mapHooks(properties["Hooks"]);
|
|
10745
|
+
if (hooks) input.hooks = hooks;
|
|
10746
|
+
const environmentVariables = mapKeyValueListToRecord(properties["EnvironmentVariables"]);
|
|
10747
|
+
if (environmentVariables) input.environmentVariables = environmentVariables;
|
|
10748
|
+
return input;
|
|
10749
|
+
}
|
|
10750
|
+
function mapCodeArtifact(value) {
|
|
10751
|
+
if (!isRecord(value)) return void 0;
|
|
10752
|
+
const uri = value["Uri"];
|
|
10753
|
+
return typeof uri === "string" ? { uri } : void 0;
|
|
10754
|
+
}
|
|
10755
|
+
function mapLogging(value) {
|
|
10756
|
+
if (!isRecord(value)) return void 0;
|
|
10757
|
+
if (value["Disabled"] === true) return { disabled: {} };
|
|
10758
|
+
const cloudWatch = value["CloudWatch"];
|
|
10759
|
+
if (isRecord(cloudWatch)) {
|
|
10760
|
+
const cw = {};
|
|
10761
|
+
if (typeof cloudWatch["LogGroup"] === "string") cw.logGroup = cloudWatch["LogGroup"];
|
|
10762
|
+
if (typeof cloudWatch["LogStream"] === "string") cw.logStream = cloudWatch["LogStream"];
|
|
10763
|
+
return { cloudWatch: cw };
|
|
10764
|
+
}
|
|
10765
|
+
}
|
|
10766
|
+
function mapCpuConfigurations(value) {
|
|
10767
|
+
if (!Array.isArray(value)) return void 0;
|
|
10768
|
+
return value.filter(isRecord).map((c) => ({ architecture: c["Architecture"] }));
|
|
10769
|
+
}
|
|
10770
|
+
function mapResources(value) {
|
|
10771
|
+
if (!Array.isArray(value)) return void 0;
|
|
10772
|
+
return value.filter(isRecord).map((r) => Number(r["MinimumMemoryInMiB"])).filter((n) => Number.isFinite(n)).map((minimumMemoryInMiB) => ({ minimumMemoryInMiB }));
|
|
10773
|
+
}
|
|
10774
|
+
/**
|
|
10775
|
+
* Translate the CFn `Hooks` structure (PascalCase keys throughout, all leaf
|
|
10776
|
+
* values are strings/numbers) to the SDK `hooks` shape (camelCase keys). Safe
|
|
10777
|
+
* to lower-case the first character of every key recursively because Hooks
|
|
10778
|
+
* carries no tagged unions and no array-of-record members.
|
|
10779
|
+
*/
|
|
10780
|
+
function mapHooks(value) {
|
|
10781
|
+
if (!isRecord(value)) return void 0;
|
|
10782
|
+
return lowerFirstKeysDeep(value);
|
|
10783
|
+
}
|
|
10784
|
+
/**
|
|
10785
|
+
* Convert a CFn `[{Key, Value}]` list (used by both `Tags` and
|
|
10786
|
+
* `EnvironmentVariables`) to the SDK `Record<string, string>` shape. Returns
|
|
10787
|
+
* `undefined` for an empty / absent list so the request omits the field.
|
|
10788
|
+
*/
|
|
10789
|
+
function mapKeyValueListToRecord(value) {
|
|
10790
|
+
if (!Array.isArray(value)) return void 0;
|
|
10791
|
+
const out = {};
|
|
10792
|
+
for (const entry of value) if (isRecord(entry) && typeof entry["Key"] === "string") out[entry["Key"]] = typeof entry["Value"] === "string" ? entry["Value"] : "";
|
|
10793
|
+
return Object.keys(out).length > 0 ? out : void 0;
|
|
10794
|
+
}
|
|
10795
|
+
function lowerFirstKeysDeep(value) {
|
|
10796
|
+
if (Array.isArray(value)) return value.map(lowerFirstKeysDeep);
|
|
10797
|
+
if (isRecord(value)) {
|
|
10798
|
+
const out = {};
|
|
10799
|
+
for (const [k, v] of Object.entries(value)) out[k.charAt(0).toLowerCase() + k.slice(1)] = lowerFirstKeysDeep(v);
|
|
10800
|
+
return out;
|
|
10801
|
+
}
|
|
10802
|
+
return value;
|
|
10803
|
+
}
|
|
10804
|
+
function isRecord(value) {
|
|
10805
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
10806
|
+
}
|
|
10807
|
+
|
|
10395
10808
|
//#endregion
|
|
10396
10809
|
//#region src/provisioning/providers/dynamodb-table-provider.ts
|
|
10397
10810
|
/**
|
|
@@ -21037,14 +21450,14 @@ var StepFunctionsProvider = class {
|
|
|
21037
21450
|
const tagsToRemove = [];
|
|
21038
21451
|
for (const k of oldMap.keys()) if (!newMap.has(k)) tagsToRemove.push(k);
|
|
21039
21452
|
if (tagsToRemove.length > 0) {
|
|
21040
|
-
await this.getClient().send(new UntagResourceCommand$
|
|
21453
|
+
await this.getClient().send(new UntagResourceCommand$13({
|
|
21041
21454
|
resourceArn: stateMachineArn,
|
|
21042
21455
|
tagKeys: tagsToRemove
|
|
21043
21456
|
}));
|
|
21044
21457
|
this.logger.debug(`Removed ${tagsToRemove.length} tag(s) from SFN state machine ${stateMachineArn}`);
|
|
21045
21458
|
}
|
|
21046
21459
|
if (tagsToAdd.length > 0) {
|
|
21047
|
-
await this.getClient().send(new TagResourceCommand$
|
|
21460
|
+
await this.getClient().send(new TagResourceCommand$13({
|
|
21048
21461
|
resourceArn: stateMachineArn,
|
|
21049
21462
|
tags: tagsToAdd
|
|
21050
21463
|
}));
|
|
@@ -21656,14 +22069,14 @@ var ECSProvider = class {
|
|
|
21656
22069
|
const tagsToRemove = [];
|
|
21657
22070
|
for (const k of oldMap.keys()) if (!newMap.has(k)) tagsToRemove.push(k);
|
|
21658
22071
|
if (tagsToRemove.length > 0) {
|
|
21659
|
-
await this.getClient().send(new UntagResourceCommand$
|
|
22072
|
+
await this.getClient().send(new UntagResourceCommand$14({
|
|
21660
22073
|
resourceArn,
|
|
21661
22074
|
tagKeys: tagsToRemove
|
|
21662
22075
|
}));
|
|
21663
22076
|
this.logger.debug(`Removed ${tagsToRemove.length} tag(s) from ECS resource ${resourceArn}`);
|
|
21664
22077
|
}
|
|
21665
22078
|
if (tagsToAdd.length > 0) {
|
|
21666
|
-
await this.getClient().send(new TagResourceCommand$
|
|
22079
|
+
await this.getClient().send(new TagResourceCommand$14({
|
|
21667
22080
|
resourceArn,
|
|
21668
22081
|
tags: tagsToAdd
|
|
21669
22082
|
}));
|
|
@@ -27075,7 +27488,7 @@ var CognitoUserPoolProvider = class {
|
|
|
27075
27488
|
if (!templatedActive) try {
|
|
27076
27489
|
needsFlip = (await this.getClient().send(new DescribeUserPoolCommand({ UserPoolId: physicalId }))).UserPool?.DeletionProtection === "ACTIVE";
|
|
27077
27490
|
} catch (descError) {
|
|
27078
|
-
if (descError instanceof ResourceNotFoundException$
|
|
27491
|
+
if (descError instanceof ResourceNotFoundException$8) {
|
|
27079
27492
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
27080
27493
|
this.logger.debug(`Cognito User Pool ${physicalId} does not exist, skipping deletion`);
|
|
27081
27494
|
return;
|
|
@@ -27098,7 +27511,7 @@ var CognitoUserPoolProvider = class {
|
|
|
27098
27511
|
await this.getClient().send(new DeleteUserPoolCommand({ UserPoolId: physicalId }));
|
|
27099
27512
|
this.logger.debug(`Successfully deleted Cognito User Pool ${logicalId}`);
|
|
27100
27513
|
} catch (error) {
|
|
27101
|
-
if (error instanceof ResourceNotFoundException$
|
|
27514
|
+
if (error instanceof ResourceNotFoundException$8) {
|
|
27102
27515
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
27103
27516
|
this.logger.debug(`Cognito User Pool ${physicalId} does not exist, skipping deletion`);
|
|
27104
27517
|
return;
|
|
@@ -27131,7 +27544,7 @@ var CognitoUserPoolProvider = class {
|
|
|
27131
27544
|
try {
|
|
27132
27545
|
resp = await this.getClient().send(new DescribeUserPoolCommand({ UserPoolId: physicalId }));
|
|
27133
27546
|
} catch (err) {
|
|
27134
|
-
if (err instanceof ResourceNotFoundException$
|
|
27547
|
+
if (err instanceof ResourceNotFoundException$8) return void 0;
|
|
27135
27548
|
throw err;
|
|
27136
27549
|
}
|
|
27137
27550
|
const pool = resp.UserPool;
|
|
@@ -27205,7 +27618,7 @@ var CognitoUserPoolProvider = class {
|
|
|
27205
27618
|
attributes: {}
|
|
27206
27619
|
};
|
|
27207
27620
|
} catch (err) {
|
|
27208
|
-
if (err instanceof ResourceNotFoundException$
|
|
27621
|
+
if (err instanceof ResourceNotFoundException$8) return null;
|
|
27209
27622
|
throw err;
|
|
27210
27623
|
}
|
|
27211
27624
|
const desiredName = typeof input.properties?.["UserPoolName"] === "string" ? input.properties["UserPoolName"] : void 0;
|
|
@@ -28223,11 +28636,11 @@ var ServiceDiscoveryProvider = class ServiceDiscoveryProvider {
|
|
|
28223
28636
|
const hasAdds = !!newTags && newTags.length > 0;
|
|
28224
28637
|
if (removedKeys.length === 0 && !hasAdds) return;
|
|
28225
28638
|
const arn = await this.resolveNamespaceArn(physicalId);
|
|
28226
|
-
if (removedKeys.length > 0) await this.getClient().send(new UntagResourceCommand$
|
|
28639
|
+
if (removedKeys.length > 0) await this.getClient().send(new UntagResourceCommand$15({
|
|
28227
28640
|
ResourceARN: arn,
|
|
28228
28641
|
TagKeys: removedKeys
|
|
28229
28642
|
}));
|
|
28230
|
-
if (hasAdds) await this.getClient().send(new TagResourceCommand$
|
|
28643
|
+
if (hasAdds) await this.getClient().send(new TagResourceCommand$15({
|
|
28231
28644
|
ResourceARN: arn,
|
|
28232
28645
|
Tags: newTags
|
|
28233
28646
|
}));
|
|
@@ -28863,7 +29276,7 @@ var AppSyncProvider = class {
|
|
|
28863
29276
|
const tagsToAdd = {};
|
|
28864
29277
|
for (const [k, v] of Object.entries(newMap)) if (oldMap[k] !== v) tagsToAdd[k] = v;
|
|
28865
29278
|
if (tagKeysToRemove.length > 0) try {
|
|
28866
|
-
await this.getClient().send(new UntagResourceCommand$
|
|
29279
|
+
await this.getClient().send(new UntagResourceCommand$16({
|
|
28867
29280
|
resourceArn: arn,
|
|
28868
29281
|
tagKeys: tagKeysToRemove
|
|
28869
29282
|
}));
|
|
@@ -28871,7 +29284,7 @@ var AppSyncProvider = class {
|
|
|
28871
29284
|
throw this.wrapUpdateError(error, resourceType, logicalId, apiId, "GraphqlApi (untag)");
|
|
28872
29285
|
}
|
|
28873
29286
|
if (Object.keys(tagsToAdd).length > 0) try {
|
|
28874
|
-
await this.getClient().send(new TagResourceCommand$
|
|
29287
|
+
await this.getClient().send(new TagResourceCommand$16({
|
|
28875
29288
|
resourceArn: arn,
|
|
28876
29289
|
tags: tagsToAdd
|
|
28877
29290
|
}));
|
|
@@ -31316,14 +31729,14 @@ var KMSProvider = class {
|
|
|
31316
31729
|
const tagsToRemove = [];
|
|
31317
31730
|
for (const k of oldMap.keys()) if (!newMap.has(k)) tagsToRemove.push(k);
|
|
31318
31731
|
if (tagsToRemove.length > 0) {
|
|
31319
|
-
await this.getClient().send(new UntagResourceCommand$
|
|
31732
|
+
await this.getClient().send(new UntagResourceCommand$11({
|
|
31320
31733
|
KeyId: keyId,
|
|
31321
31734
|
TagKeys: tagsToRemove
|
|
31322
31735
|
}));
|
|
31323
31736
|
this.logger.debug(`Removed ${tagsToRemove.length} tag(s) from KMS Key ${keyId}`);
|
|
31324
31737
|
}
|
|
31325
31738
|
if (tagsToAdd.length > 0) {
|
|
31326
|
-
await this.getClient().send(new TagResourceCommand$
|
|
31739
|
+
await this.getClient().send(new TagResourceCommand$11({
|
|
31327
31740
|
KeyId: keyId,
|
|
31328
31741
|
Tags: tagsToAdd
|
|
31329
31742
|
}));
|
|
@@ -31919,11 +32332,11 @@ var BudgetsBudgetProvider = class {
|
|
|
31919
32332
|
const removedKeys = oldTags.map((t) => t.Key).filter((k) => {
|
|
31920
32333
|
return typeof k === "string" && !newKeys.has(k);
|
|
31921
32334
|
});
|
|
31922
|
-
if (removedKeys.length > 0) await this.getClient().send(new UntagResourceCommand$
|
|
32335
|
+
if (removedKeys.length > 0) await this.getClient().send(new UntagResourceCommand$17({
|
|
31923
32336
|
ResourceARN: arn,
|
|
31924
32337
|
ResourceTagKeys: removedKeys
|
|
31925
32338
|
}));
|
|
31926
|
-
if (newTags.length > 0) await this.getClient().send(new TagResourceCommand$
|
|
32339
|
+
if (newTags.length > 0) await this.getClient().send(new TagResourceCommand$17({
|
|
31927
32340
|
ResourceARN: arn,
|
|
31928
32341
|
ResourceTags: newTags
|
|
31929
32342
|
}));
|
|
@@ -32206,7 +32619,7 @@ var KinesisStreamProvider = class {
|
|
|
32206
32619
|
}));
|
|
32207
32620
|
this.logger.debug(`Successfully deleted Kinesis stream ${logicalId}`);
|
|
32208
32621
|
} catch (error) {
|
|
32209
|
-
if (error instanceof ResourceNotFoundException$
|
|
32622
|
+
if (error instanceof ResourceNotFoundException$9) {
|
|
32210
32623
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
32211
32624
|
this.logger.debug(`Kinesis stream ${physicalId} does not exist, skipping deletion`);
|
|
32212
32625
|
return;
|
|
@@ -32281,7 +32694,7 @@ var KinesisStreamProvider = class {
|
|
|
32281
32694
|
try {
|
|
32282
32695
|
stream = (await this.getClient().send(new DescribeStreamCommand({ StreamName: physicalId }))).StreamDescription;
|
|
32283
32696
|
} catch (err) {
|
|
32284
|
-
if (err instanceof ResourceNotFoundException$
|
|
32697
|
+
if (err instanceof ResourceNotFoundException$9) return void 0;
|
|
32285
32698
|
throw err;
|
|
32286
32699
|
}
|
|
32287
32700
|
if (!stream) return void 0;
|
|
@@ -32299,7 +32712,7 @@ var KinesisStreamProvider = class {
|
|
|
32299
32712
|
try {
|
|
32300
32713
|
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForStreamCommand({ StreamName: physicalId }))).Tags);
|
|
32301
32714
|
} catch (err) {
|
|
32302
|
-
if (err instanceof ResourceNotFoundException$
|
|
32715
|
+
if (err instanceof ResourceNotFoundException$9) return void 0;
|
|
32303
32716
|
this.logger.debug(`Kinesis ListTagsForStream(${physicalId}) failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
32304
32717
|
}
|
|
32305
32718
|
return result;
|
|
@@ -32313,7 +32726,7 @@ var KinesisStreamProvider = class {
|
|
|
32313
32726
|
attributes: {}
|
|
32314
32727
|
};
|
|
32315
32728
|
} catch (err) {
|
|
32316
|
-
if (err instanceof ResourceNotFoundException$
|
|
32729
|
+
if (err instanceof ResourceNotFoundException$9) return null;
|
|
32317
32730
|
throw err;
|
|
32318
32731
|
}
|
|
32319
32732
|
return null;
|
|
@@ -32492,7 +32905,7 @@ var KinesisStreamConsumerProvider = class {
|
|
|
32492
32905
|
await this.getClient().send(new DeregisterStreamConsumerCommand({ ConsumerARN: physicalId }));
|
|
32493
32906
|
this.logger.debug(`Successfully deregistered Kinesis stream consumer ${logicalId}`);
|
|
32494
32907
|
} catch (error) {
|
|
32495
|
-
if (error instanceof ResourceNotFoundException$
|
|
32908
|
+
if (error instanceof ResourceNotFoundException$9) {
|
|
32496
32909
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
32497
32910
|
this.logger.debug(`Kinesis stream consumer ${physicalId} not found, skipping`);
|
|
32498
32911
|
return;
|
|
@@ -32538,7 +32951,7 @@ var KinesisStreamConsumerProvider = class {
|
|
|
32538
32951
|
try {
|
|
32539
32952
|
desc = (await this.getClient().send(new DescribeStreamConsumerCommand({ ConsumerARN: physicalId }))).ConsumerDescription;
|
|
32540
32953
|
} catch (err) {
|
|
32541
|
-
if (err instanceof ResourceNotFoundException$
|
|
32954
|
+
if (err instanceof ResourceNotFoundException$9) return void 0;
|
|
32542
32955
|
throw err;
|
|
32543
32956
|
}
|
|
32544
32957
|
if (!desc) return void 0;
|
|
@@ -32548,7 +32961,7 @@ var KinesisStreamConsumerProvider = class {
|
|
|
32548
32961
|
try {
|
|
32549
32962
|
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForResourceCommand$15({ ResourceARN: physicalId }))).Tags);
|
|
32550
32963
|
} catch (err) {
|
|
32551
|
-
if (err instanceof ResourceNotFoundException$
|
|
32964
|
+
if (err instanceof ResourceNotFoundException$9) return void 0;
|
|
32552
32965
|
this.logger.debug(`ListTagsForResource(${physicalId}) failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
32553
32966
|
result["Tags"] = [];
|
|
32554
32967
|
}
|
|
@@ -32570,14 +32983,14 @@ var KinesisStreamConsumerProvider = class {
|
|
|
32570
32983
|
const tagsToRemove = [];
|
|
32571
32984
|
for (const k of Object.keys(oldMap)) if (!(k in newMap)) tagsToRemove.push(k);
|
|
32572
32985
|
if (tagsToRemove.length > 0) {
|
|
32573
|
-
await this.getClient().send(new UntagResourceCommand$
|
|
32986
|
+
await this.getClient().send(new UntagResourceCommand$18({
|
|
32574
32987
|
ResourceARN: consumerArn,
|
|
32575
32988
|
TagKeys: tagsToRemove
|
|
32576
32989
|
}));
|
|
32577
32990
|
this.logger.debug(`Removed ${tagsToRemove.length} tag(s) from Kinesis stream consumer ${consumerArn}`);
|
|
32578
32991
|
}
|
|
32579
32992
|
if (Object.keys(tagsToAdd).length > 0) {
|
|
32580
|
-
await this.getClient().send(new TagResourceCommand$
|
|
32993
|
+
await this.getClient().send(new TagResourceCommand$18({
|
|
32581
32994
|
ResourceARN: consumerArn,
|
|
32582
32995
|
Tags: tagsToAdd
|
|
32583
32996
|
}));
|
|
@@ -32754,7 +33167,7 @@ var SchedulerScheduleProvider = class {
|
|
|
32754
33167
|
}));
|
|
32755
33168
|
this.logger.debug(`Deleted Schedule ${logicalId}`);
|
|
32756
33169
|
} catch (error) {
|
|
32757
|
-
if (error instanceof ResourceNotFoundException$
|
|
33170
|
+
if (error instanceof ResourceNotFoundException$10) {
|
|
32758
33171
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
32759
33172
|
this.logger.debug(`Schedule ${logicalId} already deleted (not found), treating as success`);
|
|
32760
33173
|
return;
|
|
@@ -32776,7 +33189,7 @@ var SchedulerScheduleProvider = class {
|
|
|
32776
33189
|
return (await this.getClient().send(new GetScheduleCommand({ Name: physicalId }))).Arn;
|
|
32777
33190
|
} catch (error) {
|
|
32778
33191
|
const cause = error instanceof Error ? error : void 0;
|
|
32779
|
-
const customGroupHint = error instanceof ResourceNotFoundException$
|
|
33192
|
+
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
33193
|
throw new ProvisioningError(`Failed to resolve Arn for Schedule ${physicalId}: ${cause?.message ?? String(error)}.${customGroupHint}`, resourceType, physicalId, physicalId, cause);
|
|
32781
33194
|
}
|
|
32782
33195
|
}
|
|
@@ -32806,7 +33219,7 @@ var SchedulerScheduleProvider = class {
|
|
|
32806
33219
|
...response.Target !== void 0 && { Target: response.Target }
|
|
32807
33220
|
};
|
|
32808
33221
|
} catch (error) {
|
|
32809
|
-
if (error instanceof ResourceNotFoundException$
|
|
33222
|
+
if (error instanceof ResourceNotFoundException$10) return;
|
|
32810
33223
|
throw error;
|
|
32811
33224
|
}
|
|
32812
33225
|
}
|
|
@@ -32832,7 +33245,7 @@ var SchedulerScheduleProvider = class {
|
|
|
32832
33245
|
attributes: response.Arn ? { Arn: response.Arn } : {}
|
|
32833
33246
|
};
|
|
32834
33247
|
} catch (error) {
|
|
32835
|
-
if (error instanceof ResourceNotFoundException$
|
|
33248
|
+
if (error instanceof ResourceNotFoundException$10) return null;
|
|
32836
33249
|
throw error;
|
|
32837
33250
|
}
|
|
32838
33251
|
}
|
|
@@ -34194,11 +34607,11 @@ var FSxFileSystemProvider = class {
|
|
|
34194
34607
|
}
|
|
34195
34608
|
const toRemove = [];
|
|
34196
34609
|
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$
|
|
34610
|
+
if (toSet.length > 0) await this.getClient().send(new TagResourceCommand$19({
|
|
34198
34611
|
ResourceARN: arn,
|
|
34199
34612
|
Tags: toSet
|
|
34200
34613
|
}));
|
|
34201
|
-
if (toRemove.length > 0) await this.getClient().send(new UntagResourceCommand$
|
|
34614
|
+
if (toRemove.length > 0) await this.getClient().send(new UntagResourceCommand$19({
|
|
34202
34615
|
ResourceARN: arn,
|
|
34203
34616
|
TagKeys: toRemove
|
|
34204
34617
|
}));
|
|
@@ -36482,7 +36895,7 @@ var FirehoseProvider = class {
|
|
|
36482
36895
|
await this.getClient().send(new DeleteDeliveryStreamCommand({ DeliveryStreamName: physicalId }));
|
|
36483
36896
|
this.logger.debug(`Successfully deleted Firehose delivery stream ${logicalId}`);
|
|
36484
36897
|
} catch (error) {
|
|
36485
|
-
if (error instanceof ResourceNotFoundException$
|
|
36898
|
+
if (error instanceof ResourceNotFoundException$11) {
|
|
36486
36899
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
36487
36900
|
this.logger.debug(`Firehose delivery stream ${physicalId} does not exist, skipping deletion`);
|
|
36488
36901
|
return;
|
|
@@ -37019,7 +37432,7 @@ var FirehoseProvider = class {
|
|
|
37019
37432
|
try {
|
|
37020
37433
|
desc = (await this.getClient().send(new DescribeDeliveryStreamCommand({ DeliveryStreamName: physicalId }))).DeliveryStreamDescription;
|
|
37021
37434
|
} catch (err) {
|
|
37022
|
-
if (err instanceof ResourceNotFoundException$
|
|
37435
|
+
if (err instanceof ResourceNotFoundException$11) return void 0;
|
|
37023
37436
|
throw err;
|
|
37024
37437
|
}
|
|
37025
37438
|
if (!desc) return void 0;
|
|
@@ -37050,7 +37463,7 @@ var FirehoseProvider = class {
|
|
|
37050
37463
|
try {
|
|
37051
37464
|
result["Tags"] = normalizeAwsTagsToCfn((await this.getClient().send(new ListTagsForDeliveryStreamCommand({ DeliveryStreamName: physicalId }))).Tags);
|
|
37052
37465
|
} catch (err) {
|
|
37053
|
-
if (err instanceof ResourceNotFoundException$
|
|
37466
|
+
if (err instanceof ResourceNotFoundException$11) return void 0;
|
|
37054
37467
|
this.logger.debug(`Firehose ListTagsForDeliveryStream(${physicalId}) failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
37055
37468
|
result["Tags"] = [];
|
|
37056
37469
|
}
|
|
@@ -37087,7 +37500,7 @@ var FirehoseProvider = class {
|
|
|
37087
37500
|
attributes: {}
|
|
37088
37501
|
};
|
|
37089
37502
|
} catch (err) {
|
|
37090
|
-
if (err instanceof ResourceNotFoundException$
|
|
37503
|
+
if (err instanceof ResourceNotFoundException$11) return null;
|
|
37091
37504
|
throw err;
|
|
37092
37505
|
}
|
|
37093
37506
|
return null;
|
|
@@ -37829,7 +38242,7 @@ var CodeBuildProvider = class {
|
|
|
37829
38242
|
await this.getClient().send(new DeleteProjectCommand({ name: physicalId }));
|
|
37830
38243
|
this.logger.debug(`Successfully deleted CodeBuild Project ${logicalId}`);
|
|
37831
38244
|
} catch (error) {
|
|
37832
|
-
if (error instanceof ResourceNotFoundException$
|
|
38245
|
+
if (error instanceof ResourceNotFoundException$12) {
|
|
37833
38246
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
37834
38247
|
this.logger.debug(`CodeBuild Project ${physicalId} does not exist, skipping deletion`);
|
|
37835
38248
|
return;
|
|
@@ -37884,7 +38297,7 @@ var CodeBuildProvider = class {
|
|
|
37884
38297
|
try {
|
|
37885
38298
|
project = (await this.getClient().send(new BatchGetProjectsCommand({ names: [physicalId] }))).projects?.[0];
|
|
37886
38299
|
} catch (err) {
|
|
37887
|
-
if (err instanceof ResourceNotFoundException$
|
|
38300
|
+
if (err instanceof ResourceNotFoundException$12) return void 0;
|
|
37888
38301
|
throw err;
|
|
37889
38302
|
}
|
|
37890
38303
|
if (!project) return void 0;
|
|
@@ -38029,7 +38442,7 @@ var CodeBuildProvider = class {
|
|
|
38029
38442
|
attributes: {}
|
|
38030
38443
|
} : null;
|
|
38031
38444
|
} catch (err) {
|
|
38032
|
-
if (err instanceof ResourceNotFoundException$
|
|
38445
|
+
if (err instanceof ResourceNotFoundException$12) return null;
|
|
38033
38446
|
throw err;
|
|
38034
38447
|
}
|
|
38035
38448
|
return null;
|
|
@@ -38269,11 +38682,11 @@ var CodeCommitRepositoryProvider = class {
|
|
|
38269
38682
|
const repoArn = metadata?.Arn;
|
|
38270
38683
|
if (repoArn) {
|
|
38271
38684
|
const removedKeys = Object.keys(oldTagMap).filter((k) => !(k in newTagMap));
|
|
38272
|
-
if (removedKeys.length > 0) await this.getClient().send(new UntagResourceCommand$
|
|
38685
|
+
if (removedKeys.length > 0) await this.getClient().send(new UntagResourceCommand$20({
|
|
38273
38686
|
resourceArn: repoArn,
|
|
38274
38687
|
tagKeys: removedKeys
|
|
38275
38688
|
}));
|
|
38276
|
-
if (Object.keys(newTagMap).length > 0) await this.getClient().send(new TagResourceCommand$
|
|
38689
|
+
if (Object.keys(newTagMap).length > 0) await this.getClient().send(new TagResourceCommand$20({
|
|
38277
38690
|
resourceArn: repoArn,
|
|
38278
38691
|
tags: newTagMap
|
|
38279
38692
|
}));
|
|
@@ -38653,7 +39066,7 @@ var DLMLifecyclePolicyProvider = class {
|
|
|
38653
39066
|
if (tagsChanged && arn) {
|
|
38654
39067
|
const removedKeys = Object.keys(oldTags).filter((k) => !(k in newTags));
|
|
38655
39068
|
if (removedKeys.length > 0) {
|
|
38656
|
-
await this.getClient().send(new UntagResourceCommand$
|
|
39069
|
+
await this.getClient().send(new UntagResourceCommand$21({
|
|
38657
39070
|
ResourceArn: arn,
|
|
38658
39071
|
TagKeys: removedKeys
|
|
38659
39072
|
}));
|
|
@@ -38662,7 +39075,7 @@ var DLMLifecyclePolicyProvider = class {
|
|
|
38662
39075
|
const tagsToAdd = {};
|
|
38663
39076
|
for (const [k, v] of Object.entries(newTags)) if (oldTags[k] !== v) tagsToAdd[k] = v;
|
|
38664
39077
|
if (Object.keys(tagsToAdd).length > 0) {
|
|
38665
|
-
await this.getClient().send(new TagResourceCommand$
|
|
39078
|
+
await this.getClient().send(new TagResourceCommand$21({
|
|
38666
39079
|
ResourceArn: arn,
|
|
38667
39080
|
Tags: tagsToAdd
|
|
38668
39081
|
}));
|
|
@@ -38686,7 +39099,7 @@ var DLMLifecyclePolicyProvider = class {
|
|
|
38686
39099
|
await this.getClient().send(new DeleteLifecyclePolicyCommand$1({ PolicyId: physicalId }));
|
|
38687
39100
|
this.logger.debug(`Successfully deleted DLM Lifecycle Policy ${logicalId}`);
|
|
38688
39101
|
} catch (error) {
|
|
38689
|
-
if (error instanceof ResourceNotFoundException$
|
|
39102
|
+
if (error instanceof ResourceNotFoundException$13) {
|
|
38690
39103
|
assertRegionMatch(await this.getClient().config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
38691
39104
|
this.logger.debug(`DLM Lifecycle Policy ${physicalId} does not exist, skipping deletion`);
|
|
38692
39105
|
return;
|
|
@@ -38737,7 +39150,7 @@ var DLMLifecyclePolicyProvider = class {
|
|
|
38737
39150
|
Tags: normalizeAwsTagsToCfn(policy.Tags)
|
|
38738
39151
|
};
|
|
38739
39152
|
} catch (error) {
|
|
38740
|
-
if (error instanceof ResourceNotFoundException$
|
|
39153
|
+
if (error instanceof ResourceNotFoundException$13) return;
|
|
38741
39154
|
throw error;
|
|
38742
39155
|
}
|
|
38743
39156
|
}
|
|
@@ -38773,7 +39186,7 @@ var DLMLifecyclePolicyProvider = class {
|
|
|
38773
39186
|
attributes: response.Policy.PolicyArn ? { Arn: response.Policy.PolicyArn } : {}
|
|
38774
39187
|
} : null;
|
|
38775
39188
|
} catch (err) {
|
|
38776
|
-
if (err instanceof ResourceNotFoundException$
|
|
39189
|
+
if (err instanceof ResourceNotFoundException$13) return null;
|
|
38777
39190
|
throw err;
|
|
38778
39191
|
}
|
|
38779
39192
|
return null;
|
|
@@ -38853,11 +39266,11 @@ var S3VectorsProvider = class {
|
|
|
38853
39266
|
}
|
|
38854
39267
|
if (!resourceArn) throw new ProvisioningError(`Could not resolve ARN for S3 VectorBucket ${logicalId} (${physicalId}); cannot apply tag update.`, resourceType, logicalId, physicalId);
|
|
38855
39268
|
try {
|
|
38856
|
-
if (Object.keys(toSet).length > 0) await this.getClient().send(new TagResourceCommand$
|
|
39269
|
+
if (Object.keys(toSet).length > 0) await this.getClient().send(new TagResourceCommand$22({
|
|
38857
39270
|
resourceArn,
|
|
38858
39271
|
tags: toSet
|
|
38859
39272
|
}));
|
|
38860
|
-
if (toRemove.length > 0) await this.getClient().send(new UntagResourceCommand$
|
|
39273
|
+
if (toRemove.length > 0) await this.getClient().send(new UntagResourceCommand$22({
|
|
38861
39274
|
resourceArn,
|
|
38862
39275
|
tagKeys: toRemove
|
|
38863
39276
|
}));
|
|
@@ -39749,7 +40162,7 @@ var S3TablesProvider = class {
|
|
|
39749
40162
|
const resourceArn = await this.lookupTableArn(tableBucketARN, namespace, name);
|
|
39750
40163
|
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
40164
|
if (removedKeys.length > 0) try {
|
|
39752
|
-
await this.getClient().send(new UntagResourceCommand$
|
|
40165
|
+
await this.getClient().send(new UntagResourceCommand$23({
|
|
39753
40166
|
resourceArn,
|
|
39754
40167
|
tagKeys: removedKeys
|
|
39755
40168
|
}));
|
|
@@ -39758,7 +40171,7 @@ var S3TablesProvider = class {
|
|
|
39758
40171
|
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
40172
|
}
|
|
39760
40173
|
if (Object.keys(upserts).length > 0) try {
|
|
39761
|
-
await this.getClient().send(new TagResourceCommand$
|
|
40174
|
+
await this.getClient().send(new TagResourceCommand$23({
|
|
39762
40175
|
resourceArn,
|
|
39763
40176
|
tags: upserts
|
|
39764
40177
|
}));
|
|
@@ -39790,7 +40203,7 @@ var S3TablesProvider = class {
|
|
|
39790
40203
|
if (removedKeys.length === 0 && Object.keys(upserts).length === 0) return;
|
|
39791
40204
|
const resourceArn = physicalId;
|
|
39792
40205
|
if (removedKeys.length > 0) try {
|
|
39793
|
-
await this.getClient().send(new UntagResourceCommand$
|
|
40206
|
+
await this.getClient().send(new UntagResourceCommand$23({
|
|
39794
40207
|
resourceArn,
|
|
39795
40208
|
tagKeys: removedKeys
|
|
39796
40209
|
}));
|
|
@@ -39799,7 +40212,7 @@ var S3TablesProvider = class {
|
|
|
39799
40212
|
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
40213
|
}
|
|
39801
40214
|
if (Object.keys(upserts).length > 0) try {
|
|
39802
|
-
await this.getClient().send(new TagResourceCommand$
|
|
40215
|
+
await this.getClient().send(new TagResourceCommand$23({
|
|
39803
40216
|
resourceArn,
|
|
39804
40217
|
tags: upserts
|
|
39805
40218
|
}));
|
|
@@ -39982,11 +40395,11 @@ var ECRProvider = class {
|
|
|
39982
40395
|
if (repoArn) {
|
|
39983
40396
|
const newKeys = new Set((newTags ?? []).map((t) => t.Key).filter((k) => !!k));
|
|
39984
40397
|
const removedKeys = (oldTags ?? []).map((t) => t.Key).filter((k) => !!k && !newKeys.has(k));
|
|
39985
|
-
if (removedKeys.length > 0) await this.getClient().send(new UntagResourceCommand$
|
|
40398
|
+
if (removedKeys.length > 0) await this.getClient().send(new UntagResourceCommand$12({
|
|
39986
40399
|
resourceArn: repoArn,
|
|
39987
40400
|
tagKeys: removedKeys
|
|
39988
40401
|
}));
|
|
39989
|
-
if (newTags && newTags.length > 0) await this.getClient().send(new TagResourceCommand$
|
|
40402
|
+
if (newTags && newTags.length > 0) await this.getClient().send(new TagResourceCommand$12({
|
|
39990
40403
|
resourceArn: repoArn,
|
|
39991
40404
|
tags: newTags
|
|
39992
40405
|
}));
|
|
@@ -41299,6 +41712,7 @@ function registerAllProviders(registry) {
|
|
|
41299
41712
|
registry.register("AWS::Lambda::EventSourceMapping", new LambdaEventSourceMappingProvider());
|
|
41300
41713
|
registry.register("AWS::Lambda::LayerVersion", new LambdaLayerVersionProvider());
|
|
41301
41714
|
registry.register("AWS::Lambda::EventInvokeConfig", new LambdaEventInvokeConfigProvider());
|
|
41715
|
+
registry.register("AWS::Lambda::MicrovmImage", new LambdaMicrovmImageProvider());
|
|
41302
41716
|
registry.register("AWS::DynamoDB::Table", new DynamoDBTableProvider());
|
|
41303
41717
|
registry.register("AWS::DynamoDB::GlobalTable", new DynamoDBGlobalTableProvider());
|
|
41304
41718
|
registry.register("AWS::Logs::LogGroup", new LogsLogGroupProvider());
|
|
@@ -60870,7 +61284,7 @@ function createMigrateCommand() {
|
|
|
60870
61284
|
*/
|
|
60871
61285
|
function buildProgram() {
|
|
60872
61286
|
const program = new Command();
|
|
60873
|
-
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.
|
|
61287
|
+
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.259.0");
|
|
60874
61288
|
program.addCommand(createBootstrapCommand());
|
|
60875
61289
|
program.addCommand(createSynthCommand());
|
|
60876
61290
|
program.addCommand(createListCommand());
|