Skip to main content

Repository Dependencies

Last Updated: 2026-03-06 Sources: All 14 repositories (package.json analysis), repos/innovation-sandbox-on-aws-client/package.json

Executive Summary

The NDX:Try AWS ecosystem comprises 12 repositories with complex inter-dependencies spanning EventBridge event contracts, shared DynamoDB tables, a common API client library (@co-cddo/isb-client), and overlapping AWS SDK versions. Dependency analysis reveals version fragmentation across CDK (v2.170.0 to v2.240.0), AWS SDK v3 (v3.654.0 to v3.1000.0), and validation libraries (zod v3.24.0 vs v4.3.6), creating compatibility risks that warrant standardisation.


Dependency Graph


Deployment Order Dependencies

Phase 1: Foundation (AWS Organization)

OrderRepositoryIaC ToolPurpose
1ndx-try-aws-terraformTerraformOrganization structure, OUs
2ndx-try-aws-lzaLanding Zone AcceleratorAccount baselines, security
3ndx-try-aws-scpTerraformInnovation Sandbox SCPs

Phase 2: ISB Core

OrderRepositoryIaC ToolStacks
4innovation-sandbox-on-awsCDK v2.170.0AccountPool, IDC, Data, Compute

Prerequisites: LZA has created OUs, Identity Center configured, parent OU exists.

Phase 3: ISB Satellites (parallel after Phase 2)

OrderRepositoryIaC ToolPrerequisites
5innovation-sandbox-on-aws-approverCDK v2.170.0ISBEventBus, DynamoDB tables
6innovation-sandbox-on-aws-costsCDK v2.240.0ISBEventBus, DynamoDB tables
7innovation-sandbox-on-aws-billing-seperatorCDK v2.240.0ISBEventBus, DynamoDB tables
8innovation-sandbox-on-aws-deployerCDK (via CI)ISBEventBus, Secrets Manager

Phase 4: Content Platforms (independent)

OrderRepositoryIaC Tool
9ndxEleventy + CDK (infra)
10ndx_try_aws_scenariosEleventy (static site)

Phase 5: Utilities (post-ISB)

OrderRepositoryPurpose
11innovation-sandbox-on-aws-utilsManual pool account management

NPM Package Dependencies

AWS SDK v3 Version Matrix

Repository@aws-sdk/* RangeNotes
innovation-sandbox-on-awsv3.654.0 - v3.758.0Mixed across 21 workspaces
@co-cddo/isb-clientv3.992.0Exact pin
innovation-sandbox-on-aws-approverv3.987.0Caret ranges (^3.987.0)
innovation-sandbox-on-aws-deployerv3.993.0Caret ranges (^3.993.0)
innovation-sandbox-on-aws-costsv3.995.0Caret ranges (^3.995.0)
innovation-sandbox-on-aws-billing-seperatorv3.1000.0Caret ranges (^3.1000.0)

CDK Version Matrix

Repositoryaws-cdk-libaws-cdk (CLI)Notes
innovation-sandbox-on-awsv2.170.0(devDep)Core platform
innovation-sandbox-on-aws-approverv2.170.0v2.170.0Aligned with core
innovation-sandbox-on-aws-costsv2.240.0N/A70 minor versions ahead
innovation-sandbox-on-aws-billing-seperatorv2.240.0N/A70 minor versions ahead

Validation Library (zod) Versions

Repositoryzod VersionMajor Version
innovation-sandbox-on-aws-approver^3.24.0v3
innovation-sandbox-on-aws-costs^4.3.6v4
innovation-sandbox-on-aws-billing-seperator^4.3.6v4
innovation-sandbox-on-aws (core)N/ANot used
innovation-sandbox-on-aws-deployerN/ANot used

Note: zod v3 to v4 is a major version bump with breaking API changes.

Runtime Versions

RepositoryNode.jsPackage ManagerTest Framework
innovation-sandbox-on-awsNode 20npm (workspaces)vitest v4.0.10
innovation-sandbox-on-aws-approver>= 20.0.0npmvitest v4.0.16
innovation-sandbox-on-aws-costs(not specified)npmvitest v4.0.18
innovation-sandbox-on-aws-deployer>= 22.0.0npmvitest v4.0.17
innovation-sandbox-on-aws-billing-seperator(not specified)npmjest v30.2.0
@co-cddo/isb-client>= 20yarn v4.6.0jest v30.2.0
ndx(not specified)yarn v4.5.0jest (+ Playwright)
ndx_try_aws_scenarios>= 22.0.0npmvitest v4.0.18

Shared Code & Libraries

@co-cddo/isb-client (Central API Client)

Distribution: The client is distributed as a .tgz tarball via GitHub Releases, not a traditional npm registry. This means consumers pin to specific release URLs rather than semver ranges.

Version Skew: The Approver uses v2.0.1 while Costs and Deployer use v2.0.0, creating a minor version discrepancy.

ISB Core Internal Packages

source/common/ # Shared TypeScript types and utilities
source/layers/common/ # Lambda layer with shared dependencies
source/layers/deps/ # Lambda layer with third-party deps
source/frontend/ # React SPA (workspace: @amzn/innovation-sandbox-frontend)
source/infrastructure/ # CDK stacks (workspace: @amzn/innovation-sandbox-infrastructure)

Lambda Powertools Usage

RepositoryLoggerMetricsTracerIdempotencyParameters
Approverv2.12.0v2.12.0-v2.12.0v2.12.0
Billing Sepv2.31.0v2.31.0v2.31.0--
Costs-----
Deployer-----
ISB Core-----

Event Schema Dependencies

EventBridge Event Contracts

All satellites depend on the event schema published by ISB Core. There is currently no schema versioning in place.

EventPublisherConsumersBreaking Change Risk
LeaseRequestedISB CoreApproverHigh
LeaseApprovedISB Core, ApproverLifecycle Mgr, DeployerHigh
LeaseDeniedApproverEmail notificationLow
LeaseTerminatedISB Core, MonitoringCosts, Billing Sep, CleanupHigh
CostDataCollectedCostsBilling SepMedium
DeploymentCompleteDeployerLeases APIMedium

DynamoDB Table Access Matrix

TableISB CoreApproverCostsBilling SepDeployer
LeaseTableR/WRRRR
SandboxAccountTableR/W--R/W-
LeaseTemplateTableR/W---R
ApprovalHistory-R/W---
CostReports-RR/WR-
QuarantineStatus---R/W-

GitHub Actions Workflows

Repositories with CI/CD

RepositoryWorkflowsDeploy Method
innovation-sandbox-on-aws-approverdeploy.ymlCDK deploy via OIDC
innovation-sandbox-on-aws-billing-seperatordeploy.yml, pr-check.ymlCDK deploy via OIDC
innovation-sandbox-on-aws-costsdeploy.yml, ci.ymlCDK deploy via OIDC
innovation-sandbox-on-aws-deployerci.ymlCI only (deploy manual)
ndxinfra.yaml, ci.yaml, test.ymlCDK + S3 deploy
ndx_try_aws_scenariosbuild-deploy.ymlS3 deploy
ndx-try-aws-scpterraform.yamlTerraform apply

Repositories without CI/CD

RepositoryDeploy Method
innovation-sandbox-on-awsManual CDK deploy (npm run deploy:all)
innovation-sandbox-on-aws-utilsManual Python scripts
innovation-sandbox-on-aws-clientManual GitHub Release
ndx-try-aws-lzaManual LZA pipeline
ndx-try-aws-terraformManual terraform apply
ndx-try-aws-isbEmpty (no deployment)

Dependency Issues & Risks

Issue 1: AWS SDK v3 Version Fragmentation

Spread: v3.654.0 (ISB Core) to v3.1000.0 (Billing Separator) -- a gap of 346 minor versions.

Risk: API incompatibilities, missing features in older versions, inconsistent error handling.

Recommendation: Standardise on v3.995.0+ across all repos. The ISB Core is most urgently in need of an update.

Issue 2: CDK Version Mismatch

Spread: v2.170.0 (ISB Core, Approver) to v2.240.0 (Costs, Billing Sep) -- 70 minor versions apart.

Risk: Construct library incompatibilities, L2 construct API differences.

Recommendation: Align all repositories to v2.240.0.

Issue 3: Zod Major Version Split

Spread: v3.24.0 (Approver) vs v4.3.6 (Costs, Billing Sep).

Risk: Schema definitions between v3 and v4 are not compatible. Any shared schema validation across these components would fail.

Recommendation: Migrate Approver to zod v4 to align with newer satellites.

Issue 4: No Event Schema Versioning

Problem: EventBridge events have no version field. If ISB Core changes an event schema, all consuming satellites break simultaneously.

Recommendation: Add a schemaVersion field to all events and support backward compatibility during transitions.

Issue 5: ISB Client Distribution via Tarball

Problem: The @co-cddo/isb-client is distributed as a GitHub Release tarball URL rather than from a package registry. This makes version resolution opaque and updates difficult to track.

Recommendation: Publish to GitHub Packages (npm) or a private registry for proper semver resolution.

Issue 6: Mixed Test Frameworks

Problem: Some repos use vitest, others use jest. The billing separator and ISB client use jest v30, while all other TypeScript repos use vitest v4.

Recommendation: Standardise on vitest across all TypeScript repositories for consistency.


1. Shared Type Definitions

Create and publish @ndx-try/types as a shared package:

// Event schemas
export interface LeaseApprovedEvent { ... }
export interface LeaseTerminatedEvent { ... }

// DynamoDB schemas
export interface Lease { ... }
export interface SandboxAccount { ... }

// API contracts
export interface CreateLeaseRequest { ... }

2. Dependency Pinning Strategy

Current: Mix of exact (3.992.0) and caret (^3.987.0) ranges.

Recommended: Use exact versions for AWS SDK and CDK to ensure reproducible builds:

{
"@aws-sdk/client-dynamodb": "3.995.0",
"aws-cdk-lib": "2.240.0"
}

3. Renovate/Dependabot Coordination

Configure automated dependency updates across all repositories with grouped PRs for AWS SDK updates to maintain version alignment.


References


Generated from source analysis. See 00-repo-inventory.md for full inventory.