@go-to-k/cdkd 0.260.8 → 0.260.9

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/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-Dg51mHCV.js";
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-CM5GZI1O.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-rcNqhfPS.js";
4
+ import { t as ASGProvider } from "./asg-provider-GUSV9-p0.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";
@@ -10,7 +10,7 @@ import { CreateQueueCommand, DeleteQueueCommand, GetQueueAttributesCommand, GetQ
10
10
  import { CreateTopicCommand, DeleteTopicCommand, GetSubscriptionAttributesCommand, GetTopicAttributesCommand, ListSubscriptionsByTopicCommand, ListTagsForResourceCommand, ListTopicsCommand, NotFoundException, SNSClient, SetTopicAttributesCommand, SubscribeCommand, TagResourceCommand, UnsubscribeCommand, UntagResourceCommand } from "@aws-sdk/client-sns";
11
11
  import { AddPermissionCommand, CreateEventSourceMappingCommand, CreateFunctionCommand, CreateFunctionUrlConfigCommand, DeleteEventSourceMappingCommand, DeleteFunctionCommand, DeleteFunctionConcurrencyCommand, DeleteFunctionEventInvokeConfigCommand, DeleteFunctionUrlConfigCommand, DeleteLayerVersionCommand, GetEventSourceMappingCommand, GetFunctionCommand, GetFunctionConcurrencyCommand, GetFunctionEventInvokeConfigCommand, GetFunctionRecursionConfigCommand, GetFunctionUrlConfigCommand, GetLayerVersionByArnCommand, GetPolicyCommand as GetPolicyCommand$1, LambdaClient, ListTagsCommand, PublishLayerVersionCommand, PutFunctionConcurrencyCommand, PutFunctionEventInvokeConfigCommand, PutFunctionRecursionConfigCommand, RemovePermissionCommand, ResourceNotFoundException, TagResourceCommand as TagResourceCommand$1, UntagResourceCommand as UntagResourceCommand$1, UpdateEventSourceMappingCommand, UpdateFunctionCodeCommand, UpdateFunctionConfigurationCommand, UpdateFunctionUrlConfigCommand, waitUntilFunctionUpdatedV2 } from "@aws-sdk/client-lambda";
12
12
  import { AssumeRoleCommand, GetCallerIdentityCommand, STSClient } from "@aws-sdk/client-sts";
13
- import { AssociateIamInstanceProfileCommand, AssociateRouteTableCommand, AttachInternetGatewayCommand, AuthorizeSecurityGroupEgressCommand, AuthorizeSecurityGroupIngressCommand, CreateInternetGatewayCommand, CreateNatGatewayCommand, CreateNetworkAclCommand, CreateNetworkAclEntryCommand, CreateRouteCommand, CreateRouteTableCommand, CreateSecurityGroupCommand, CreateSubnetCommand, CreateTagsCommand, CreateVpcCommand, DeleteInternetGatewayCommand, DeleteNatGatewayCommand, DeleteNetworkAclCommand, DeleteNetworkAclEntryCommand, DeleteNetworkInterfaceCommand, DeleteRouteCommand, DeleteRouteTableCommand, DeleteSecurityGroupCommand, DeleteSubnetCommand, DeleteTagsCommand, DeleteVpcCommand, DescribeAvailabilityZonesCommand, DescribeIamInstanceProfileAssociationsCommand, DescribeInstanceAttributeCommand, DescribeInstanceCreditSpecificationsCommand, DescribeInstancesCommand, DescribeInternetGatewaysCommand, DescribeNatGatewaysCommand, DescribeNetworkAclsCommand, DescribeNetworkInterfacesCommand, DescribeRouteTablesCommand, DescribeSecurityGroupsCommand, DescribeSubnetsCommand, DescribeVolumesCommand, DescribeVpcAttributeCommand, DescribeVpcsCommand, DetachInternetGatewayCommand, DisassociateRouteTableCommand, EC2Client, ModifyInstanceAttributeCommand, ModifyInstanceCreditSpecificationCommand, ModifyInstanceMetadataOptionsCommand, ModifySubnetAttributeCommand, ModifyVpcAttributeCommand, MonitorInstancesCommand, ReplaceNetworkAclAssociationCommand, RevokeSecurityGroupEgressCommand, RevokeSecurityGroupIngressCommand, RunInstancesCommand, TerminateInstancesCommand, UnmonitorInstancesCommand, waitUntilInstanceRunning, waitUntilInstanceTerminated, waitUntilNatGatewayAvailable, waitUntilNatGatewayDeleted } from "@aws-sdk/client-ec2";
13
+ import { AllocateAddressCommand, AssociateAddressCommand, AssociateIamInstanceProfileCommand, AssociateRouteTableCommand, AttachInternetGatewayCommand, AuthorizeSecurityGroupEgressCommand, AuthorizeSecurityGroupIngressCommand, CreateInternetGatewayCommand, CreateNatGatewayCommand, CreateNetworkAclCommand, CreateNetworkAclEntryCommand, CreateRouteCommand, CreateRouteTableCommand, CreateSecurityGroupCommand, CreateSubnetCommand, CreateTagsCommand, CreateVpcCommand, DeleteInternetGatewayCommand, DeleteNatGatewayCommand, DeleteNetworkAclCommand, DeleteNetworkAclEntryCommand, DeleteNetworkInterfaceCommand, DeleteRouteCommand, DeleteRouteTableCommand, DeleteSecurityGroupCommand, DeleteSubnetCommand, DeleteTagsCommand, DeleteVpcCommand, DescribeAddressesCommand, DescribeAvailabilityZonesCommand, DescribeIamInstanceProfileAssociationsCommand, DescribeInstanceAttributeCommand, DescribeInstanceCreditSpecificationsCommand, DescribeInstancesCommand, DescribeInternetGatewaysCommand, DescribeNatGatewaysCommand, DescribeNetworkAclsCommand, DescribeNetworkInterfacesCommand, DescribeRouteTablesCommand, DescribeSecurityGroupsCommand, DescribeSubnetsCommand, DescribeVolumesCommand, DescribeVpcAttributeCommand, DescribeVpcsCommand, DetachInternetGatewayCommand, DisassociateAddressCommand, DisassociateRouteTableCommand, EC2Client, ModifyInstanceAttributeCommand, ModifyInstanceCreditSpecificationCommand, ModifyInstanceMetadataOptionsCommand, ModifySubnetAttributeCommand, ModifyVpcAttributeCommand, MonitorInstancesCommand, ReleaseAddressCommand, ReplaceNetworkAclAssociationCommand, RevokeSecurityGroupEgressCommand, RevokeSecurityGroupIngressCommand, RunInstancesCommand, TerminateInstancesCommand, UnmonitorInstancesCommand, waitUntilInstanceRunning, waitUntilInstanceTerminated, waitUntilNatGatewayAvailable, waitUntilNatGatewayDeleted } from "@aws-sdk/client-ec2";
14
14
  import { CreateTableCommand, DeleteResourcePolicyCommand, DeleteTableCommand, DescribeContinuousBackupsCommand, DescribeContributorInsightsCommand, DescribeKinesisStreamingDestinationCommand, DescribeTableCommand, DescribeTimeToLiveCommand, DisableKinesisStreamingDestinationCommand, DynamoDBClient, EnableKinesisStreamingDestinationCommand, GetResourcePolicyCommand, ListTagsOfResourceCommand, PutResourcePolicyCommand, ResourceNotFoundException as ResourceNotFoundException$1, TagResourceCommand as TagResourceCommand$2, UntagResourceCommand as UntagResourceCommand$2, UpdateContinuousBackupsCommand, UpdateContributorInsightsCommand, UpdateTableCommand, UpdateTimeToLiveCommand } from "@aws-sdk/client-dynamodb";
15
15
  import { CloudFormationClient, CreateChangeSetCommand, DeleteChangeSetCommand, DeleteStackCommand, DescribeChangeSetCommand, DescribeStackEventsCommand, DescribeStackResourcesCommand, DescribeStacksCommand, DescribeTypeCommand, ExecuteChangeSetCommand, GetTemplateCommand, UpdateStackCommand, waitUntilChangeSetCreateComplete, waitUntilStackDeleteComplete, waitUntilStackImportComplete, waitUntilStackUpdateComplete } from "@aws-sdk/client-cloudformation";
16
16
  import { APIGatewayClient, CreateAuthorizerCommand, CreateDeploymentCommand, CreateResourceCommand, CreateStageCommand, DeleteAuthorizerCommand, DeleteDeploymentCommand, DeleteMethodCommand, DeleteResourceCommand, DeleteStageCommand, GetAccountCommand, GetAuthorizerCommand, GetDeploymentCommand, GetMethodCommand, GetResourceCommand, GetStageCommand, NotFoundException as NotFoundException$1, PutIntegrationCommand, PutIntegrationResponseCommand, PutMethodCommand, PutMethodResponseCommand, TagResourceCommand as TagResourceCommand$3, UntagResourceCommand as UntagResourceCommand$3, UpdateAccountCommand, UpdateAuthorizerCommand, UpdateMethodCommand, UpdateStageCommand } from "@aws-sdk/client-api-gateway";
@@ -1901,7 +1901,7 @@ const FLUSH_INTERVAL_MS = 2e3;
1901
1901
  const FLUSH_EVENT_THRESHOLD = 50;
1902
1902
  /** Build-time cdkd version, with a dev fallback for non-built contexts. */
1903
1903
  function getCdkdVersion() {
1904
- return "0.260.8";
1904
+ return "0.260.9";
1905
1905
  }
1906
1906
  /**
1907
1907
  * Generate a time-sortable unique run id, e.g.
@@ -15032,6 +15032,13 @@ var EC2Provider = class {
15032
15032
  "Tags"
15033
15033
  ])],
15034
15034
  ["AWS::EC2::InternetGateway", /* @__PURE__ */ new Set(["Tags"])],
15035
+ ["AWS::EC2::EIP", /* @__PURE__ */ new Set([
15036
+ "Domain",
15037
+ "InstanceId",
15038
+ "NetworkBorderGroup",
15039
+ "PublicIpv4Pool",
15040
+ "Tags"
15041
+ ])],
15035
15042
  ["AWS::EC2::VPCGatewayAttachment", /* @__PURE__ */ new Set(["VpcId", "InternetGatewayId"])],
15036
15043
  ["AWS::EC2::NatGateway", /* @__PURE__ */ new Set([
15037
15044
  "AllocationId",
@@ -15111,7 +15118,12 @@ var EC2Provider = class {
15111
15118
  unhandledByDesign = /* @__PURE__ */ new Map([
15112
15119
  ["AWS::EC2::Instance", /* @__PURE__ */ new Map([["ElasticGpuSpecifications", "AWS Elastic GPU end-of-life (announced 2023-11); no replacement API"], ["ElasticInferenceAccelerators", "AWS Elastic Inference end-of-life 2024-04; use AWS Inferentia / Trainium accelerator instance families instead"]])],
15113
15120
  ["AWS::EC2::SecurityGroupIngress", /* @__PURE__ */ new Map([["GroupName", "EC2-Classic-only — use GroupId for VPC security groups (EC2-Classic retired 2022-08-15)"], ["SourceSecurityGroupName", "EC2-Classic-only — use SourceSecurityGroupId for VPC peer security groups (EC2-Classic retired 2022-08-15)"]])],
15114
- ["AWS::EC2::NatGateway", /* @__PURE__ */ new Map([["VpcId", "AWS derives the VPC from SubnetId; the ec2:CreateNatGateway API has no VpcId parameter"]])]
15121
+ ["AWS::EC2::NatGateway", /* @__PURE__ */ new Map([["VpcId", "AWS derives the VPC from SubnetId; the ec2:CreateNatGateway API has no VpcId parameter"]])],
15122
+ ["AWS::EC2::EIP", /* @__PURE__ */ new Map([
15123
+ ["Address", "Bring-your-own-IP: allocating a specific address you own is not yet supported; cdkd allocates an Amazon-owned address"],
15124
+ ["IpamPoolId", "Allocation from an IPAM pool is not yet supported"],
15125
+ ["TransferAddress", "Accepting a transferred Elastic IP is not yet supported (out-of-band EIP transfer flow)"]
15126
+ ])]
15115
15127
  ]);
15116
15128
  constructor() {
15117
15129
  const awsClients = getAwsClients();
@@ -15122,6 +15134,7 @@ var EC2Provider = class {
15122
15134
  case "AWS::EC2::VPC": return this.createVpc(logicalId, resourceType, properties);
15123
15135
  case "AWS::EC2::Subnet": return this.createSubnet(logicalId, resourceType, properties);
15124
15136
  case "AWS::EC2::InternetGateway": return this.createInternetGateway(logicalId, resourceType, properties);
15137
+ case "AWS::EC2::EIP": return this.createEip(logicalId, resourceType, properties);
15125
15138
  case "AWS::EC2::VPCGatewayAttachment": return this.createVpcGatewayAttachment(logicalId, resourceType, properties);
15126
15139
  case "AWS::EC2::NatGateway": return this.createNatGateway(logicalId, resourceType, properties);
15127
15140
  case "AWS::EC2::RouteTable": return this.createRouteTable(logicalId, resourceType, properties);
@@ -15141,6 +15154,7 @@ var EC2Provider = class {
15141
15154
  case "AWS::EC2::VPC": return this.updateVpc(logicalId, physicalId, resourceType, properties, previousProperties);
15142
15155
  case "AWS::EC2::Subnet": return this.updateSubnet(logicalId, physicalId);
15143
15156
  case "AWS::EC2::InternetGateway": return this.updateInternetGateway(logicalId, physicalId);
15157
+ case "AWS::EC2::EIP": return this.updateEip(logicalId, physicalId, properties, previousProperties);
15144
15158
  case "AWS::EC2::VPCGatewayAttachment": return this.updateVpcGatewayAttachment(logicalId, physicalId);
15145
15159
  case "AWS::EC2::NatGateway": return this.updateNatGateway(logicalId, physicalId);
15146
15160
  case "AWS::EC2::RouteTable": return this.updateRouteTable(logicalId, physicalId);
@@ -15160,6 +15174,7 @@ var EC2Provider = class {
15160
15174
  case "AWS::EC2::VPC": return this.deleteVpc(logicalId, physicalId, resourceType, context);
15161
15175
  case "AWS::EC2::Subnet": return this.deleteSubnet(logicalId, physicalId, resourceType, context);
15162
15176
  case "AWS::EC2::InternetGateway": return this.deleteInternetGateway(logicalId, physicalId, resourceType, context);
15177
+ case "AWS::EC2::EIP": return this.deleteEip(logicalId, physicalId, resourceType, context);
15163
15178
  case "AWS::EC2::VPCGatewayAttachment": return this.deleteVpcGatewayAttachment(logicalId, physicalId, resourceType, context);
15164
15179
  case "AWS::EC2::NatGateway": return this.deleteNatGateway(logicalId, physicalId, resourceType, context);
15165
15180
  case "AWS::EC2::RouteTable": return this.deleteRouteTable(logicalId, physicalId, resourceType, context);
@@ -15182,6 +15197,7 @@ var EC2Provider = class {
15182
15197
  case "AWS::EC2::Subnet": return this.getSubnetAttribute(physicalId, attributeName);
15183
15198
  case "AWS::EC2::SecurityGroup": return this.getSecurityGroupAttribute(physicalId, attributeName);
15184
15199
  case "AWS::EC2::Instance": return this.getInstanceAttribute(physicalId, attributeName);
15200
+ case "AWS::EC2::EIP": return this.getEipAttribute(physicalId, attributeName);
15185
15201
  default: return;
15186
15202
  }
15187
15203
  }
@@ -15490,6 +15506,111 @@ var EC2Provider = class {
15490
15506
  throw new ProvisioningError(`Failed to delete InternetGateway ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, physicalId, cause);
15491
15507
  }
15492
15508
  }
15509
+ eipPhysicalId(publicIp, allocationId) {
15510
+ return `${publicIp}|${allocationId}`;
15511
+ }
15512
+ parseEipPhysicalId(physicalId) {
15513
+ if (physicalId.includes("|")) {
15514
+ const [publicIp, allocationId] = physicalId.split("|");
15515
+ return {
15516
+ publicIp,
15517
+ allocationId
15518
+ };
15519
+ }
15520
+ if (physicalId.startsWith("eipalloc-")) return { allocationId: physicalId };
15521
+ return { publicIp: physicalId };
15522
+ }
15523
+ async createEip(logicalId, resourceType, properties) {
15524
+ this.logger.debug(`Creating EIP ${logicalId}`);
15525
+ try {
15526
+ const response = await this.ec2Client.send(new AllocateAddressCommand({
15527
+ Domain: properties["Domain"] ?? "vpc",
15528
+ NetworkBorderGroup: properties["NetworkBorderGroup"],
15529
+ PublicIpv4Pool: properties["PublicIpv4Pool"]
15530
+ }));
15531
+ const allocationId = response.AllocationId;
15532
+ const publicIp = response.PublicIp;
15533
+ await this.applyTags(allocationId, properties, logicalId);
15534
+ const instanceId = properties["InstanceId"];
15535
+ if (instanceId) {
15536
+ await this.ec2Client.send(new AssociateAddressCommand({
15537
+ AllocationId: allocationId,
15538
+ InstanceId: instanceId
15539
+ }));
15540
+ this.logger.debug(`Associated EIP ${logicalId} (${allocationId}) to ${instanceId}`);
15541
+ }
15542
+ this.logger.debug(`Successfully created EIP ${logicalId}: ${allocationId} (${publicIp})`);
15543
+ return {
15544
+ physicalId: this.eipPhysicalId(publicIp, allocationId),
15545
+ attributes: {
15546
+ AllocationId: allocationId,
15547
+ PublicIp: publicIp
15548
+ }
15549
+ };
15550
+ } catch (error) {
15551
+ const cause = error instanceof Error ? error : void 0;
15552
+ throw new ProvisioningError(`Failed to create EIP ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, void 0, cause);
15553
+ }
15554
+ }
15555
+ async updateEip(logicalId, physicalId, properties, previousProperties) {
15556
+ this.logger.debug(`Updating EIP ${logicalId}: ${physicalId}`);
15557
+ const { allocationId } = this.parseEipPhysicalId(physicalId);
15558
+ if (allocationId) {
15559
+ await this.applyTagDiff(allocationId, previousProperties["Tags"], properties["Tags"]);
15560
+ const oldInstanceId = previousProperties["InstanceId"];
15561
+ const newInstanceId = properties["InstanceId"];
15562
+ if (oldInstanceId !== newInstanceId) if (newInstanceId) await this.ec2Client.send(new AssociateAddressCommand({
15563
+ AllocationId: allocationId,
15564
+ InstanceId: newInstanceId,
15565
+ AllowReassociation: true
15566
+ }));
15567
+ else {
15568
+ const associationId = (await this.ec2Client.send(new DescribeAddressesCommand({ AllocationIds: [allocationId] }))).Addresses?.[0]?.AssociationId;
15569
+ if (associationId) await this.ec2Client.send(new DisassociateAddressCommand({ AssociationId: associationId }));
15570
+ }
15571
+ }
15572
+ return {
15573
+ physicalId,
15574
+ wasReplaced: false
15575
+ };
15576
+ }
15577
+ async deleteEip(logicalId, physicalId, resourceType, context) {
15578
+ this.logger.debug(`Deleting EIP ${logicalId}: ${physicalId}`);
15579
+ const parsed = this.parseEipPhysicalId(physicalId);
15580
+ let allocationId = parsed.allocationId;
15581
+ if (!allocationId && parsed.publicIp) {
15582
+ allocationId = (await this.ec2Client.send(new DescribeAddressesCommand({ PublicIps: [parsed.publicIp] }))).Addresses?.[0]?.AllocationId;
15583
+ if (!allocationId) {
15584
+ this.logger.debug(`EIP ${physicalId} not found on lookup, skipping deletion`);
15585
+ return;
15586
+ }
15587
+ }
15588
+ try {
15589
+ await this.withDependencyViolationRetry(() => this.ec2Client.send(new ReleaseAddressCommand({ AllocationId: allocationId })), { description: `ReleaseAddress ${logicalId} (${allocationId})` });
15590
+ this.logger.debug(`Successfully deleted EIP ${logicalId}`);
15591
+ } catch (error) {
15592
+ if (this.isNotFoundError(error)) {
15593
+ assertRegionMatch(await this.ec2Client.config.region(), context?.expectedRegion, resourceType, logicalId, physicalId);
15594
+ this.logger.debug(`EIP ${physicalId} does not exist, skipping deletion`);
15595
+ return;
15596
+ }
15597
+ const cause = error instanceof Error ? error : void 0;
15598
+ throw new ProvisioningError(`Failed to delete EIP ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, physicalId, cause);
15599
+ }
15600
+ }
15601
+ async getEipAttribute(physicalId, attributeName) {
15602
+ const { publicIp, allocationId } = this.parseEipPhysicalId(physicalId);
15603
+ if (attributeName === "AllocationId" && allocationId) return allocationId;
15604
+ if (attributeName === "PublicIp" && publicIp) return publicIp;
15605
+ const filter = allocationId ? { AllocationIds: [allocationId] } : { PublicIps: publicIp ? [publicIp] : [] };
15606
+ const addr = (await this.ec2Client.send(new DescribeAddressesCommand(filter))).Addresses?.[0];
15607
+ if (!addr) return void 0;
15608
+ switch (attributeName) {
15609
+ case "AllocationId": return addr.AllocationId;
15610
+ case "PublicIp": return addr.PublicIp;
15611
+ default: return;
15612
+ }
15613
+ }
15493
15614
  async createVpcGatewayAttachment(logicalId, resourceType, properties) {
15494
15615
  this.logger.debug(`Creating VPCGatewayAttachment ${logicalId}`);
15495
15616
  const vpcId = properties["VpcId"];
@@ -15554,7 +15675,9 @@ var EC2Provider = class {
15554
15675
  this.logger.debug(`Waiting for NatGateway ${natGatewayId} to reach available state...`);
15555
15676
  await waitUntilNatGatewayAvailable({
15556
15677
  client: this.ec2Client,
15557
- maxWaitTime: 900
15678
+ maxWaitTime: 900,
15679
+ minDelay: 5,
15680
+ maxDelay: 15
15558
15681
  }, { NatGatewayIds: [natGatewayId] });
15559
15682
  this.logger.debug(`NatGateway ${natGatewayId} is available`);
15560
15683
  } else this.logger.debug(`NatGateway ${natGatewayId} created (skipping available-state wait per --no-wait)`);
@@ -15588,7 +15711,9 @@ var EC2Provider = class {
15588
15711
  try {
15589
15712
  await waitUntilNatGatewayDeleted({
15590
15713
  client: this.ec2Client,
15591
- maxWaitTime: 900
15714
+ maxWaitTime: 900,
15715
+ minDelay: 5,
15716
+ maxDelay: 15
15592
15717
  }, { NatGatewayIds: [physicalId] });
15593
15718
  } catch (error) {
15594
15719
  this.logger.warn(`Wait for NatGateway ${physicalId} deletion did not complete cleanly: ${error instanceof Error ? error.message : String(error)} — proceeding with downstream delete steps`);
@@ -15996,7 +16121,9 @@ var EC2Provider = class {
15996
16121
  this.logger.debug(`Waiting for instance ${instanceId} to be running...`);
15997
16122
  await waitUntilInstanceRunning({
15998
16123
  client: this.ec2Client,
15999
- maxWaitTime: 300
16124
+ maxWaitTime: 300,
16125
+ minDelay: 5,
16126
+ maxDelay: 15
16000
16127
  }, { InstanceIds: [instanceId] });
16001
16128
  if (iamInstanceProfile) await this.ensureIamInstanceProfileAssociated(instanceId, iamInstanceProfile.arn, iamInstanceProfile.name, logicalId);
16002
16129
  const runningInstance = (await this.ec2Client.send(new DescribeInstancesCommand({ InstanceIds: [instanceId] }))).Reservations?.[0]?.Instances?.[0];
@@ -16245,7 +16372,9 @@ var EC2Provider = class {
16245
16372
  this.logger.debug(`Terminate requested for EC2 Instance ${logicalId}, waiting...`);
16246
16373
  await waitUntilInstanceTerminated({
16247
16374
  client: this.ec2Client,
16248
- maxWaitTime: 300
16375
+ maxWaitTime: 300,
16376
+ minDelay: 5,
16377
+ maxDelay: 15
16249
16378
  }, { InstanceIds: [physicalId] });
16250
16379
  this.logger.debug(`EC2 Instance ${logicalId} terminated: ${physicalId}`);
16251
16380
  return;
@@ -16748,7 +16877,7 @@ var EC2Provider = class {
16748
16877
  if (!(error instanceof Error)) return false;
16749
16878
  const message = error.message.toLowerCase();
16750
16879
  const name = error.name ?? "";
16751
- return message.includes("not found") || message.includes("does not exist") || message.includes("invalidparametervalue") || name === "InvalidVpcID.NotFound" || name === "InvalidSubnetID.NotFound" || name === "InvalidInternetGatewayID.NotFound" || name === "InvalidRouteTableID.NotFound" || name === "InvalidGroup.NotFound" || name === "InvalidAssociationID.NotFound" || name === "InvalidRoute.NotFound" || name === "InvalidInstanceID.NotFound" || name === "InvalidNetworkAclID.NotFound" || name === "InvalidNetworkAclEntry.NotFound";
16880
+ return message.includes("not found") || message.includes("does not exist") || message.includes("invalidparametervalue") || name === "InvalidVpcID.NotFound" || name === "InvalidSubnetID.NotFound" || name === "InvalidInternetGatewayID.NotFound" || name === "InvalidRouteTableID.NotFound" || name === "InvalidGroup.NotFound" || name === "InvalidAssociationID.NotFound" || name === "InvalidRoute.NotFound" || name === "InvalidInstanceID.NotFound" || name === "InvalidNetworkAclID.NotFound" || name === "InvalidNetworkAclEntry.NotFound" || name === "InvalidAllocationID.NotFound" || name === "InvalidAddressID.NotFound";
16752
16881
  }
16753
16882
  /**
16754
16883
  * Adopt an existing EC2 networking resource into cdkd state.
@@ -17289,6 +17418,19 @@ var EC2Provider = class {
17289
17418
  physicalId,
17290
17419
  attributes: {}
17291
17420
  } : null;
17421
+ case "AWS::EC2::EIP": {
17422
+ const { allocationId, publicIp } = this.parseEipPhysicalId(physicalId);
17423
+ const filter = allocationId ? { AllocationIds: [allocationId] } : { PublicIps: publicIp ? [publicIp] : [] };
17424
+ const addr = (await this.ec2Client.send(new DescribeAddressesCommand(filter))).Addresses?.[0];
17425
+ if (!addr?.AllocationId || !addr.PublicIp) return null;
17426
+ return {
17427
+ physicalId: this.eipPhysicalId(addr.PublicIp, addr.AllocationId),
17428
+ attributes: {
17429
+ AllocationId: addr.AllocationId,
17430
+ PublicIp: addr.PublicIp
17431
+ }
17432
+ };
17433
+ }
17292
17434
  default: return null;
17293
17435
  }
17294
17436
  } catch (error) {
@@ -20251,9 +20393,9 @@ var CloudFrontDistributionProvider = class {
20251
20393
  * Uses exponential backoff polling.
20252
20394
  */
20253
20395
  async waitForDistributionStable(distributionId, expectedEnabled) {
20254
- const maxAttempts = 60;
20396
+ const maxAttempts = 120;
20255
20397
  let delay = 5e3;
20256
- const maxDelay = 3e4;
20398
+ const maxDelay = 1e4;
20257
20399
  let interrupted = false;
20258
20400
  const sigintHandler = () => {
20259
20401
  interrupted = true;
@@ -42308,6 +42450,7 @@ function registerAllProviders(registry) {
42308
42450
  registry.register("AWS::EC2::VPC", ec2Provider);
42309
42451
  registry.register("AWS::EC2::Subnet", ec2Provider);
42310
42452
  registry.register("AWS::EC2::InternetGateway", ec2Provider);
42453
+ registry.register("AWS::EC2::EIP", ec2Provider);
42311
42454
  registry.register("AWS::EC2::VPCGatewayAttachment", ec2Provider);
42312
42455
  registry.register("AWS::EC2::NatGateway", ec2Provider);
42313
42456
  registry.register("AWS::EC2::RouteTable", ec2Provider);
@@ -61867,7 +62010,7 @@ function createMigrateCommand() {
61867
62010
  */
61868
62011
  function buildProgram() {
61869
62012
  const program = new Command();
61870
- program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.260.8");
62013
+ program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.260.9");
61871
62014
  program.addCommand(createBootstrapCommand());
61872
62015
  program.addCommand(createSynthCommand());
61873
62016
  program.addCommand(createListCommand());