@go-to-k/cdkd 0.234.1 → 0.235.1
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/README.md +17 -4
- package/dist/{asg-provider-Dd9Xze-T.js → asg-provider-Dbl1_mwT.js} +3 -2
- package/dist/{asg-provider-Dd9Xze-T.js.map → asg-provider-Dbl1_mwT.js.map} +1 -1
- package/dist/{aws-clients-pjPwZz1r.js → aws-clients-B15NAPbL.js} +1 -1
- package/dist/{aws-clients-pjPwZz1r.js.map → aws-clients-B15NAPbL.js.map} +1 -1
- package/dist/cli.js +82 -13
- package/dist/cli.js.map +1 -1
- package/dist/{deploy-engine-CdAkyW9k.js → deploy-engine-iahWC4C1.js} +141 -11
- package/dist/deploy-engine-iahWC4C1.js.map +1 -0
- package/dist/{ec2-termination-protection-uvVnteGl.js → ec2-termination-protection-q-WGWgxa.js} +3 -827
- package/dist/ec2-termination-protection-q-WGWgxa.js.map +1 -0
- package/dist/expected-bucket-owner-BjEfUnkA.js +87 -0
- package/dist/expected-bucket-owner-BjEfUnkA.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/logger-BzO-joNR.js +828 -0
- package/dist/logger-BzO-joNR.js.map +1 -0
- package/package.json +1 -1
- package/dist/deploy-engine-CdAkyW9k.js.map +0 -1
- package/dist/ec2-termination-protection-uvVnteGl.js.map +0 -1
package/dist/cli.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
import { a as
|
|
4
|
-
import {
|
|
5
|
-
import { t as
|
|
2
|
+
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-BzO-joNR.js";
|
|
3
|
+
import { A as withErrorHandling, C as StackHasActiveImportsError, S as ResourceUpdateNotSupportedError, _ as MissingCdkCliError, a as normalizeAwsTagsToCfn, b as ProvisioningError, f as LocalInvokeBuildError$1, i as matchesCdkPath, k as normalizeAwsError, l as CdkdError, m as LocalStartServiceError, n as isTerminationProtectionPropagationError, o as resolveExplicitPhysicalId, p as LocalMigrateError, r as CDK_PATH_TAG, s as assertRegionMatch, t as disableInstanceApiTermination, v as NestedStackChildDirectDestroyError, w as StackTerminationProtectionError, x as ResourceTimeoutError, y as PartialFailureError } from "./ec2-termination-protection-q-WGWgxa.js";
|
|
4
|
+
import { a as setAwsClients, i as resetAwsClients, r as getAwsClients, t as AwsClients } from "./aws-clients-B15NAPbL.js";
|
|
5
|
+
import { $ as AssetManifestLoader, A as DiffCalculator, B as buildAssetRedirectMap, C as findActionableSilentDrops, D as refStateLookupFromResource, E as cfnRefValueFromPhysicalId, F as rebuildClientForBucketRegion, G as BOOTSTRAP_MARKER_PREFIX, H as loadPublishableAssetManifest, I as shouldRetainResource, J as buildDockerImage, K as ensureAssetStorage, L as AssetPublisher, M as TemplateParser, N as LockManager, O as WAFv2WebACLProvider, P as S3StateBackend, Q as runDockerStreaming, R as stringifyValue, S as ProviderRegistry, T as IntrinsicFunctionResolver, U as rewriteTemplateAssetReferences, V as createAssetRedirectResolver, W as AssetModeResolver, X as getDockerCmd, Y as formatDockerLoginError, Z as runDockerForeground, _ as green, _t as uploadCfnTemplate, a as withRetry, at as resolveApp, b as IAMRoleProvider, bt as resolveBucketRegion, c as computeImplicitDeleteEdges, ct as resolveSkipPrefix, d as isStatefulRecreateTargetSync, dt as resolveUseCdkBootstrapAssets, et as getDockerImageBySourceHash, f as renderStatefulReason, ft as warnDeprecatedNoPrefixCliFlag, g as gray, gt as findLargeInlineResources, h as cyan, ht as MIGRATE_TMP_PREFIX, i as withResourceDeadline, it as getLegacyStateBucketName, j as DagBuilder, k as applyRoleArnIfSet, l as extractDeploymentEventError, lt as resolveStateBucketWithDefault, m as bold, mt as CFN_TEMPLATE_URL_LIMIT, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nt as synthesisStatusMessage, o as isRetryableTransientError, ot as resolveAutoAssetStorage, p as formatResourceLine, pt as CFN_TEMPLATE_BODY_LIMIT, q as parseBootstrapMarker, r as DeployEngine, rt as getDefaultStateBucketName, s as IMPLICIT_DELETE_DEPENDENCIES, st as resolveCaptureObservedState, t as DEFAULT_RESOURCE_TIMEOUT_MS, tt as Synthesizer, u as MULTI_REGION_RECREATE_BLOCKED_TYPES, ut as resolveStateBucketWithDefaultAndSource, v as red, vt as AssemblyReader, w as CloudControlProvider, x as collectInlinePolicyNamesManagedBySiblings, y as yellow, z as WorkGraph } from "./deploy-engine-iahWC4C1.js";
|
|
6
|
+
import { t as expectedOwnerParam } from "./expected-bucket-owner-BjEfUnkA.js";
|
|
7
|
+
import { t as ASGProvider } from "./asg-provider-Dbl1_mwT.js";
|
|
6
8
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
7
9
|
import { createHash, randomBytes, randomUUID } from "node:crypto";
|
|
8
10
|
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, ListBucketsCommand, ListDirectoryBucketsCommand, 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";
|
|
@@ -508,6 +510,7 @@ const deployOptions = [
|
|
|
508
510
|
new Option("--dry-run", "Show changes without applying").default(false),
|
|
509
511
|
new Option("--skip-assets", "Skip asset publishing").default(false),
|
|
510
512
|
new Option("--no-rollback", "Skip rollback on deployment failure"),
|
|
513
|
+
new Option("--no-auto-asset-storage", "Do not auto-create cdkd-owned asset storage (asset bucket + container-asset ECR repo + marker) on the first deploy into a region not yet opted in via 'cdkd bootstrap'. Deploys into such regions stay in legacy mode (CDK bootstrap destinations). Per-app opt-out: cdk.json context.cdkd.autoAssetStorage: false."),
|
|
511
514
|
new Option("--no-capture-observed-state", "Skip capturing AWS-current properties after each create/update (adds a fire-and-forget readCurrentState per resource so cdkd drift can compare against the real deploy-time AWS snapshot instead of the template). On by default. Disable when deploy speed matters more than rich drift detection — falls back to comparing against template properties (the pre-v3 behavior)."),
|
|
512
515
|
new Option("--prefix-user-supplied-names", "Opt in to LEGACY behavior: prepend the stack name to physical names the user explicitly supplied in their CDK code (e.g. `new iam.Role(this, \"X\", { roleName: \"my-role\" })` → AWS resource named `MyStack-my-role` instead of `my-role`). Since v0.94.0 the default is to NOT prefix user-supplied names — this flag restores the pre-v0.94.0 behavior on Pattern B providers (IAM Role / User / Group / InstanceProfile / ELBv2 LoadBalancer / TargetGroup). Enable via this flag, CDKD_PREFIX_USER_SUPPLIED_NAMES=true, or cdk.json context.cdkd.prefixUserSuppliedNames=true. Applies to `cdkd deploy` only.").default(false),
|
|
513
516
|
noWaitOption,
|
|
@@ -650,7 +653,10 @@ async function bootstrapCommand(options) {
|
|
|
650
653
|
try {
|
|
651
654
|
let bucketExists = false;
|
|
652
655
|
try {
|
|
653
|
-
await stateBucketS3.send(new HeadBucketCommand({
|
|
656
|
+
await stateBucketS3.send(new HeadBucketCommand({
|
|
657
|
+
Bucket: bucketName,
|
|
658
|
+
ExpectedBucketOwner: accountId
|
|
659
|
+
}));
|
|
654
660
|
bucketExists = true;
|
|
655
661
|
logger.info(`Bucket ${bucketName} already exists`);
|
|
656
662
|
} catch (error) {
|
|
@@ -681,12 +687,14 @@ async function bootstrapCommand(options) {
|
|
|
681
687
|
logger.debug("Enabling bucket versioning...");
|
|
682
688
|
await stateBucketS3.send(new PutBucketVersioningCommand({
|
|
683
689
|
Bucket: bucketName,
|
|
690
|
+
ExpectedBucketOwner: accountId,
|
|
684
691
|
VersioningConfiguration: { Status: "Enabled" }
|
|
685
692
|
}));
|
|
686
693
|
logger.info("✓ Enabled bucket versioning");
|
|
687
694
|
logger.debug("Enabling bucket encryption...");
|
|
688
695
|
await stateBucketS3.send(new PutBucketEncryptionCommand({
|
|
689
696
|
Bucket: bucketName,
|
|
697
|
+
ExpectedBucketOwner: accountId,
|
|
690
698
|
ServerSideEncryptionConfiguration: { Rules: [{
|
|
691
699
|
ApplyServerSideEncryptionByDefault: { SSEAlgorithm: "AES256" },
|
|
692
700
|
BucketKeyEnabled: true
|
|
@@ -707,6 +715,7 @@ async function bootstrapCommand(options) {
|
|
|
707
715
|
};
|
|
708
716
|
await stateBucketS3.send(new PutBucketPolicyCommand({
|
|
709
717
|
Bucket: bucketName,
|
|
718
|
+
ExpectedBucketOwner: accountId,
|
|
710
719
|
Policy: JSON.stringify(bucketPolicy)
|
|
711
720
|
}));
|
|
712
721
|
logger.info("✓ Set bucket policy (deny external access)");
|
|
@@ -1463,6 +1472,28 @@ async function promptRecreateConfirm(input) {
|
|
|
1463
1472
|
}
|
|
1464
1473
|
}
|
|
1465
1474
|
|
|
1475
|
+
//#endregion
|
|
1476
|
+
//#region src/cli/commands/confirm-prompt.ts
|
|
1477
|
+
/**
|
|
1478
|
+
* Default-YES confirmation prompt (`[Y/n]`, empty input = yes). Used by the
|
|
1479
|
+
* issue #1007 asset-storage auto-create on interactive TTY deploys without
|
|
1480
|
+
* `--yes`. Kept in its own module (mirrors `recreate-confirm-prompt.ts`) so
|
|
1481
|
+
* the accept/decline parsing is unit-testable without importing the whole
|
|
1482
|
+
* deploy command.
|
|
1483
|
+
*/
|
|
1484
|
+
async function promptYesNo(prompt) {
|
|
1485
|
+
const rl = readline.createInterface({
|
|
1486
|
+
input: process.stdin,
|
|
1487
|
+
output: process.stdout
|
|
1488
|
+
});
|
|
1489
|
+
try {
|
|
1490
|
+
const ans = await rl.question(`${prompt} [Y/n] `);
|
|
1491
|
+
return /^(y(es)?)?$/i.test(ans.trim());
|
|
1492
|
+
} finally {
|
|
1493
|
+
rl.close();
|
|
1494
|
+
}
|
|
1495
|
+
}
|
|
1496
|
+
|
|
1466
1497
|
//#endregion
|
|
1467
1498
|
//#region src/state/deployment-events-store.ts
|
|
1468
1499
|
/**
|
|
@@ -1503,7 +1534,7 @@ const FLUSH_INTERVAL_MS = 2e3;
|
|
|
1503
1534
|
const FLUSH_EVENT_THRESHOLD = 50;
|
|
1504
1535
|
/** Build-time cdkd version, with a dev fallback for non-built contexts. */
|
|
1505
1536
|
function getCdkdVersion() {
|
|
1506
|
-
return "0.
|
|
1537
|
+
return "0.235.1";
|
|
1507
1538
|
}
|
|
1508
1539
|
/**
|
|
1509
1540
|
* Generate a time-sortable unique run id, e.g.
|
|
@@ -2134,6 +2165,14 @@ var ExportIndexStore = class {
|
|
|
2134
2165
|
* `config.region()` shape (e.g. a hand-rolled test double) the resolution
|
|
2135
2166
|
* is skipped and the original client is used unchanged.
|
|
2136
2167
|
*/
|
|
2168
|
+
/**
|
|
2169
|
+
* `ExpectedBucketOwner` spread for every state-bucket S3 call (squatting
|
|
2170
|
+
* hardening — see src/utils/expected-bucket-owner.ts). Best-effort:
|
|
2171
|
+
* resolves to an empty object for non-standard clients (test doubles).
|
|
2172
|
+
*/
|
|
2173
|
+
async ownerParam() {
|
|
2174
|
+
return expectedOwnerParam(this.s3Client);
|
|
2175
|
+
}
|
|
2137
2176
|
async ensureClientForBucket() {
|
|
2138
2177
|
if (this.clientResolved) return;
|
|
2139
2178
|
if (this.resolveInFlight) return this.resolveInFlight;
|
|
@@ -2279,6 +2318,7 @@ var ExportIndexStore = class {
|
|
|
2279
2318
|
try {
|
|
2280
2319
|
const response = await this.s3Client.send(new GetObjectCommand({
|
|
2281
2320
|
Bucket: this.bucket,
|
|
2321
|
+
...await this.ownerParam(),
|
|
2282
2322
|
Key: this.indexKey()
|
|
2283
2323
|
}));
|
|
2284
2324
|
return {
|
|
@@ -2295,6 +2335,7 @@ var ExportIndexStore = class {
|
|
|
2295
2335
|
const body = JSON.stringify(next, null, 2);
|
|
2296
2336
|
return (await this.s3Client.send(new PutObjectCommand({
|
|
2297
2337
|
Bucket: this.bucket,
|
|
2338
|
+
...await this.ownerParam(),
|
|
2298
2339
|
Key: this.indexKey(),
|
|
2299
2340
|
Body: body,
|
|
2300
2341
|
ContentLength: Buffer.byteLength(body),
|
|
@@ -37709,9 +37750,18 @@ async function deployCommand(stacks, options) {
|
|
|
37709
37750
|
stsClient.destroy();
|
|
37710
37751
|
const assetPublisher = new AssetPublisher();
|
|
37711
37752
|
const useCdkBootstrapAssets = resolveUseCdkBootstrapAssets(options.useCdkBootstrapAssets);
|
|
37753
|
+
const autoAssetStorage = resolveAutoAssetStorage(options.autoAssetStorage);
|
|
37754
|
+
const confirmAutoAssetStorage = async (assetRegion) => {
|
|
37755
|
+
if (options.yes || !process.stdin.isTTY) {
|
|
37756
|
+
logger.info(`Creating cdkd asset storage for region '${assetRegion}' (first deploy into this region; opt out with --no-auto-asset-storage).`);
|
|
37757
|
+
return true;
|
|
37758
|
+
}
|
|
37759
|
+
return promptYesNo(`Region '${assetRegion}' has no cdkd asset storage yet. Create it now (S3 bucket cdkd-assets-${accountId}-${assetRegion} + container-asset ECR repo, out of 'cdk gc' reach)?`);
|
|
37760
|
+
};
|
|
37712
37761
|
const assetModeResolver = new AssetModeResolver(preflightStateBackend, accountId, {
|
|
37713
37762
|
...options.profile && { profile: options.profile },
|
|
37714
|
-
...useCdkBootstrapAssets && { useCdkBootstrapAssets: true }
|
|
37763
|
+
...useCdkBootstrapAssets && { useCdkBootstrapAssets: true },
|
|
37764
|
+
...autoAssetStorage && !options.dryRun && !options.skipAssets && { autoCreate: { confirm: confirmAutoAssetStorage } }
|
|
37715
37765
|
});
|
|
37716
37766
|
const stateConfig = {
|
|
37717
37767
|
bucket: stateBucket,
|
|
@@ -41906,6 +41956,8 @@ async function stateMigrateCommand(options) {
|
|
|
41906
41956
|
await newS3.send(new CopyObjectCommand({
|
|
41907
41957
|
Bucket: newBucket,
|
|
41908
41958
|
Key: obj.Key,
|
|
41959
|
+
...await expectedOwnerParam(newS3),
|
|
41960
|
+
ExpectedSourceBucketOwner: accountId,
|
|
41909
41961
|
CopySource: encodeURIComponent(`${legacyBucket}/${obj.Key}`)
|
|
41910
41962
|
}));
|
|
41911
41963
|
copied++;
|
|
@@ -41919,7 +41971,10 @@ async function stateMigrateCommand(options) {
|
|
|
41919
41971
|
logger.info(`Emptying source bucket ${legacyBucket} (all versions + delete markers)...`);
|
|
41920
41972
|
await emptyBucketAllVersions(legacyS3, legacyBucket);
|
|
41921
41973
|
logger.info(`Deleting source bucket ${legacyBucket}...`);
|
|
41922
|
-
await legacyS3.send(new DeleteBucketCommand({
|
|
41974
|
+
await legacyS3.send(new DeleteBucketCommand({
|
|
41975
|
+
Bucket: legacyBucket,
|
|
41976
|
+
...await expectedOwnerParam(legacyS3)
|
|
41977
|
+
}));
|
|
41923
41978
|
logger.info(`✓ Deleted source bucket: ${legacyBucket}`);
|
|
41924
41979
|
} else logger.info(`Source bucket ${legacyBucket} kept. Pass --remove-legacy on a future run to delete it.`);
|
|
41925
41980
|
logger.info(`✓ Migration complete: ${legacyBucket} -> ${newBucket}`);
|
|
@@ -41935,7 +41990,10 @@ async function stateMigrateCommand(options) {
|
|
|
41935
41990
|
}
|
|
41936
41991
|
async function bucketExists(s3, bucketName) {
|
|
41937
41992
|
try {
|
|
41938
|
-
await s3.send(new HeadBucketCommand({
|
|
41993
|
+
await s3.send(new HeadBucketCommand({
|
|
41994
|
+
Bucket: bucketName,
|
|
41995
|
+
...await expectedOwnerParam(s3)
|
|
41996
|
+
}));
|
|
41939
41997
|
return true;
|
|
41940
41998
|
} catch (error) {
|
|
41941
41999
|
const err = error;
|
|
@@ -41951,6 +42009,7 @@ async function listAllObjects(s3, bucket) {
|
|
|
41951
42009
|
do {
|
|
41952
42010
|
const resp = await s3.send(new ListObjectsV2Command({
|
|
41953
42011
|
Bucket: bucket,
|
|
42012
|
+
...await expectedOwnerParam(s3),
|
|
41954
42013
|
...continuationToken && { ContinuationToken: continuationToken }
|
|
41955
42014
|
}));
|
|
41956
42015
|
if (resp.Contents) all.push(...resp.Contents);
|
|
@@ -41993,10 +42052,12 @@ async function ensureDestinationBucket(bucketName, region, accountId, logger) {
|
|
|
41993
42052
|
logger.info(`✓ Created destination bucket: ${bucketName}`);
|
|
41994
42053
|
await s3.send(new PutBucketVersioningCommand({
|
|
41995
42054
|
Bucket: bucketName,
|
|
42055
|
+
...await expectedOwnerParam(s3),
|
|
41996
42056
|
VersioningConfiguration: { Status: "Enabled" }
|
|
41997
42057
|
}));
|
|
41998
42058
|
await s3.send(new PutBucketEncryptionCommand({
|
|
41999
42059
|
Bucket: bucketName,
|
|
42060
|
+
...await expectedOwnerParam(s3),
|
|
42000
42061
|
ServerSideEncryptionConfiguration: { Rules: [{
|
|
42001
42062
|
ApplyServerSideEncryptionByDefault: { SSEAlgorithm: "AES256" },
|
|
42002
42063
|
BucketKeyEnabled: true
|
|
@@ -42004,6 +42065,7 @@ async function ensureDestinationBucket(bucketName, region, accountId, logger) {
|
|
|
42004
42065
|
}));
|
|
42005
42066
|
await s3.send(new PutBucketPolicyCommand({
|
|
42006
42067
|
Bucket: bucketName,
|
|
42068
|
+
...await expectedOwnerParam(s3),
|
|
42007
42069
|
Policy: JSON.stringify({
|
|
42008
42070
|
Version: "2012-10-17",
|
|
42009
42071
|
Statement: [{
|
|
@@ -42030,6 +42092,7 @@ async function emptyBucketAllVersions(s3, bucket) {
|
|
|
42030
42092
|
do {
|
|
42031
42093
|
const resp = await s3.send(new ListObjectVersionsCommand({
|
|
42032
42094
|
Bucket: bucket,
|
|
42095
|
+
...await expectedOwnerParam(s3),
|
|
42033
42096
|
...keyMarker && { KeyMarker: keyMarker },
|
|
42034
42097
|
...versionIdMarker && { VersionIdMarker: versionIdMarker }
|
|
42035
42098
|
}));
|
|
@@ -42046,6 +42109,7 @@ async function emptyBucketAllVersions(s3, bucket) {
|
|
|
42046
42109
|
const batch = ids.slice(i, i + 1e3);
|
|
42047
42110
|
await s3.send(new DeleteObjectsCommand({
|
|
42048
42111
|
Bucket: bucket,
|
|
42112
|
+
...await expectedOwnerParam(s3),
|
|
42049
42113
|
Delete: {
|
|
42050
42114
|
Objects: batch,
|
|
42051
42115
|
Quiet: true
|
|
@@ -45282,7 +45346,10 @@ function formatBucketSource(source) {
|
|
|
45282
45346
|
*/
|
|
45283
45347
|
async function detectBucketRegion(awsClients, bucket) {
|
|
45284
45348
|
try {
|
|
45285
|
-
const constraint = (await awsClients.s3.send(new GetBucketLocationCommand({
|
|
45349
|
+
const constraint = (await awsClients.s3.send(new GetBucketLocationCommand({
|
|
45350
|
+
Bucket: bucket,
|
|
45351
|
+
...await expectedOwnerParam(awsClients.s3)
|
|
45352
|
+
}))).LocationConstraint;
|
|
45286
45353
|
if (!constraint) return "us-east-1";
|
|
45287
45354
|
if (constraint === "EU") return "eu-west-1";
|
|
45288
45355
|
return constraint;
|
|
@@ -45330,7 +45397,8 @@ async function readSchemaVersion(awsClients, bucket, keys) {
|
|
|
45330
45397
|
try {
|
|
45331
45398
|
const resp = await awsClients.s3.send(new GetObjectCommand({
|
|
45332
45399
|
Bucket: bucket,
|
|
45333
|
-
Key: keys[0]
|
|
45400
|
+
Key: keys[0],
|
|
45401
|
+
...await expectedOwnerParam(awsClients.s3)
|
|
45334
45402
|
}));
|
|
45335
45403
|
if (!resp.Body) return "unknown";
|
|
45336
45404
|
const body = await resp.Body.transformToString();
|
|
@@ -45365,7 +45433,8 @@ async function listAssetStorageMarkers(awsClients, bucket) {
|
|
|
45365
45433
|
try {
|
|
45366
45434
|
const marker = parseBootstrapMarker(await (await awsClients.s3.send(new GetObjectCommand({
|
|
45367
45435
|
Bucket: bucket,
|
|
45368
|
-
Key: key
|
|
45436
|
+
Key: key,
|
|
45437
|
+
...await expectedOwnerParam(awsClients.s3)
|
|
45369
45438
|
}))).Body?.transformToString() ?? "", key);
|
|
45370
45439
|
entries.push({
|
|
45371
45440
|
region,
|
|
@@ -56014,7 +56083,7 @@ function reorderArgs(argv) {
|
|
|
56014
56083
|
async function main() {
|
|
56015
56084
|
installPipeCloseHandler();
|
|
56016
56085
|
const program = new Command();
|
|
56017
|
-
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.
|
|
56086
|
+
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.235.1");
|
|
56018
56087
|
program.addCommand(createBootstrapCommand());
|
|
56019
56088
|
program.addCommand(createSynthCommand());
|
|
56020
56089
|
program.addCommand(createListCommand());
|