@go-to-k/cdkd 0.278.0 → 0.278.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{asg-provider-B8KbdJqN.js → asg-provider-D2NA5UuZ.js} +2 -2
- package/dist/{asg-provider-B8KbdJqN.js.map → asg-provider-D2NA5UuZ.js.map} +1 -1
- package/dist/cli.js +215 -15
- package/dist/cli.js.map +1 -1
- package/dist/{deploy-engine-xrRngpAo.js → deploy-engine-CunQFmO7.js} +3 -3
- package/dist/{deploy-engine-xrRngpAo.js.map → deploy-engine-CunQFmO7.js.map} +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { $ as DagBuilder, A as red, At as resolveApp, B as isTerminationProtectionPropagationError, Bt as CFN_TEMPLATE_URL_LIMIT, C as isStatefulRecreateTargetSync, Ct as runDockerStreaming, D as cyan, Dt as synthesisStatusMessage, E as bold, Et as Synthesizer, F as ProviderRegistry, Ft as resolveStateBucketWithDefaultAndSource, G as normalizeAwsTagsToCfn, Gt as AssemblyReader, H as cfnRefValueFromPhysicalId, Ht as findLargeInlineResources, I as findActionableSilentDrops, It as resolveUseCdkBootstrapAssets, J as applyRoleArnIfSet, Jt as resolveBucketRegion, K as resolveExplicitPhysicalId, Kt as processStackMessages, L as CloudControlProvider, Lt as stateBucketExistenceConfirmed, M as IAMRoleProvider, Mt as resolveCaptureObservedState, N as collectInlinePolicyNamesManagedBySiblings, Nt as resolveSkipPrefix, O as gray, Ot as getDefaultStateBucketName, P as clearOnUpdateRemoval, Pt as resolveStateBucketWithDefault, Q as isRetryableTransientError, Qt as setAwsClients, R as slowCcOperationTimeoutMs, Rt as warnDeprecatedNoPrefixCliFlag, S as MULTI_REGION_RECREATE_BLOCKED_TYPES, St as runDockerForeground, T as formatResourceLine, Tt as getDockerImageBySourceHash, U as refStateLookupFromResource, Ut as uploadCfnTemplate, V as IntrinsicFunctionResolver, Vt as MIGRATE_TMP_PREFIX, W as WAFv2WebACLProvider, Wt as expectedOwnerParam, X as describeTypeWithThrottleRetry, Xt as getAwsClients, Y as DiffCalculator, Yt as AwsClients, Z as withRetry, Zt as resetAwsClients, _ as createPreDeleteFinalSnapshot, _t as validateAssetBucketName, a as DeploymentEventsStore, an as LocalMigrateError, at as AssetPublisher, b as unsupportedFinalSnapshotError, bn as normalizeAwsError, bt as formatDockerLoginError, c as replayFailedOperations, cn as MissingCdkCliError, ct as buildAssetRedirectMap, d as IMPLICIT_DELETE_DEPENDENCIES, dn as ProvisioningError, dt as rewriteTemplateAssetReferences, en as CdkdError, et as TemplateParser, f as computeImplicitDeleteEdges, fn as ResourceTimeoutError, ft as AssetModeResolver, g as ccRoutedFinalSnapshotError, gt as parseBootstrapMarker, h as buildFinalSnapshotIdentifier, hn as StackTerminationProtectionError, ht as getBootstrapMarkerKey, i as DeploymentEventsReader, in as LocalInvokeBuildError$1, it as shouldRetainResource, j as yellow, jt as resolveAutoAssetStorage, k as green, kt as getLegacyStateBucketName, l as replayRollback, ln as NestedStackChildDirectDestroyError, lt as createAssetRedirectResolver, m as PRE_DELETE_SNAPSHOT_TYPES, mn as StackHasActiveImportsError, mt as ensureAssetStorage, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nt as S3StateBackend, o as planFailedOps, on as LocalStartServiceError, ot as stringifyValue, p as ATOMIC_FINAL_SNAPSHOT_TYPES, pn as ResourceUpdateNotSupportedError, pt as BOOTSTRAP_MARKER_PREFIX, q as assertRegionMatch, r as DeployEngine, rn as DeployCancelledError, rt as rebuildClientForBucketRegion, s as planRollback, st as WorkGraph, t as DEFAULT_RESOURCE_TIMEOUT_MS, tt as LockManager, u as withResourceDeadline, un as PartialFailureError, ut as loadPublishableAssetManifest, v as isFinalSnapshotError, vt as validateContainerRepoName, w as renderStatefulReason, wt as AssetManifestLoader, x as extractDeploymentEventError, xn as withErrorHandling, xt as getDockerCmd, y as refusesFinalSnapshot, yt as buildDockerImage, z as disableInstanceApiTermination, zt as CFN_TEMPLATE_BODY_LIMIT } from "./deploy-engine-
|
|
2
|
+
import { $ as DagBuilder, A as red, At as resolveApp, B as isTerminationProtectionPropagationError, Bt as CFN_TEMPLATE_URL_LIMIT, C as isStatefulRecreateTargetSync, Ct as runDockerStreaming, D as cyan, Dt as synthesisStatusMessage, E as bold, Et as Synthesizer, F as ProviderRegistry, Ft as resolveStateBucketWithDefaultAndSource, G as normalizeAwsTagsToCfn, Gt as AssemblyReader, H as cfnRefValueFromPhysicalId, Ht as findLargeInlineResources, I as findActionableSilentDrops, It as resolveUseCdkBootstrapAssets, J as applyRoleArnIfSet, Jt as resolveBucketRegion, K as resolveExplicitPhysicalId, Kt as processStackMessages, L as CloudControlProvider, Lt as stateBucketExistenceConfirmed, M as IAMRoleProvider, Mt as resolveCaptureObservedState, N as collectInlinePolicyNamesManagedBySiblings, Nt as resolveSkipPrefix, O as gray, Ot as getDefaultStateBucketName, P as clearOnUpdateRemoval, Pt as resolveStateBucketWithDefault, Q as isRetryableTransientError, Qt as setAwsClients, R as slowCcOperationTimeoutMs, Rt as warnDeprecatedNoPrefixCliFlag, S as MULTI_REGION_RECREATE_BLOCKED_TYPES, St as runDockerForeground, T as formatResourceLine, Tt as getDockerImageBySourceHash, U as refStateLookupFromResource, Ut as uploadCfnTemplate, V as IntrinsicFunctionResolver, Vt as MIGRATE_TMP_PREFIX, W as WAFv2WebACLProvider, Wt as expectedOwnerParam, X as describeTypeWithThrottleRetry, Xt as getAwsClients, Y as DiffCalculator, Yt as AwsClients, Z as withRetry, Zt as resetAwsClients, _ as createPreDeleteFinalSnapshot, _t as validateAssetBucketName, a as DeploymentEventsStore, an as LocalMigrateError, at as AssetPublisher, b as unsupportedFinalSnapshotError, bn as normalizeAwsError, bt as formatDockerLoginError, c as replayFailedOperations, cn as MissingCdkCliError, ct as buildAssetRedirectMap, d as IMPLICIT_DELETE_DEPENDENCIES, dn as ProvisioningError, dt as rewriteTemplateAssetReferences, en as CdkdError, et as TemplateParser, f as computeImplicitDeleteEdges, fn as ResourceTimeoutError, ft as AssetModeResolver, g as ccRoutedFinalSnapshotError, gt as parseBootstrapMarker, h as buildFinalSnapshotIdentifier, hn as StackTerminationProtectionError, ht as getBootstrapMarkerKey, i as DeploymentEventsReader, in as LocalInvokeBuildError$1, it as shouldRetainResource, j as yellow, jt as resolveAutoAssetStorage, k as green, kt as getLegacyStateBucketName, l as replayRollback, ln as NestedStackChildDirectDestroyError, lt as createAssetRedirectResolver, m as PRE_DELETE_SNAPSHOT_TYPES, mn as StackHasActiveImportsError, mt as ensureAssetStorage, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nt as S3StateBackend, o as planFailedOps, on as LocalStartServiceError, ot as stringifyValue, p as ATOMIC_FINAL_SNAPSHOT_TYPES, pn as ResourceUpdateNotSupportedError, pt as BOOTSTRAP_MARKER_PREFIX, q as assertRegionMatch, r as DeployEngine, rn as DeployCancelledError, rt as rebuildClientForBucketRegion, s as planRollback, st as WorkGraph, t as DEFAULT_RESOURCE_TIMEOUT_MS, tt as LockManager, u as withResourceDeadline, un as PartialFailureError, ut as loadPublishableAssetManifest, v as isFinalSnapshotError, vt as validateContainerRepoName, w as renderStatefulReason, wt as AssetManifestLoader, x as extractDeploymentEventError, xn as withErrorHandling, xt as getDockerCmd, y as refusesFinalSnapshot, yt as buildDockerImage, z as disableInstanceApiTermination, zt as CFN_TEMPLATE_BODY_LIMIT } from "./deploy-engine-CunQFmO7.js";
|
|
3
3
|
import { a as getLiveRenderer, c as PATTERN_B_RESOURCE_TYPES, d as generateResourceNameWithFallback, f as withSkipPrefix, i as runStackBuffered, n as getLogger, o as PATTERN_B_NAME_OPTIONS, p as withStackName, s as PATTERN_B_NAME_PROPERTIES, u as generateResourceName } from "./logger-BYMEE-BS.js";
|
|
4
|
-
import { t as ASGProvider } from "./asg-provider-
|
|
4
|
+
import { t as ASGProvider } from "./asg-provider-D2NA5UuZ.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";
|
|
@@ -14790,6 +14790,112 @@ var EventBridgeRuleProvider = class {
|
|
|
14790
14790
|
this.eventBridgeClient = awsClients.eventBridge;
|
|
14791
14791
|
}
|
|
14792
14792
|
/**
|
|
14793
|
+
* Convert each target's CFn-shaped `EcsParameters` to the SDK shape
|
|
14794
|
+
* (issue #1381). The `AWS::Events::Rule` schema and
|
|
14795
|
+
* `@aws-sdk/client-eventbridge` diverge on several ECS sub-shape
|
|
14796
|
+
* spellings, and the SDK serializer silently drops unknown keys — a
|
|
14797
|
+
* Fargate target's `NetworkConfiguration.AwsVpcConfiguration` never
|
|
14798
|
+
* reached AWS, so PutTargets rejected with "Parameter
|
|
14799
|
+
* NetworkConfiguration must be specified".
|
|
14800
|
+
*/
|
|
14801
|
+
toSdkTargets(targets) {
|
|
14802
|
+
return targets.map((target) => {
|
|
14803
|
+
const ecs = target["EcsParameters"];
|
|
14804
|
+
if (!ecs) return target;
|
|
14805
|
+
return {
|
|
14806
|
+
...target,
|
|
14807
|
+
EcsParameters: this.toSdkEcsParameters(ecs)
|
|
14808
|
+
};
|
|
14809
|
+
});
|
|
14810
|
+
}
|
|
14811
|
+
toSdkEcsParameters(ecs) {
|
|
14812
|
+
const result = { ...ecs };
|
|
14813
|
+
const network = result["NetworkConfiguration"];
|
|
14814
|
+
if (network && network["AwsVpcConfiguration"] !== void 0) {
|
|
14815
|
+
const { AwsVpcConfiguration, ...restNetwork } = network;
|
|
14816
|
+
result["NetworkConfiguration"] = {
|
|
14817
|
+
...restNetwork,
|
|
14818
|
+
awsvpcConfiguration: AwsVpcConfiguration
|
|
14819
|
+
};
|
|
14820
|
+
}
|
|
14821
|
+
if (result["TagList"] !== void 0) {
|
|
14822
|
+
result["Tags"] = result["TagList"];
|
|
14823
|
+
delete result["TagList"];
|
|
14824
|
+
}
|
|
14825
|
+
if (Array.isArray(result["PlacementStrategies"])) {
|
|
14826
|
+
result["PlacementStrategy"] = result["PlacementStrategies"].map((item) => this.lowerCaseItemKeys(item, ["Type", "Field"]));
|
|
14827
|
+
delete result["PlacementStrategies"];
|
|
14828
|
+
}
|
|
14829
|
+
if (Array.isArray(result["PlacementConstraints"])) result["PlacementConstraints"] = result["PlacementConstraints"].map((item) => this.lowerCaseItemKeys(item, ["Type", "Expression"]));
|
|
14830
|
+
if (Array.isArray(result["CapacityProviderStrategy"])) result["CapacityProviderStrategy"] = result["CapacityProviderStrategy"].map((item) => this.lowerCaseItemKeys(item, [
|
|
14831
|
+
"CapacityProvider",
|
|
14832
|
+
"Weight",
|
|
14833
|
+
"Base"
|
|
14834
|
+
]));
|
|
14835
|
+
return result;
|
|
14836
|
+
}
|
|
14837
|
+
/**
|
|
14838
|
+
* Inverse of {@link toSdkEcsParameters} for `readCurrentState`:
|
|
14839
|
+
* ListTargetsByRule returns the SDK spellings, but drift compares the
|
|
14840
|
+
* whole `Targets` array against state's CFn spellings — without the
|
|
14841
|
+
* re-map every ECS Fargate rule target would report phantom drift on
|
|
14842
|
+
* `AwsVpcConfiguration` / `TagList` / `PlacementStrategies` under the
|
|
14843
|
+
* `properties`-fallback baseline.
|
|
14844
|
+
*/
|
|
14845
|
+
toCfnTargets(targets) {
|
|
14846
|
+
return targets.map((target) => {
|
|
14847
|
+
const ecs = target["EcsParameters"];
|
|
14848
|
+
if (!ecs) return target;
|
|
14849
|
+
return {
|
|
14850
|
+
...target,
|
|
14851
|
+
EcsParameters: this.toCfnEcsParameters(ecs)
|
|
14852
|
+
};
|
|
14853
|
+
});
|
|
14854
|
+
}
|
|
14855
|
+
toCfnEcsParameters(ecs) {
|
|
14856
|
+
const result = { ...ecs };
|
|
14857
|
+
const network = result["NetworkConfiguration"];
|
|
14858
|
+
if (network && network["awsvpcConfiguration"] !== void 0) {
|
|
14859
|
+
const { awsvpcConfiguration, ...restNetwork } = network;
|
|
14860
|
+
result["NetworkConfiguration"] = {
|
|
14861
|
+
...restNetwork,
|
|
14862
|
+
AwsVpcConfiguration: awsvpcConfiguration
|
|
14863
|
+
};
|
|
14864
|
+
}
|
|
14865
|
+
if (result["Tags"] !== void 0) {
|
|
14866
|
+
result["TagList"] = result["Tags"];
|
|
14867
|
+
delete result["Tags"];
|
|
14868
|
+
}
|
|
14869
|
+
if (Array.isArray(result["PlacementStrategy"])) {
|
|
14870
|
+
result["PlacementStrategies"] = result["PlacementStrategy"].map((item) => this.renameItemKeys(item, ["type", "field"], "upper"));
|
|
14871
|
+
delete result["PlacementStrategy"];
|
|
14872
|
+
}
|
|
14873
|
+
if (Array.isArray(result["PlacementConstraints"])) result["PlacementConstraints"] = result["PlacementConstraints"].map((item) => this.renameItemKeys(item, ["type", "expression"], "upper"));
|
|
14874
|
+
if (Array.isArray(result["CapacityProviderStrategy"])) result["CapacityProviderStrategy"] = result["CapacityProviderStrategy"].map((item) => this.renameItemKeys(item, [
|
|
14875
|
+
"capacityProvider",
|
|
14876
|
+
"weight",
|
|
14877
|
+
"base"
|
|
14878
|
+
], "upper"));
|
|
14879
|
+
return result;
|
|
14880
|
+
}
|
|
14881
|
+
lowerCaseItemKeys(item, keys) {
|
|
14882
|
+
return this.renameItemKeys(item, keys, "lower");
|
|
14883
|
+
}
|
|
14884
|
+
/**
|
|
14885
|
+
* Flip the first letter's case on the listed keys of one array item
|
|
14886
|
+
* (`Type` <-> `type`, `CapacityProvider` <-> `capacityProvider`); keys
|
|
14887
|
+
* not listed (or absent) pass through unchanged.
|
|
14888
|
+
*/
|
|
14889
|
+
renameItemKeys(item, keys, direction) {
|
|
14890
|
+
const result = { ...item };
|
|
14891
|
+
for (const key of keys) if (result[key] !== void 0) {
|
|
14892
|
+
const flipped = direction === "lower" ? key.charAt(0).toLowerCase() + key.slice(1) : key.charAt(0).toUpperCase() + key.slice(1);
|
|
14893
|
+
result[flipped] = result[key];
|
|
14894
|
+
delete result[key];
|
|
14895
|
+
}
|
|
14896
|
+
return result;
|
|
14897
|
+
}
|
|
14898
|
+
/**
|
|
14793
14899
|
* Create an EventBridge rule
|
|
14794
14900
|
*/
|
|
14795
14901
|
async create(logicalId, resourceType, properties) {
|
|
@@ -14813,7 +14919,7 @@ var EventBridgeRuleProvider = class {
|
|
|
14813
14919
|
await this.eventBridgeClient.send(new PutTargetsCommand({
|
|
14814
14920
|
Rule: ruleName,
|
|
14815
14921
|
EventBusName: eventBusName,
|
|
14816
|
-
Targets: targets
|
|
14922
|
+
Targets: this.toSdkTargets(targets)
|
|
14817
14923
|
}));
|
|
14818
14924
|
this.logger.debug(`Added ${targets.length} targets to rule ${ruleName}`);
|
|
14819
14925
|
}
|
|
@@ -14881,7 +14987,7 @@ var EventBridgeRuleProvider = class {
|
|
|
14881
14987
|
await this.eventBridgeClient.send(new PutTargetsCommand({
|
|
14882
14988
|
Rule: ruleName,
|
|
14883
14989
|
EventBusName: eventBusName,
|
|
14884
|
-
Targets: newTargets
|
|
14990
|
+
Targets: this.toSdkTargets(newTargets)
|
|
14885
14991
|
}));
|
|
14886
14992
|
this.logger.debug(`Updated ${newTargets.length} targets on rule ${ruleName}`);
|
|
14887
14993
|
}
|
|
@@ -15014,10 +15120,11 @@ var EventBridgeRuleProvider = class {
|
|
|
15014
15120
|
if (resp.State !== void 0) result["State"] = resp.State;
|
|
15015
15121
|
if (resp.RoleArn !== void 0) result["RoleArn"] = resp.RoleArn;
|
|
15016
15122
|
try {
|
|
15017
|
-
|
|
15123
|
+
const targetsResp = await this.eventBridgeClient.send(new ListTargetsByRuleCommand({
|
|
15018
15124
|
Rule: ruleName,
|
|
15019
15125
|
...busParam
|
|
15020
|
-
}))
|
|
15126
|
+
}));
|
|
15127
|
+
result["Targets"] = this.toCfnTargets(targetsResp.Targets ?? []);
|
|
15021
15128
|
} catch (err) {
|
|
15022
15129
|
if (!(err instanceof ResourceNotFoundException$2)) throw err;
|
|
15023
15130
|
}
|
|
@@ -29391,6 +29498,19 @@ var CognitoUserPoolProvider = class {
|
|
|
29391
29498
|
return this.cognitoClient;
|
|
29392
29499
|
}
|
|
29393
29500
|
/**
|
|
29501
|
+
* Build the SDK `Policies` input from the CFn `Policies` blob. Both
|
|
29502
|
+
* sub-keys must be forwarded: `SignInPolicy` (passwordless first-auth
|
|
29503
|
+
* factors) was silently dropped before issue #1380, and UpdateUserPool
|
|
29504
|
+
* resets omitted attributes to their defaults, so leaving it out also
|
|
29505
|
+
* wipes an existing sign-in policy on every update.
|
|
29506
|
+
*/
|
|
29507
|
+
toSdkUserPoolPolicies(policies) {
|
|
29508
|
+
const result = {};
|
|
29509
|
+
if (policies["PasswordPolicy"]) result.PasswordPolicy = policies["PasswordPolicy"];
|
|
29510
|
+
if (policies["SignInPolicy"]) result.SignInPolicy = policies["SignInPolicy"];
|
|
29511
|
+
return Object.keys(result).length > 0 ? result : void 0;
|
|
29512
|
+
}
|
|
29513
|
+
/**
|
|
29394
29514
|
* Create a Cognito User Pool
|
|
29395
29515
|
*/
|
|
29396
29516
|
async create(logicalId, resourceType, properties) {
|
|
@@ -29402,8 +29522,8 @@ var CognitoUserPoolProvider = class {
|
|
|
29402
29522
|
if (properties["AutoVerifiedAttributes"]) createParams.AutoVerifiedAttributes = properties["AutoVerifiedAttributes"];
|
|
29403
29523
|
if (properties["UsernameAttributes"]) createParams.UsernameAttributes = properties["UsernameAttributes"];
|
|
29404
29524
|
if (properties["Policies"]) {
|
|
29405
|
-
const
|
|
29406
|
-
if (
|
|
29525
|
+
const sdkPolicies = this.toSdkUserPoolPolicies(properties["Policies"]);
|
|
29526
|
+
if (sdkPolicies) createParams.Policies = sdkPolicies;
|
|
29407
29527
|
}
|
|
29408
29528
|
if (properties["Schema"]) createParams.Schema = properties["Schema"];
|
|
29409
29529
|
if (properties["LambdaConfig"]) createParams.LambdaConfig = properties["LambdaConfig"];
|
|
@@ -29498,8 +29618,8 @@ var CognitoUserPoolProvider = class {
|
|
|
29498
29618
|
try {
|
|
29499
29619
|
const updateParams = { UserPoolId: physicalId };
|
|
29500
29620
|
if (properties["Policies"]) {
|
|
29501
|
-
const
|
|
29502
|
-
if (
|
|
29621
|
+
const sdkPolicies = this.toSdkUserPoolPolicies(properties["Policies"]);
|
|
29622
|
+
if (sdkPolicies) updateParams.Policies = sdkPolicies;
|
|
29503
29623
|
}
|
|
29504
29624
|
if (properties["LambdaConfig"]) updateParams.LambdaConfig = properties["LambdaConfig"];
|
|
29505
29625
|
if (properties["AutoVerifiedAttributes"]) updateParams.AutoVerifiedAttributes = properties["AutoVerifiedAttributes"];
|
|
@@ -35264,14 +35384,16 @@ var SchedulerScheduleProvider = class {
|
|
|
35264
35384
|
}
|
|
35265
35385
|
/**
|
|
35266
35386
|
* Map the CFn property shape to the Scheduler SDK input shape. The two
|
|
35267
|
-
* are PascalCase-identical except `StartDate` / `EndDate
|
|
35268
|
-
*
|
|
35387
|
+
* are PascalCase-identical except `StartDate` / `EndDate` (CFn carries
|
|
35388
|
+
* ISO strings, the SDK types `Date`) and the Target's ECS sub-shapes
|
|
35389
|
+
* (camelCase islands in the SDK model — see {@link toSdkTarget},
|
|
35390
|
+
* issue #1382).
|
|
35269
35391
|
*/
|
|
35270
35392
|
toSdkFields(properties) {
|
|
35271
35393
|
return {
|
|
35272
35394
|
ScheduleExpression: properties["ScheduleExpression"],
|
|
35273
35395
|
FlexibleTimeWindow: properties["FlexibleTimeWindow"],
|
|
35274
|
-
Target: properties["Target"],
|
|
35396
|
+
Target: this.toSdkTarget(properties["Target"]),
|
|
35275
35397
|
...properties["Description"] !== void 0 && { Description: properties["Description"] },
|
|
35276
35398
|
...properties["ScheduleExpressionTimezone"] !== void 0 && { ScheduleExpressionTimezone: properties["ScheduleExpressionTimezone"] },
|
|
35277
35399
|
...properties["StartDate"] !== void 0 && { StartDate: new Date(properties["StartDate"]) },
|
|
@@ -35280,6 +35402,84 @@ var SchedulerScheduleProvider = class {
|
|
|
35280
35402
|
...properties["KmsKeyArn"] !== void 0 && { KmsKeyArn: properties["KmsKeyArn"] }
|
|
35281
35403
|
};
|
|
35282
35404
|
}
|
|
35405
|
+
/**
|
|
35406
|
+
* Convert the CFn-shaped `Target` blob's ECS sub-shapes to the SDK shape
|
|
35407
|
+
* (issue #1382). `@aws-sdk/client-scheduler` is PascalCase except a few
|
|
35408
|
+
* camelCase islands the CFn schema spells PascalCase; the SDK serializer
|
|
35409
|
+
* silently drops unknown keys, so a Fargate target's
|
|
35410
|
+
* `NetworkConfiguration.AwsvpcConfiguration` never reached AWS and
|
|
35411
|
+
* CreateSchedule rejected with "Parameter NetworkConfiguration must be
|
|
35412
|
+
* specified".
|
|
35413
|
+
*/
|
|
35414
|
+
toSdkTarget(target) {
|
|
35415
|
+
const ecs = target["EcsParameters"];
|
|
35416
|
+
if (!ecs) return target;
|
|
35417
|
+
const result = { ...ecs };
|
|
35418
|
+
const network = result["NetworkConfiguration"];
|
|
35419
|
+
if (network && network["AwsvpcConfiguration"] !== void 0) {
|
|
35420
|
+
const { AwsvpcConfiguration, ...restNetwork } = network;
|
|
35421
|
+
result["NetworkConfiguration"] = {
|
|
35422
|
+
...restNetwork,
|
|
35423
|
+
awsvpcConfiguration: AwsvpcConfiguration
|
|
35424
|
+
};
|
|
35425
|
+
}
|
|
35426
|
+
if (Array.isArray(result["PlacementStrategy"])) result["PlacementStrategy"] = result["PlacementStrategy"].map((item) => this.renameItemKeys(item, ["Type", "Field"], "lower"));
|
|
35427
|
+
if (Array.isArray(result["PlacementConstraints"])) result["PlacementConstraints"] = result["PlacementConstraints"].map((item) => this.renameItemKeys(item, ["Type", "Expression"], "lower"));
|
|
35428
|
+
if (Array.isArray(result["CapacityProviderStrategy"])) result["CapacityProviderStrategy"] = result["CapacityProviderStrategy"].map((item) => this.renameItemKeys(item, [
|
|
35429
|
+
"CapacityProvider",
|
|
35430
|
+
"Weight",
|
|
35431
|
+
"Base"
|
|
35432
|
+
], "lower"));
|
|
35433
|
+
return {
|
|
35434
|
+
...target,
|
|
35435
|
+
EcsParameters: result
|
|
35436
|
+
};
|
|
35437
|
+
}
|
|
35438
|
+
/**
|
|
35439
|
+
* Inverse of {@link toSdkTarget} for `readCurrentState`: GetSchedule
|
|
35440
|
+
* returns the SDK spellings, but drift compares against the state's CFn
|
|
35441
|
+
* spellings — without the re-map every ECS Fargate schedule would report
|
|
35442
|
+
* phantom drift on `AwsvpcConfiguration` after deploy.
|
|
35443
|
+
*/
|
|
35444
|
+
toCfnTarget(target) {
|
|
35445
|
+
const raw = target;
|
|
35446
|
+
const ecs = raw["EcsParameters"];
|
|
35447
|
+
if (!ecs) return raw;
|
|
35448
|
+
const result = { ...ecs };
|
|
35449
|
+
const network = result["NetworkConfiguration"];
|
|
35450
|
+
if (network && network["awsvpcConfiguration"] !== void 0) {
|
|
35451
|
+
const { awsvpcConfiguration, ...restNetwork } = network;
|
|
35452
|
+
result["NetworkConfiguration"] = {
|
|
35453
|
+
...restNetwork,
|
|
35454
|
+
AwsvpcConfiguration: awsvpcConfiguration
|
|
35455
|
+
};
|
|
35456
|
+
}
|
|
35457
|
+
if (Array.isArray(result["PlacementStrategy"])) result["PlacementStrategy"] = result["PlacementStrategy"].map((item) => this.renameItemKeys(item, ["type", "field"], "upper"));
|
|
35458
|
+
if (Array.isArray(result["PlacementConstraints"])) result["PlacementConstraints"] = result["PlacementConstraints"].map((item) => this.renameItemKeys(item, ["type", "expression"], "upper"));
|
|
35459
|
+
if (Array.isArray(result["CapacityProviderStrategy"])) result["CapacityProviderStrategy"] = result["CapacityProviderStrategy"].map((item) => this.renameItemKeys(item, [
|
|
35460
|
+
"capacityProvider",
|
|
35461
|
+
"weight",
|
|
35462
|
+
"base"
|
|
35463
|
+
], "upper"));
|
|
35464
|
+
return {
|
|
35465
|
+
...raw,
|
|
35466
|
+
EcsParameters: result
|
|
35467
|
+
};
|
|
35468
|
+
}
|
|
35469
|
+
/**
|
|
35470
|
+
* Flip the first letter's case on the listed keys of one array item
|
|
35471
|
+
* (`Type` <-> `type`, `CapacityProvider` <-> `capacityProvider`); keys
|
|
35472
|
+
* not listed (or absent) pass through unchanged.
|
|
35473
|
+
*/
|
|
35474
|
+
renameItemKeys(item, keys, direction) {
|
|
35475
|
+
const result = { ...item };
|
|
35476
|
+
for (const key of keys) if (result[key] !== void 0) {
|
|
35477
|
+
const flipped = direction === "lower" ? key.charAt(0).toLowerCase() + key.slice(1) : key.charAt(0).toUpperCase() + key.slice(1);
|
|
35478
|
+
result[flipped] = result[key];
|
|
35479
|
+
delete result[key];
|
|
35480
|
+
}
|
|
35481
|
+
return result;
|
|
35482
|
+
}
|
|
35283
35483
|
async create(logicalId, resourceType, properties) {
|
|
35284
35484
|
const name = properties["Name"] ?? generateResourceName(logicalId, { maxLength: 64 });
|
|
35285
35485
|
const groupName = this.groupNameOf(properties);
|
|
@@ -35382,7 +35582,7 @@ var SchedulerScheduleProvider = class {
|
|
|
35382
35582
|
...response.State !== void 0 && { State: response.State },
|
|
35383
35583
|
...response.KmsKeyArn !== void 0 && { KmsKeyArn: response.KmsKeyArn },
|
|
35384
35584
|
...response.FlexibleTimeWindow !== void 0 && { FlexibleTimeWindow: response.FlexibleTimeWindow },
|
|
35385
|
-
...response.Target !== void 0 && { Target: response.Target }
|
|
35585
|
+
...response.Target !== void 0 && { Target: this.toCfnTarget(response.Target) }
|
|
35386
35586
|
};
|
|
35387
35587
|
} catch (error) {
|
|
35388
35588
|
if (error instanceof ResourceNotFoundException$11) return;
|
|
@@ -64085,7 +64285,7 @@ function createMigrateCommand() {
|
|
|
64085
64285
|
*/
|
|
64086
64286
|
function buildProgram() {
|
|
64087
64287
|
const program = new Command();
|
|
64088
|
-
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.278.
|
|
64288
|
+
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.278.2");
|
|
64089
64289
|
program.hook("preAction", (_thisCommand, actionCommand) => {
|
|
64090
64290
|
const { profile } = actionCommand.optsWithGlobals();
|
|
64091
64291
|
if (profile !== void 0) process.env["AWS_PROFILE"] = profile;
|