@go-to-k/cdkd 0.51.8 → 0.51.10
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 +94 -42
- package/dist/cli.js.map +2 -2
- package/dist/go-to-k-cdkd-0.51.10.tgz +0 -0
- package/package.json +1 -1
- package/dist/go-to-k-cdkd-0.51.8.tgz +0 -0
package/dist/cli.js
CHANGED
|
@@ -13792,10 +13792,15 @@ var SNSTopicProvider = class {
|
|
|
13792
13792
|
* `create()`'s behavior of only sending Tags when the template carries
|
|
13793
13793
|
* them).
|
|
13794
13794
|
*
|
|
13795
|
-
* `DeliveryStatusLogging` is
|
|
13796
|
-
*
|
|
13797
|
-
*
|
|
13798
|
-
*
|
|
13795
|
+
* `DeliveryStatusLogging` is reverse-mapped from per-protocol flat
|
|
13796
|
+
* attributes (`{Protocol}SuccessFeedbackRoleArn` etc.) back to the CFn
|
|
13797
|
+
* array shape `[{Protocol, SuccessFeedbackRoleArn?, SuccessFeedbackSampleRate?,
|
|
13798
|
+
* FailureFeedbackRoleArn?}]`. Walks the known protocol prefix list
|
|
13799
|
+
* (`HTTP` / `HTTPS` / `SQS` / `Lambda` / `Firehose` / `Application`); a
|
|
13800
|
+
* protocol is included in the result iff at least one of its three
|
|
13801
|
+
* sub-attributes is set on the topic. Entries are sorted by `Protocol`
|
|
13802
|
+
* for stable positional compare (AWS does not preserve template order
|
|
13803
|
+
* across `GetTopicAttributes` calls).
|
|
13799
13804
|
*
|
|
13800
13805
|
* `Subscription` is omitted because CDK manages it via separate
|
|
13801
13806
|
* `AWS::SNS::Subscription` resources, not as a Topic property.
|
|
@@ -13844,6 +13849,7 @@ var SNSTopicProvider = class {
|
|
|
13844
13849
|
}
|
|
13845
13850
|
}
|
|
13846
13851
|
}
|
|
13852
|
+
result["DeliveryStatusLogging"] = mapDeliveryStatusLogging(attrs);
|
|
13847
13853
|
try {
|
|
13848
13854
|
const tagsResp = await this.snsClient.send(
|
|
13849
13855
|
new ListTagsForResourceCommand({ ResourceArn: physicalId })
|
|
@@ -13858,16 +13864,13 @@ var SNSTopicProvider = class {
|
|
|
13858
13864
|
return result;
|
|
13859
13865
|
}
|
|
13860
13866
|
/**
|
|
13861
|
-
* `
|
|
13862
|
-
*
|
|
13863
|
-
*
|
|
13864
|
-
*
|
|
13865
|
-
* itself. Both are absent from `readCurrentState`, so tell the drift
|
|
13866
|
-
* comparator to skip them and avoid the guaranteed false-positive that
|
|
13867
|
-
* would fire on every clean run when the user did template either.
|
|
13867
|
+
* Only `Subscription` remains drift-unknown — CDK manages topic
|
|
13868
|
+
* subscriptions via separate `AWS::SNS::Subscription` resources, so the
|
|
13869
|
+
* inline `Topic.Subscription` property is intentionally not surfaced.
|
|
13870
|
+
* `DeliveryStatusLogging` is now reverse-mapped (see `readCurrentState`).
|
|
13868
13871
|
*/
|
|
13869
13872
|
getDriftUnknownPaths() {
|
|
13870
|
-
return ["
|
|
13873
|
+
return ["Subscription"];
|
|
13871
13874
|
}
|
|
13872
13875
|
/**
|
|
13873
13876
|
* Adopt an existing SNS topic into cdkd state.
|
|
@@ -13927,6 +13930,33 @@ var SNSTopicProvider = class {
|
|
|
13927
13930
|
return null;
|
|
13928
13931
|
}
|
|
13929
13932
|
};
|
|
13933
|
+
var SNS_DELIVERY_STATUS_PROTOCOLS = [
|
|
13934
|
+
"Application",
|
|
13935
|
+
"Firehose",
|
|
13936
|
+
"HTTP",
|
|
13937
|
+
"HTTPS",
|
|
13938
|
+
"Lambda",
|
|
13939
|
+
"SQS"
|
|
13940
|
+
];
|
|
13941
|
+
function mapDeliveryStatusLogging(attrs) {
|
|
13942
|
+
const result = [];
|
|
13943
|
+
for (const protocol of SNS_DELIVERY_STATUS_PROTOCOLS) {
|
|
13944
|
+
const success = attrs[`${protocol}SuccessFeedbackRoleArn`];
|
|
13945
|
+
const sample = attrs[`${protocol}SuccessFeedbackSampleRate`];
|
|
13946
|
+
const failure = attrs[`${protocol}FailureFeedbackRoleArn`];
|
|
13947
|
+
if (success === void 0 && sample === void 0 && failure === void 0)
|
|
13948
|
+
continue;
|
|
13949
|
+
const entry = { Protocol: protocol };
|
|
13950
|
+
if (success !== void 0)
|
|
13951
|
+
entry["SuccessFeedbackRoleArn"] = success;
|
|
13952
|
+
if (sample !== void 0)
|
|
13953
|
+
entry["SuccessFeedbackSampleRate"] = sample;
|
|
13954
|
+
if (failure !== void 0)
|
|
13955
|
+
entry["FailureFeedbackRoleArn"] = failure;
|
|
13956
|
+
result.push(entry);
|
|
13957
|
+
}
|
|
13958
|
+
return result;
|
|
13959
|
+
}
|
|
13930
13960
|
|
|
13931
13961
|
// src/provisioning/providers/sns-subscription-provider.ts
|
|
13932
13962
|
import {
|
|
@@ -19471,7 +19501,8 @@ import {
|
|
|
19471
19501
|
DescribeNetworkAclsCommand,
|
|
19472
19502
|
DescribeNetworkInterfacesCommand as DescribeNetworkInterfacesCommand2,
|
|
19473
19503
|
DeleteNetworkInterfaceCommand as DeleteNetworkInterfaceCommand2,
|
|
19474
|
-
DescribeVolumesCommand
|
|
19504
|
+
DescribeVolumesCommand,
|
|
19505
|
+
DescribeInstanceAttributeCommand
|
|
19475
19506
|
} from "@aws-sdk/client-ec2";
|
|
19476
19507
|
init_aws_clients();
|
|
19477
19508
|
var EC2Provider = class {
|
|
@@ -21761,12 +21792,14 @@ var EC2Provider = class {
|
|
|
21761
21792
|
* `(DeviceName, Ebs.VolumeId, Ebs.DeleteOnTermination)`; cdkd
|
|
21762
21793
|
* additionally calls `DescribeVolumes` on the attached volume ids to
|
|
21763
21794
|
* surface `VolumeType` / `VolumeSize` / `Iops` / `Throughput` /
|
|
21764
|
-
* `Encrypted` / `KmsKeyId` / `SnapshotId`.
|
|
21765
|
-
* is
|
|
21766
|
-
*
|
|
21767
|
-
*
|
|
21768
|
-
*
|
|
21769
|
-
*
|
|
21795
|
+
* `Encrypted` / `KmsKeyId` / `SnapshotId`. `DisableApiTermination`
|
|
21796
|
+
* is recovered via a separate `DescribeInstanceAttribute` call (the
|
|
21797
|
+
* `DescribeInstances` response does not include it). Both extra
|
|
21798
|
+
* calls are best-effort — a permissions gap or other failure falls
|
|
21799
|
+
* back to omitting the key. All arrays / scalars that map to
|
|
21800
|
+
* user-controllable CFn properties are always emitted (even as `[]`
|
|
21801
|
+
* or default scalar) so the v3 `observedProperties` baseline
|
|
21802
|
+
* catches console-side ADDs.
|
|
21770
21803
|
* - **AWS::EC2::NetworkAcl**: `DescribeNetworkAcls` for `VpcId`.
|
|
21771
21804
|
*
|
|
21772
21805
|
* Skipped (return `undefined`, falls through to the comparator's
|
|
@@ -22037,6 +22070,21 @@ var EC2Provider = class {
|
|
|
22037
22070
|
}
|
|
22038
22071
|
result["BlockDeviceMappings"] = blockMappings;
|
|
22039
22072
|
result["Tags"] = normalizeAwsTagsToCfn(instance.Tags);
|
|
22073
|
+
try {
|
|
22074
|
+
const attrResp = await this.ec2Client.send(
|
|
22075
|
+
new DescribeInstanceAttributeCommand({
|
|
22076
|
+
InstanceId: physicalId,
|
|
22077
|
+
Attribute: "disableApiTermination"
|
|
22078
|
+
})
|
|
22079
|
+
);
|
|
22080
|
+
if (attrResp.DisableApiTermination?.Value !== void 0) {
|
|
22081
|
+
result["DisableApiTermination"] = attrResp.DisableApiTermination.Value;
|
|
22082
|
+
}
|
|
22083
|
+
} catch (err) {
|
|
22084
|
+
this.logger.debug(
|
|
22085
|
+
`DescribeInstanceAttribute(disableApiTermination, ${physicalId}) failed: ${err instanceof Error ? err.message : String(err)}`
|
|
22086
|
+
);
|
|
22087
|
+
}
|
|
22040
22088
|
return result;
|
|
22041
22089
|
}
|
|
22042
22090
|
async readNetworkAclCurrentState(physicalId) {
|
|
@@ -35737,10 +35785,14 @@ var FirehoseProvider = class {
|
|
|
35737
35785
|
* from `VpcConfigurationDescription`. Write-only fields AWS strips
|
|
35738
35786
|
* from descriptions (`RedshiftDestinationConfiguration.Password`,
|
|
35739
35787
|
* `HttpEndpointDestinationConfiguration.EndpointConfiguration.AccessKey`)
|
|
35740
|
-
* stay drift-unknown via `getDriftUnknownPaths
|
|
35741
|
-
*
|
|
35742
|
-
*
|
|
35743
|
-
* `DeliveryStreamEncryptionConfiguration`
|
|
35788
|
+
* stay drift-unknown via `getDriftUnknownPaths` — no AWS API recovers them.
|
|
35789
|
+
*
|
|
35790
|
+
* `DeliveryStreamEncryptionConfigurationInput` is also surfaced. AWS
|
|
35791
|
+
* returns the read-side shape `DeliveryStreamEncryptionConfiguration`
|
|
35792
|
+
* (with extra `Status` / `FailureDescription` fields); we reverse-map
|
|
35793
|
+
* to the CFn input shape (`KeyARN` + `KeyType`) and always emit a
|
|
35794
|
+
* `{}` placeholder so the v3 baseline catches console-side encryption
|
|
35795
|
+
* enables on a previously-default stream.
|
|
35744
35796
|
*
|
|
35745
35797
|
* Tags are surfaced via a follow-up `ListTagsForDeliveryStream` call
|
|
35746
35798
|
* with `aws:*` filtered out and always emitted as `[]` placeholder when
|
|
@@ -35814,6 +35866,13 @@ var FirehoseProvider = class {
|
|
|
35814
35866
|
dest.HttpEndpointDestinationDescription
|
|
35815
35867
|
);
|
|
35816
35868
|
}
|
|
35869
|
+
const enc = desc.DeliveryStreamEncryptionConfiguration;
|
|
35870
|
+
const encOut = {};
|
|
35871
|
+
if (enc?.KeyARN !== void 0)
|
|
35872
|
+
encOut["KeyARN"] = enc.KeyARN;
|
|
35873
|
+
if (enc?.KeyType !== void 0)
|
|
35874
|
+
encOut["KeyType"] = enc.KeyType;
|
|
35875
|
+
result["DeliveryStreamEncryptionConfigurationInput"] = encOut;
|
|
35817
35876
|
try {
|
|
35818
35877
|
const tagsResp = await this.getClient().send(
|
|
35819
35878
|
new ListTagsForDeliveryStreamCommand({ DeliveryStreamName: physicalId })
|
|
@@ -35836,30 +35895,23 @@ var FirehoseProvider = class {
|
|
|
35836
35895
|
* fire false-positive drift on every run. See the `readCurrentState`
|
|
35837
35896
|
* docstring for the full rationale per category.
|
|
35838
35897
|
*
|
|
35839
|
-
*
|
|
35840
|
-
*
|
|
35841
|
-
*
|
|
35842
|
-
*
|
|
35843
|
-
*
|
|
35844
|
-
* - `DeliveryStreamEncryptionConfigurationInput`: input-only shape
|
|
35845
|
-
* (`KeyARN` + `KeyType`) vs. read-side `DeliveryStreamEncryptionConfiguration`
|
|
35846
|
-
* (extra status / failure fields); not yet round-tripped.
|
|
35898
|
+
* Only write-only fields AWS strips from descriptions remain:
|
|
35899
|
+
* Redshift `Password`, HttpEndpoint `EndpointConfiguration.AccessKey`.
|
|
35900
|
+
* State that carries these would otherwise fire drift on every run —
|
|
35901
|
+
* declaring them as drift-unknown is the cleanest fix because there
|
|
35902
|
+
* is no AWS read API to recover their values.
|
|
35847
35903
|
*
|
|
35848
|
-
* S3 / ExtendedS3 inner nested fields
|
|
35904
|
+
* S3 / ExtendedS3 inner nested fields, non-S3 destination types
|
|
35849
35905
|
* (Redshift / Elasticsearch / Amazonopensearchservice / Splunk /
|
|
35850
|
-
* HttpEndpoint / AmazonOpenSearchServerless)
|
|
35851
|
-
*
|
|
35852
|
-
* `
|
|
35853
|
-
* `mapHttpEndpointDescriptionToCfn` and no longer drift-unknown at the
|
|
35854
|
-
* top level.
|
|
35906
|
+
* HttpEndpoint / AmazonOpenSearchServerless), and
|
|
35907
|
+
* `DeliveryStreamEncryptionConfigurationInput` are all reverse-mapped
|
|
35908
|
+
* by `readCurrentState` and no longer drift-unknown.
|
|
35855
35909
|
*/
|
|
35856
35910
|
getDriftUnknownPaths() {
|
|
35857
35911
|
return [
|
|
35858
|
-
// Write-only fields AWS does not return on read.
|
|
35912
|
+
// Write-only fields AWS does not return on read — no API workaround.
|
|
35859
35913
|
"RedshiftDestinationConfiguration.Password",
|
|
35860
|
-
"HttpEndpointDestinationConfiguration.EndpointConfiguration.AccessKey"
|
|
35861
|
-
// Encryption input shape (deferred — separate Get* call needed).
|
|
35862
|
-
"DeliveryStreamEncryptionConfigurationInput"
|
|
35914
|
+
"HttpEndpointDestinationConfiguration.EndpointConfiguration.AccessKey"
|
|
35863
35915
|
];
|
|
35864
35916
|
}
|
|
35865
35917
|
async import(input) {
|
|
@@ -45188,7 +45240,7 @@ function reorderArgs(argv) {
|
|
|
45188
45240
|
}
|
|
45189
45241
|
async function main() {
|
|
45190
45242
|
const program = new Command14();
|
|
45191
|
-
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.51.
|
|
45243
|
+
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.51.10");
|
|
45192
45244
|
program.addCommand(createBootstrapCommand());
|
|
45193
45245
|
program.addCommand(createSynthCommand());
|
|
45194
45246
|
program.addCommand(createListCommand());
|