@go-to-k/cdkd 0.260.3 → 0.260.5
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 +211 -36
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -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.
|
|
1904
|
+
return "0.260.5";
|
|
1905
1905
|
}
|
|
1906
1906
|
/**
|
|
1907
1907
|
* Generate a time-sortable unique run id, e.g.
|
|
@@ -21858,6 +21858,23 @@ function convertTags(tags) {
|
|
|
21858
21858
|
}));
|
|
21859
21859
|
}
|
|
21860
21860
|
/**
|
|
21861
|
+
* `DeploymentConfiguration.LifecycleHooks[].HookDetails` is a free-form JSON
|
|
21862
|
+
* document (SDK `__DocumentType`) whose inner keys are user-supplied hook
|
|
21863
|
+
* payload fields, NOT CloudFormation property names. The recursive
|
|
21864
|
+
* PascalCase->camelCase key flip must therefore copy its value subtree
|
|
21865
|
+
* verbatim (the `HookDetails` key itself is still flipped to `hookDetails`).
|
|
21866
|
+
* See `convertDeploymentConfiguration`.
|
|
21867
|
+
*/
|
|
21868
|
+
const DEPLOYMENT_CONFIG_PRESERVE_KEYS = /* @__PURE__ */ new Set(["HookDetails"]);
|
|
21869
|
+
/**
|
|
21870
|
+
* Read-side (camelCase -> PascalCase) counterpart of
|
|
21871
|
+
* `DEPLOYMENT_CONFIG_PRESERVE_KEYS` for `readCurrentState` (issue #1165 /
|
|
21872
|
+
* #1167). The SDK response carries the free-form document under the camelCase
|
|
21873
|
+
* key `hookDetails`, so the reverse key-flip must copy its value subtree
|
|
21874
|
+
* verbatim (the key itself is still flipped to `HookDetails`).
|
|
21875
|
+
*/
|
|
21876
|
+
const DEPLOYMENT_CONFIG_PRESERVE_KEYS_CAMEL = /* @__PURE__ */ new Set(["hookDetails"]);
|
|
21877
|
+
/**
|
|
21861
21878
|
* AWS ECS Provider
|
|
21862
21879
|
*
|
|
21863
21880
|
* Implements resource provisioning for ECS resources:
|
|
@@ -21969,8 +21986,8 @@ var ECSProvider = class {
|
|
|
21969
21986
|
const cluster = (await client.send(new CreateClusterCommand({
|
|
21970
21987
|
clusterName,
|
|
21971
21988
|
capacityProviders: properties["CapacityProviders"],
|
|
21972
|
-
defaultCapacityProviderStrategy: properties["DefaultCapacityProviderStrategy"],
|
|
21973
|
-
configuration: properties["Configuration"],
|
|
21989
|
+
defaultCapacityProviderStrategy: this.convertCapacityProviderStrategy(properties["DefaultCapacityProviderStrategy"]),
|
|
21990
|
+
configuration: this.convertClusterConfiguration(properties["Configuration"]),
|
|
21974
21991
|
settings: properties["ClusterSettings"] ? properties["ClusterSettings"].map((s) => ({
|
|
21975
21992
|
name: s["Name"] || s["name"],
|
|
21976
21993
|
value: (s["Value"] || s["value"]) ?? void 0
|
|
@@ -21997,7 +22014,7 @@ var ECSProvider = class {
|
|
|
21997
22014
|
await client.send(new PutClusterCapacityProvidersCommand({
|
|
21998
22015
|
cluster: physicalId,
|
|
21999
22016
|
capacityProviders: properties["CapacityProviders"] || [],
|
|
22000
|
-
defaultCapacityProviderStrategy: properties["DefaultCapacityProviderStrategy"] || []
|
|
22017
|
+
defaultCapacityProviderStrategy: this.convertCapacityProviderStrategy(properties["DefaultCapacityProviderStrategy"]) || []
|
|
22001
22018
|
}));
|
|
22002
22019
|
this.logger.debug(`Updated capacity providers for ECS cluster ${physicalId}`);
|
|
22003
22020
|
}
|
|
@@ -22013,7 +22030,7 @@ var ECSProvider = class {
|
|
|
22013
22030
|
await client.send(new UpdateClusterCommand({
|
|
22014
22031
|
cluster: physicalId,
|
|
22015
22032
|
...settingsChanged && { settings: settingsInput },
|
|
22016
|
-
...configChanged && { configuration: properties["Configuration"] },
|
|
22033
|
+
...configChanged && { configuration: this.convertClusterConfiguration(properties["Configuration"]) },
|
|
22017
22034
|
...svcConnectChanged && { serviceConnectDefaults: svcConnectInput }
|
|
22018
22035
|
}));
|
|
22019
22036
|
this.logger.debug(`Updated ECS cluster ${physicalId} (settings=${settingsChanged}, config=${configChanged}, svcConnect=${svcConnectChanged})`);
|
|
@@ -22068,13 +22085,13 @@ var ECSProvider = class {
|
|
|
22068
22085
|
executionRoleArn: properties["ExecutionRoleArn"],
|
|
22069
22086
|
taskRoleArn: properties["TaskRoleArn"],
|
|
22070
22087
|
volumes: this.convertVolumes(properties["Volumes"]),
|
|
22071
|
-
placementConstraints: properties["PlacementConstraints"],
|
|
22088
|
+
placementConstraints: this.convertTaskDefinitionPlacementConstraints(properties["PlacementConstraints"]),
|
|
22072
22089
|
tags: convertTags(properties["Tags"]),
|
|
22073
|
-
runtimePlatform: properties["RuntimePlatform"],
|
|
22074
|
-
proxyConfiguration: properties["ProxyConfiguration"],
|
|
22090
|
+
runtimePlatform: this.convertRuntimePlatform(properties["RuntimePlatform"]),
|
|
22091
|
+
proxyConfiguration: this.convertProxyConfiguration(properties["ProxyConfiguration"]),
|
|
22075
22092
|
pidMode: properties["PidMode"],
|
|
22076
22093
|
ipcMode: properties["IpcMode"],
|
|
22077
|
-
ephemeralStorage: properties["EphemeralStorage"],
|
|
22094
|
+
ephemeralStorage: this.convertEphemeralStorage(properties["EphemeralStorage"]),
|
|
22078
22095
|
enableFaultInjection: properties["EnableFaultInjection"]
|
|
22079
22096
|
}))).taskDefinition;
|
|
22080
22097
|
if (!taskDef || !taskDef.taskDefinitionArn) throw new Error("RegisterTaskDefinition did not return task definition ARN");
|
|
@@ -22128,17 +22145,17 @@ var ECSProvider = class {
|
|
|
22128
22145
|
launchType: properties["LaunchType"],
|
|
22129
22146
|
networkConfiguration: this.convertNetworkConfiguration(properties["NetworkConfiguration"]),
|
|
22130
22147
|
loadBalancers: this.convertLoadBalancers(properties["LoadBalancers"]),
|
|
22131
|
-
capacityProviderStrategy: properties["CapacityProviderStrategy"],
|
|
22132
|
-
deploymentConfiguration: properties["DeploymentConfiguration"],
|
|
22133
|
-
placementConstraints: properties["PlacementConstraints"],
|
|
22134
|
-
placementStrategy: properties["PlacementStrategies"] ?? properties["PlacementStrategy"],
|
|
22148
|
+
capacityProviderStrategy: this.convertCapacityProviderStrategy(properties["CapacityProviderStrategy"]),
|
|
22149
|
+
deploymentConfiguration: this.convertDeploymentConfiguration(properties["DeploymentConfiguration"]),
|
|
22150
|
+
placementConstraints: this.convertPlacementConstraints(properties["PlacementConstraints"]),
|
|
22151
|
+
placementStrategy: this.convertPlacementStrategies(properties["PlacementStrategies"] ?? properties["PlacementStrategy"]),
|
|
22135
22152
|
platformVersion: properties["PlatformVersion"],
|
|
22136
22153
|
healthCheckGracePeriodSeconds: properties["HealthCheckGracePeriodSeconds"],
|
|
22137
22154
|
schedulingStrategy: properties["SchedulingStrategy"],
|
|
22138
22155
|
enableECSManagedTags: properties["EnableECSManagedTags"],
|
|
22139
22156
|
propagateTags: properties["PropagateTags"],
|
|
22140
22157
|
enableExecuteCommand: properties["EnableExecuteCommand"],
|
|
22141
|
-
serviceRegistries: properties["ServiceRegistries"],
|
|
22158
|
+
serviceRegistries: this.convertServiceRegistries(properties["ServiceRegistries"]),
|
|
22142
22159
|
tags: convertTags(properties["Tags"])
|
|
22143
22160
|
}))).service;
|
|
22144
22161
|
if (!service || !service.serviceArn) throw new Error("CreateService did not return service ARN");
|
|
@@ -22167,10 +22184,10 @@ var ECSProvider = class {
|
|
|
22167
22184
|
const serviceRegistriesChanged = JSON.stringify(previousProperties["ServiceRegistries"] ?? null) !== JSON.stringify(properties["ServiceRegistries"] ?? null);
|
|
22168
22185
|
if (!isEcsController && (loadBalancersChanged || serviceRegistriesChanged)) throw new ProvisioningError(`AWS::ECS::Service '${logicalId}' changes LoadBalancers/ServiceRegistries under the '${deploymentControllerType}' deployment controller, which applies them via a new CodeDeploy deployment / task set rather than UpdateService. cdkd does not support updating these under a non-ECS controller; recreate the service or manage the blue/green deployment out-of-band.`, resourceType, logicalId, physicalId);
|
|
22169
22186
|
const loadBalancersInput = isEcsController && loadBalancersChanged ? this.convertLoadBalancers(properties["LoadBalancers"]) ?? [] : void 0;
|
|
22170
|
-
const serviceRegistriesInput = isEcsController && serviceRegistriesChanged ? properties["ServiceRegistries"] ?? [] : void 0;
|
|
22171
|
-
const capacityProviderStrategyInput = this.clearOnUpdateRemoval(properties["CapacityProviderStrategy"], previousProperties["CapacityProviderStrategy"], []);
|
|
22172
|
-
const placementConstraintsInput = this.clearOnUpdateRemoval(properties["PlacementConstraints"], previousProperties["PlacementConstraints"], []);
|
|
22173
|
-
const placementStrategyInput = this.clearOnUpdateRemoval(properties["PlacementStrategies"] ?? properties["PlacementStrategy"], previousProperties["PlacementStrategies"] ?? previousProperties["PlacementStrategy"], []);
|
|
22187
|
+
const serviceRegistriesInput = isEcsController && serviceRegistriesChanged ? this.convertServiceRegistries(properties["ServiceRegistries"]) ?? [] : void 0;
|
|
22188
|
+
const capacityProviderStrategyInput = this.clearOnUpdateRemoval(this.convertCapacityProviderStrategy(properties["CapacityProviderStrategy"]), previousProperties["CapacityProviderStrategy"], []);
|
|
22189
|
+
const placementConstraintsInput = this.clearOnUpdateRemoval(this.convertPlacementConstraints(properties["PlacementConstraints"]), previousProperties["PlacementConstraints"], []);
|
|
22190
|
+
const placementStrategyInput = this.clearOnUpdateRemoval(this.convertPlacementStrategies(properties["PlacementStrategies"] ?? properties["PlacementStrategy"]), previousProperties["PlacementStrategies"] ?? previousProperties["PlacementStrategy"], []);
|
|
22174
22191
|
const platformVersionInput = this.clearOnUpdateRemoval(properties["PlatformVersion"], previousProperties["PlatformVersion"], "LATEST");
|
|
22175
22192
|
const healthCheckGracePeriodSecondsInput = this.clearOnUpdateRemoval(properties["HealthCheckGracePeriodSeconds"], previousProperties["HealthCheckGracePeriodSeconds"], 0);
|
|
22176
22193
|
const enableECSManagedTagsInput = this.clearOnUpdateRemoval(properties["EnableECSManagedTags"], previousProperties["EnableECSManagedTags"], false);
|
|
@@ -22184,7 +22201,7 @@ var ECSProvider = class {
|
|
|
22184
22201
|
desiredCount: properties["DesiredCount"],
|
|
22185
22202
|
networkConfiguration: this.convertNetworkConfiguration(properties["NetworkConfiguration"]),
|
|
22186
22203
|
capacityProviderStrategy: capacityProviderStrategyInput,
|
|
22187
|
-
deploymentConfiguration: properties["DeploymentConfiguration"],
|
|
22204
|
+
deploymentConfiguration: this.convertDeploymentConfiguration(properties["DeploymentConfiguration"]),
|
|
22188
22205
|
placementConstraints: placementConstraintsInput,
|
|
22189
22206
|
placementStrategy: placementStrategyInput,
|
|
22190
22207
|
platformVersion: platformVersionInput,
|
|
@@ -22335,7 +22352,7 @@ var ECSProvider = class {
|
|
|
22335
22352
|
ulimits: this.convertUlimits(def["Ulimits"]),
|
|
22336
22353
|
logConfiguration: this.convertLogConfiguration(def["LogConfiguration"]),
|
|
22337
22354
|
healthCheck: this.convertHealthCheck(def["HealthCheck"]),
|
|
22338
|
-
linuxParameters: def["LinuxParameters"],
|
|
22355
|
+
linuxParameters: this.convertLinuxParameters(def["LinuxParameters"]),
|
|
22339
22356
|
dockerLabels: def["DockerLabels"],
|
|
22340
22357
|
startTimeout: def["StartTimeout"],
|
|
22341
22358
|
stopTimeout: def["StopTimeout"],
|
|
@@ -22454,7 +22471,7 @@ var ECSProvider = class {
|
|
|
22454
22471
|
return {
|
|
22455
22472
|
logDriver: config["LogDriver"],
|
|
22456
22473
|
options: config["Options"],
|
|
22457
|
-
secretOptions: config["SecretOptions"]
|
|
22474
|
+
secretOptions: this.convertSecrets(config["SecretOptions"])
|
|
22458
22475
|
};
|
|
22459
22476
|
}
|
|
22460
22477
|
/**
|
|
@@ -22640,6 +22657,25 @@ var ECSProvider = class {
|
|
|
22640
22657
|
});
|
|
22641
22658
|
}
|
|
22642
22659
|
/**
|
|
22660
|
+
* Reverse of `convertProxyConfiguration` for `readCurrentState` (issue
|
|
22661
|
+
* #1167): map the SDK camelCase `ProxyConfiguration` back to the CFn
|
|
22662
|
+
* PascalCase shape so the drift baseline (state `properties`, PascalCase)
|
|
22663
|
+
* and the AWS-current read compare apples-to-apples. Unlike the pure
|
|
22664
|
+
* first-letter flips, the SDK field `properties` maps back to the CFn key
|
|
22665
|
+
* `ProxyConfigurationProperties` (a `{Name,Value}[]`), so it needs an
|
|
22666
|
+
* explicit remap rather than `camelToPascalCaseKeys`.
|
|
22667
|
+
*/
|
|
22668
|
+
proxyConfigurationToCfn(config) {
|
|
22669
|
+
const out = {};
|
|
22670
|
+
if (config.type !== void 0) out["Type"] = config.type;
|
|
22671
|
+
if (config.containerName !== void 0) out["ContainerName"] = config.containerName;
|
|
22672
|
+
if (config.properties !== void 0) out["ProxyConfigurationProperties"] = config.properties.map((p) => ({
|
|
22673
|
+
Name: p.name,
|
|
22674
|
+
Value: p.value
|
|
22675
|
+
}));
|
|
22676
|
+
return out;
|
|
22677
|
+
}
|
|
22678
|
+
/**
|
|
22643
22679
|
* Coerce a CFn boolean property to a real boolean at the wire boundary.
|
|
22644
22680
|
* CFn templates can carry booleans as the strings "true" / "false"
|
|
22645
22681
|
* (e.g. via Fn::Sub / parameter plumbing), so the SDK input must
|
|
@@ -22668,6 +22704,144 @@ var ECSProvider = class {
|
|
|
22668
22704
|
loadBalancerName: lb["LoadBalancerName"]
|
|
22669
22705
|
}));
|
|
22670
22706
|
}
|
|
22707
|
+
/**
|
|
22708
|
+
* Convert the CFn PascalCase `DeploymentConfiguration` block to the ECS SDK
|
|
22709
|
+
* camelCase input shape (issue #1165). Every field is a pure first-letter
|
|
22710
|
+
* case flip (`MaximumPercent` -> `maximumPercent`, `DeploymentCircuitBreaker`
|
|
22711
|
+
* -> `deploymentCircuitBreaker` with `{Enable, Rollback}` -> `{enable,
|
|
22712
|
+
* rollback}`, `Alarms.AlarmNames` -> `alarms.alarmNames`, and the blue/green
|
|
22713
|
+
* `Strategy` / `BakeTimeInMinutes` / `LifecycleHooks` / `LinearConfiguration`
|
|
22714
|
+
* / `CanaryConfiguration` fields), so the shared recursive key-flip converter
|
|
22715
|
+
* handles the whole subtree — including fields CDK/CFn add later, which avoids
|
|
22716
|
+
* re-introducing the silent-drop this fix closes. The one exception is
|
|
22717
|
+
* `LifecycleHooks[].HookDetails`, a free-form document copied verbatim (see
|
|
22718
|
+
* `DEPLOYMENT_CONFIG_PRESERVE_KEYS`).
|
|
22719
|
+
*
|
|
22720
|
+
* Before this fix the block was passed RAW into the SDK's camelCase
|
|
22721
|
+
* `deploymentConfiguration` field, so the SDK read `.maximumPercent` (absent)
|
|
22722
|
+
* and serialized nothing — a custom `minHealthyPercent` / `maxHealthyPercent`
|
|
22723
|
+
* / circuit breaker / deployment alarms deployed as the AWS defaults, silently
|
|
22724
|
+
* (state recorded the intended value, `cdkd diff` showed "No changes").
|
|
22725
|
+
*/
|
|
22726
|
+
convertDeploymentConfiguration(config) {
|
|
22727
|
+
if (!config) return void 0;
|
|
22728
|
+
return pascalToCamelCaseKeys(config, DEPLOYMENT_CONFIG_PRESERVE_KEYS);
|
|
22729
|
+
}
|
|
22730
|
+
/**
|
|
22731
|
+
* Convert the CFn PascalCase `CapacityProviderStrategy` array to the ECS SDK
|
|
22732
|
+
* camelCase input shape (issue #1165). Each element `{CapacityProvider,
|
|
22733
|
+
* Weight, Base}` is a pure first-letter case flip to `{capacityProvider,
|
|
22734
|
+
* weight, base}`.
|
|
22735
|
+
*/
|
|
22736
|
+
convertCapacityProviderStrategy(items) {
|
|
22737
|
+
if (!items) return void 0;
|
|
22738
|
+
return pascalToCamelCaseKeys(items);
|
|
22739
|
+
}
|
|
22740
|
+
/**
|
|
22741
|
+
* Convert the CFn PascalCase `PlacementConstraints` array to the ECS SDK
|
|
22742
|
+
* camelCase input shape (issue #1165). Each element `{Type, Expression}` ->
|
|
22743
|
+
* `{type, expression}`.
|
|
22744
|
+
*/
|
|
22745
|
+
convertPlacementConstraints(items) {
|
|
22746
|
+
if (!items) return void 0;
|
|
22747
|
+
return pascalToCamelCaseKeys(items);
|
|
22748
|
+
}
|
|
22749
|
+
/**
|
|
22750
|
+
* Convert the CFn PascalCase `PlacementStrategies` array to the ECS SDK
|
|
22751
|
+
* camelCase input shape (issue #1165). Each element `{Type, Field}` ->
|
|
22752
|
+
* `{type, field}`.
|
|
22753
|
+
*/
|
|
22754
|
+
convertPlacementStrategies(items) {
|
|
22755
|
+
if (!items) return void 0;
|
|
22756
|
+
return pascalToCamelCaseKeys(items);
|
|
22757
|
+
}
|
|
22758
|
+
/**
|
|
22759
|
+
* Convert the CFn PascalCase `ServiceRegistries` array to the ECS SDK
|
|
22760
|
+
* camelCase input shape (issue #1165). Each element `{RegistryArn, Port,
|
|
22761
|
+
* ContainerName, ContainerPort}` -> `{registryArn, port, containerName,
|
|
22762
|
+
* containerPort}`.
|
|
22763
|
+
*/
|
|
22764
|
+
convertServiceRegistries(items) {
|
|
22765
|
+
if (!items) return void 0;
|
|
22766
|
+
return pascalToCamelCaseKeys(items);
|
|
22767
|
+
}
|
|
22768
|
+
/**
|
|
22769
|
+
* Convert the CFn PascalCase `TaskDefinition.RuntimePlatform` to the ECS SDK
|
|
22770
|
+
* camelCase input shape (issue #1165). `{CpuArchitecture,
|
|
22771
|
+
* OperatingSystemFamily}` -> `{cpuArchitecture, operatingSystemFamily}`.
|
|
22772
|
+
*
|
|
22773
|
+
* High-impact: before the fix a `RuntimePlatform: { CpuArchitecture: ARM64 }`
|
|
22774
|
+
* (Graviton Fargate) was passed raw into the SDK's camelCase slot and
|
|
22775
|
+
* silently dropped, so the task definition registered as the default X86_64.
|
|
22776
|
+
*/
|
|
22777
|
+
convertRuntimePlatform(config) {
|
|
22778
|
+
if (!config) return void 0;
|
|
22779
|
+
return pascalToCamelCaseKeys(config);
|
|
22780
|
+
}
|
|
22781
|
+
/**
|
|
22782
|
+
* Convert the CFn PascalCase `TaskDefinition.EphemeralStorage` to the ECS SDK
|
|
22783
|
+
* camelCase input shape (issue #1165). `{SizeInGiB}` -> `{sizeInGiB}` — the
|
|
22784
|
+
* value under the wrong-cased key was silently dropped before the fix, so a
|
|
22785
|
+
* custom ephemeral storage size reverted to the AWS default.
|
|
22786
|
+
*/
|
|
22787
|
+
convertEphemeralStorage(config) {
|
|
22788
|
+
if (!config) return void 0;
|
|
22789
|
+
return pascalToCamelCaseKeys(config);
|
|
22790
|
+
}
|
|
22791
|
+
/**
|
|
22792
|
+
* Convert the CFn PascalCase `Cluster.Configuration` to the ECS SDK camelCase
|
|
22793
|
+
* input shape (issue #1165). Every key is a pure first-letter flip
|
|
22794
|
+
* (`ExecuteCommandConfiguration` / `ManagedStorageConfiguration` and their
|
|
22795
|
+
* nested `KmsKeyId` / `LogConfiguration` / `CloudWatchLogGroupName` /
|
|
22796
|
+
* `S3BucketName` fields), so the shared recursive converter handles the whole
|
|
22797
|
+
* subtree.
|
|
22798
|
+
*/
|
|
22799
|
+
convertClusterConfiguration(config) {
|
|
22800
|
+
if (!config) return void 0;
|
|
22801
|
+
return pascalToCamelCaseKeys(config);
|
|
22802
|
+
}
|
|
22803
|
+
/**
|
|
22804
|
+
* Convert the CFn PascalCase `TaskDefinition.ProxyConfiguration` to the ECS
|
|
22805
|
+
* SDK camelCase input shape (issue #1165). Unlike the other nested fields,
|
|
22806
|
+
* this is NOT a pure first-letter flip: the CFn key
|
|
22807
|
+
* `ProxyConfigurationProperties` maps to the SDK's `properties` field (a
|
|
22808
|
+
* `KeyValuePair[]`), so it needs an explicit remap rather than the recursive
|
|
22809
|
+
* converter.
|
|
22810
|
+
*/
|
|
22811
|
+
convertProxyConfiguration(config) {
|
|
22812
|
+
if (!config) return void 0;
|
|
22813
|
+
return {
|
|
22814
|
+
type: config["Type"],
|
|
22815
|
+
containerName: config["ContainerName"],
|
|
22816
|
+
properties: this.convertEnvironment(config["ProxyConfigurationProperties"])
|
|
22817
|
+
};
|
|
22818
|
+
}
|
|
22819
|
+
/**
|
|
22820
|
+
* Convert the CFn PascalCase `TaskDefinition.PlacementConstraints` array to
|
|
22821
|
+
* the ECS SDK camelCase input shape (issue #1165). Each element `{Type,
|
|
22822
|
+
* Expression}` -> `{type, expression}`. Distinct from the Service's
|
|
22823
|
+
* `PlacementConstraints` only in the SDK element type
|
|
22824
|
+
* (`TaskDefinitionPlacementConstraint` vs `PlacementConstraint`); both are a
|
|
22825
|
+
* pure first-letter flip.
|
|
22826
|
+
*/
|
|
22827
|
+
convertTaskDefinitionPlacementConstraints(items) {
|
|
22828
|
+
if (!items) return void 0;
|
|
22829
|
+
return pascalToCamelCaseKeys(items);
|
|
22830
|
+
}
|
|
22831
|
+
/**
|
|
22832
|
+
* Convert the CFn PascalCase `ContainerDefinitions[].LinuxParameters` to the
|
|
22833
|
+
* ECS SDK camelCase input shape (issue #1165). Every key is a pure
|
|
22834
|
+
* first-letter flip (`Capabilities.{Add,Drop}`, `Devices[].{HostPath,
|
|
22835
|
+
* ContainerPath,Permissions}`, `Tmpfs[].{ContainerPath,Size,MountOptions}`,
|
|
22836
|
+
* `InitProcessEnabled` / `SharedMemorySize` / `MaxSwap` / `Swappiness`), so
|
|
22837
|
+
* the shared recursive converter handles the whole subtree. Before this fix
|
|
22838
|
+
* the block was passed raw, so a `LinuxParameters.Capabilities` /
|
|
22839
|
+
* `Devices` / `InitProcessEnabled` was silently dropped on register.
|
|
22840
|
+
*/
|
|
22841
|
+
convertLinuxParameters(config) {
|
|
22842
|
+
if (!config) return void 0;
|
|
22843
|
+
return pascalToCamelCaseKeys(config);
|
|
22844
|
+
}
|
|
22671
22845
|
convertNetworkConfiguration(config) {
|
|
22672
22846
|
if (!config) return void 0;
|
|
22673
22847
|
const awsvpcConfig = config["AwsvpcConfiguration"];
|
|
@@ -22741,8 +22915,8 @@ var ECSProvider = class {
|
|
|
22741
22915
|
if (!c || !c.clusterName) return void 0;
|
|
22742
22916
|
const result = { ClusterName: c.clusterName };
|
|
22743
22917
|
result["CapacityProviders"] = c.capacityProviders ? [...c.capacityProviders] : [];
|
|
22744
|
-
result["DefaultCapacityProviderStrategy"] = c.defaultCapacityProviderStrategy ?? [];
|
|
22745
|
-
if (c.configuration) result["Configuration"] = c.configuration;
|
|
22918
|
+
result["DefaultCapacityProviderStrategy"] = camelToPascalCaseKeys(c.defaultCapacityProviderStrategy ?? []);
|
|
22919
|
+
if (c.configuration) result["Configuration"] = camelToPascalCaseKeys(c.configuration);
|
|
22746
22920
|
result["ClusterSettings"] = (c.settings ?? []).map((s) => ({
|
|
22747
22921
|
Name: s.name,
|
|
22748
22922
|
Value: s.value
|
|
@@ -22780,21 +22954,22 @@ var ECSProvider = class {
|
|
|
22780
22954
|
if (s.enableECSManagedTags !== void 0) result["EnableECSManagedTags"] = s.enableECSManagedTags;
|
|
22781
22955
|
if (s.enableExecuteCommand !== void 0) result["EnableExecuteCommand"] = s.enableExecuteCommand;
|
|
22782
22956
|
if (s.healthCheckGracePeriodSeconds !== void 0) result["HealthCheckGracePeriodSeconds"] = s.healthCheckGracePeriodSeconds;
|
|
22783
|
-
if (s.networkConfiguration) result["NetworkConfiguration"] = s.networkConfiguration;
|
|
22784
|
-
result["LoadBalancers"] = s.loadBalancers ?? [];
|
|
22785
|
-
if (s.capacityProviderStrategy && s.capacityProviderStrategy.length > 0) result["CapacityProviderStrategy"] = s.capacityProviderStrategy;
|
|
22957
|
+
if (s.networkConfiguration) result["NetworkConfiguration"] = camelToPascalCaseKeys(s.networkConfiguration);
|
|
22958
|
+
result["LoadBalancers"] = camelToPascalCaseKeys(s.loadBalancers ?? []);
|
|
22959
|
+
if (s.capacityProviderStrategy && s.capacityProviderStrategy.length > 0) result["CapacityProviderStrategy"] = camelToPascalCaseKeys(s.capacityProviderStrategy);
|
|
22786
22960
|
else if (!s.launchType) result["CapacityProviderStrategy"] = [];
|
|
22787
|
-
if (s.deploymentConfiguration) result["DeploymentConfiguration"] = s.deploymentConfiguration;
|
|
22788
|
-
result["PlacementConstraints"] = s.placementConstraints ?? [];
|
|
22961
|
+
if (s.deploymentConfiguration) result["DeploymentConfiguration"] = camelToPascalCaseKeys(s.deploymentConfiguration, DEPLOYMENT_CONFIG_PRESERVE_KEYS_CAMEL);
|
|
22962
|
+
result["PlacementConstraints"] = camelToPascalCaseKeys(s.placementConstraints ?? []);
|
|
22789
22963
|
if (s.launchType === "EC2" || s.launchType === "EXTERNAL") {
|
|
22790
|
-
const strategy = s.placementStrategy ?? [];
|
|
22964
|
+
const strategy = camelToPascalCaseKeys(s.placementStrategy ?? []);
|
|
22791
22965
|
result["PlacementStrategy"] = strategy;
|
|
22792
22966
|
result["PlacementStrategies"] = strategy;
|
|
22793
22967
|
} else if (s.placementStrategy && s.placementStrategy.length > 0) {
|
|
22794
|
-
|
|
22795
|
-
result["
|
|
22968
|
+
const strategy = camelToPascalCaseKeys(s.placementStrategy);
|
|
22969
|
+
result["PlacementStrategy"] = strategy;
|
|
22970
|
+
result["PlacementStrategies"] = strategy;
|
|
22796
22971
|
}
|
|
22797
|
-
result["ServiceRegistries"] = s.serviceRegistries ?? [];
|
|
22972
|
+
result["ServiceRegistries"] = camelToPascalCaseKeys(s.serviceRegistries ?? []);
|
|
22798
22973
|
result["Tags"] = normalizeAwsTagsToCfn(s.tags);
|
|
22799
22974
|
return result;
|
|
22800
22975
|
}
|
|
@@ -22819,9 +22994,9 @@ var ECSProvider = class {
|
|
|
22819
22994
|
if (td.executionRoleArn !== void 0) result["ExecutionRoleArn"] = td.executionRoleArn;
|
|
22820
22995
|
if (td.taskRoleArn !== void 0) result["TaskRoleArn"] = td.taskRoleArn;
|
|
22821
22996
|
result["Volumes"] = this.volumesToCfn(td.volumes);
|
|
22822
|
-
result["PlacementConstraints"] = td.placementConstraints ?? [];
|
|
22823
|
-
if (td.runtimePlatform) result["RuntimePlatform"] = td.runtimePlatform;
|
|
22824
|
-
if (td.proxyConfiguration) result["ProxyConfiguration"] = td.proxyConfiguration;
|
|
22997
|
+
result["PlacementConstraints"] = camelToPascalCaseKeys(td.placementConstraints ?? []);
|
|
22998
|
+
if (td.runtimePlatform) result["RuntimePlatform"] = camelToPascalCaseKeys(td.runtimePlatform);
|
|
22999
|
+
if (td.proxyConfiguration) result["ProxyConfiguration"] = this.proxyConfigurationToCfn(td.proxyConfiguration);
|
|
22825
23000
|
if (td.pidMode !== void 0) result["PidMode"] = td.pidMode;
|
|
22826
23001
|
if (td.ipcMode !== void 0) result["IpcMode"] = td.ipcMode;
|
|
22827
23002
|
if (td.ephemeralStorage?.sizeInGiB !== void 0) result["EphemeralStorage"] = { SizeInGiB: td.ephemeralStorage.sizeInGiB };
|
|
@@ -61505,7 +61680,7 @@ function createMigrateCommand() {
|
|
|
61505
61680
|
*/
|
|
61506
61681
|
function buildProgram() {
|
|
61507
61682
|
const program = new Command();
|
|
61508
|
-
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.260.
|
|
61683
|
+
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.260.5");
|
|
61509
61684
|
program.addCommand(createBootstrapCommand());
|
|
61510
61685
|
program.addCommand(createSynthCommand());
|
|
61511
61686
|
program.addCommand(createListCommand());
|