@go-to-k/cdkd 0.260.7 → 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.7";
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;
@@ -22376,7 +22518,19 @@ var ECSProvider = class {
22376
22518
  startTimeout: def["StartTimeout"],
22377
22519
  stopTimeout: def["StopTimeout"],
22378
22520
  interactive: def["Interactive"],
22379
- pseudoTerminal: def["PseudoTerminal"]
22521
+ pseudoTerminal: def["PseudoTerminal"],
22522
+ repositoryCredentials: def["RepositoryCredentials"] ? pascalToCamelCaseKeys(def["RepositoryCredentials"]) : void 0,
22523
+ firelensConfiguration: this.convertFirelensConfiguration(def["FirelensConfiguration"]),
22524
+ resourceRequirements: def["ResourceRequirements"] ? pascalToCamelCaseKeys(def["ResourceRequirements"]) : void 0,
22525
+ systemControls: def["SystemControls"] ? pascalToCamelCaseKeys(def["SystemControls"]) : void 0,
22526
+ extraHosts: def["ExtraHosts"] ? pascalToCamelCaseKeys(def["ExtraHosts"]) : void 0,
22527
+ restartPolicy: def["RestartPolicy"] ? pascalToCamelCaseKeys(def["RestartPolicy"]) : void 0,
22528
+ dnsServers: def["DnsServers"],
22529
+ dnsSearchDomains: def["DnsSearchDomains"],
22530
+ dockerSecurityOptions: def["DockerSecurityOptions"],
22531
+ credentialSpecs: def["CredentialSpecs"],
22532
+ hostname: def["Hostname"],
22533
+ versionConsistency: def["VersionConsistency"]
22380
22534
  }));
22381
22535
  }
22382
22536
  /**
@@ -22494,6 +22648,20 @@ var ECSProvider = class {
22494
22648
  };
22495
22649
  }
22496
22650
  /**
22651
+ * Convert CFn `ContainerDefinitions[].FirelensConfiguration` to the ECS SDK
22652
+ * shape (issue #1173). `Type` flips to `type`, but `Options` is a free-form
22653
+ * map of user-supplied FireLens options (e.g. `enable-ecs-log-metadata`,
22654
+ * `config-file-value`) whose keys are NOT CFn property names, so it is copied
22655
+ * verbatim rather than case-flipped.
22656
+ */
22657
+ convertFirelensConfiguration(config) {
22658
+ if (!config) return void 0;
22659
+ return {
22660
+ type: config["Type"],
22661
+ options: config["Options"]
22662
+ };
22663
+ }
22664
+ /**
22497
22665
  * Convert CFn HealthCheck to ECS SDK format
22498
22666
  */
22499
22667
  convertHealthCheck(check) {
@@ -22769,6 +22937,23 @@ var ECSProvider = class {
22769
22937
  if (c.stopTimeout !== void 0) out["StopTimeout"] = c.stopTimeout;
22770
22938
  if (c.interactive !== void 0) out["Interactive"] = c.interactive;
22771
22939
  if (c.pseudoTerminal !== void 0) out["PseudoTerminal"] = c.pseudoTerminal;
22940
+ if (c.repositoryCredentials) out["RepositoryCredentials"] = camelToPascalCaseKeys(c.repositoryCredentials);
22941
+ if (c.firelensConfiguration) {
22942
+ const fc = {};
22943
+ if (c.firelensConfiguration.type !== void 0) fc["Type"] = c.firelensConfiguration.type;
22944
+ if (c.firelensConfiguration.options && Object.keys(c.firelensConfiguration.options).length > 0) fc["Options"] = { ...c.firelensConfiguration.options };
22945
+ if (Object.keys(fc).length > 0) out["FirelensConfiguration"] = fc;
22946
+ }
22947
+ if (c.resourceRequirements && c.resourceRequirements.length > 0) out["ResourceRequirements"] = camelToPascalCaseKeys(c.resourceRequirements);
22948
+ if (c.systemControls && c.systemControls.length > 0) out["SystemControls"] = camelToPascalCaseKeys(c.systemControls);
22949
+ if (c.extraHosts && c.extraHosts.length > 0) out["ExtraHosts"] = camelToPascalCaseKeys(c.extraHosts);
22950
+ if (c.restartPolicy) out["RestartPolicy"] = camelToPascalCaseKeys(c.restartPolicy);
22951
+ if (c.dnsServers && c.dnsServers.length > 0) out["DnsServers"] = [...c.dnsServers];
22952
+ if (c.dnsSearchDomains && c.dnsSearchDomains.length > 0) out["DnsSearchDomains"] = [...c.dnsSearchDomains];
22953
+ if (c.dockerSecurityOptions && c.dockerSecurityOptions.length > 0) out["DockerSecurityOptions"] = [...c.dockerSecurityOptions];
22954
+ if (c.credentialSpecs && c.credentialSpecs.length > 0) out["CredentialSpecs"] = [...c.credentialSpecs];
22955
+ if (c.hostname !== void 0) out["Hostname"] = c.hostname;
22956
+ if (c.versionConsistency !== void 0 && c.versionConsistency !== "enabled") out["VersionConsistency"] = c.versionConsistency;
22772
22957
  return out;
22773
22958
  });
22774
22959
  }
@@ -42265,6 +42450,7 @@ function registerAllProviders(registry) {
42265
42450
  registry.register("AWS::EC2::VPC", ec2Provider);
42266
42451
  registry.register("AWS::EC2::Subnet", ec2Provider);
42267
42452
  registry.register("AWS::EC2::InternetGateway", ec2Provider);
42453
+ registry.register("AWS::EC2::EIP", ec2Provider);
42268
42454
  registry.register("AWS::EC2::VPCGatewayAttachment", ec2Provider);
42269
42455
  registry.register("AWS::EC2::NatGateway", ec2Provider);
42270
42456
  registry.register("AWS::EC2::RouteTable", ec2Provider);
@@ -61824,7 +62010,7 @@ function createMigrateCommand() {
61824
62010
  */
61825
62011
  function buildProgram() {
61826
62012
  const program = new Command();
61827
- program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.260.7");
62013
+ program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.260.9");
61828
62014
  program.addCommand(createBootstrapCommand());
61829
62015
  program.addCommand(createSynthCommand());
61830
62016
  program.addCommand(createListCommand());