From be14c405ced8d55c8c4343850b095b8e5c7cf5af Mon Sep 17 00:00:00 2001 From: Momo Kornher Date: Fri, 8 Nov 2024 12:47:55 +0000 Subject: [PATCH 1/3] feat(rfc-300): first draft --- images/0300/cli-lib-alpha-usage.png | Bin 0 -> 101231 bytes images/0300/iohost.png | Bin 0 -> 60723 bytes images/0300/today.png | Bin 0 -> 40135 bytes images/0300/tomorrow.png | Bin 0 -> 61796 bytes text/0300-programmatic-toolkit.md | 745 ++++++++++++++++++++++++++++ 5 files changed, 745 insertions(+) create mode 100644 images/0300/cli-lib-alpha-usage.png create mode 100644 images/0300/iohost.png create mode 100644 images/0300/today.png create mode 100644 images/0300/tomorrow.png create mode 100644 text/0300-programmatic-toolkit.md diff --git a/images/0300/cli-lib-alpha-usage.png b/images/0300/cli-lib-alpha-usage.png new file mode 100644 index 0000000000000000000000000000000000000000..fd8df005b32ceebd4e80147e3403506e676cf310 GIT binary patch literal 101231 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 yBt677SO5$iZu9c|T+T literal 0 HcmV?d00001 diff --git a/images/0300/today.png b/images/0300/today.png new file mode 100644 index 0000000000000000000000000000000000000000..2c2487f20e66ba82807cda0838f24027712073af GIT binary patch literal 40135 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 literal 0 HcmV?d00001 diff --git a/images/0300/tomorrow.png b/images/0300/tomorrow.png new file mode 100644 index 0000000000000000000000000000000000000000..39a7eef80c969659a2c753b1a180b3ad51fe4cf2 GIT binary patch literal 61796 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 vXUlQJ{ePFd29{h^mUH*t-C{`>h)0k?s%q5b { + const app = new cdk.App({ context }); + const stack = new cdk.Stack(app); + return app.synth(); +}); + +// Synth and store a cached CloudExecutable, this won't run synth again +const cxCache = await cdk.synth(cx); + +// Deploy our pre-synth'ed app +const deployment = await cdk.deploy(cxCache, { stacks: ['MyTestStack'] }); + +// Returns a list of ARNs of the deployment +return deployment.listResources().filter(r => r.arn); +``` + +#### Toolkit setup + +A default toolkit can be setup with no additional configuration: + +```ts +const cdk = new Toolkit() +``` + +You can customize the functionality of the toolkit. +The main options are provided through `ioHost` and `awsSdkProvider`. + +```ts +const cdk = new Toolkit({ + ioHost: new MyIoHost(), + awsSdkProvider: new MyAwsSdkProvider(), +}) +``` + +#### Messages and Requests + +The toolkit emits *messages* and *requests* to structure interactions. +A *request* is a *message* that requires the receiver to respond, otherwise the toolkit will continue with a default response. + +For every emitted message, the toolkit calls the `notify` or `requestResponse` method of an `IoHost` (more on this below). +Every call is `await`ed for its completion, allowing to receiver to perform asynchronous operations like HTTP calls. +It's okay for the receiver not do anything with the input and return immediately. +The type definition of messages and requests is as follows: + +```ts +interface IoMessage { + time: string; + level: 'error' | 'warn' | 'info' | 'debug'; + action: 'synth' | 'list' | 'deploy' ... ; + code: string; + message: string; + data?: T; +} + +interface IoRequest extends IoMessage { + defaultResponse: U; +} +``` + +##### Changes and Breaking Changes to messages and requests + +Messages and requests play an important role in structuring interactions with the Toolkit. +Because messages will be emitted in many places, they will change frequently. +An integrator needs to take great care when handling messages and basing implementation on them. +A list of all messages and requests is available at [TODO: link to auto-generated list of messages]. + +For a given message code, the following changes are considered breaking: + +- a backwards incompatible change to type definition of message data, + e.g. changing the type of a property from `string` to a `boolean` or removing a non-optional property +- removing data from a message that previously had data attached +- removal of a message or request +- changing the type from request to message + +For the avoidance of doubt, the following changes are explicitly **not** considered breaking: + +- a change to the message text +- a change to the log level +- a change to the default response of a request +- a change to the order messages and requests are emitted in +- the addition of new messages and requests +- a change to the data possibly attached to the message as long as it adheres to the same type +- adding data to a message that previously had no data +- a backwards compatible change to the type definition of message data, e.g. adding a new property to an interface + +#### IoHost + +Message receivers need to implement the `IIoHost` interface. +The `IoHost` is responsible for handling all logging and interactions: + +```ts +interface IIoHost { + /** + * Notifies the host of a message. + * The caller waits until the notification completes. + */ + async notify(msg: IoMessage); + + /** + * Notifies the host of a message that requires a response. + * + * If the host does not return a response the suggested + * default response from the input message will be used. + */ + async requestResponse(msg: IoRequest): U | undefined; +} +``` + +For every message, the toolkit calls `notify` or `requestResponse` is called respectively. + +The a generic `IoEmitter` is available to provide a familiar event emitter interface. +This implementation will do nothing for messages and requests that don't have a registered listener, i.e. the default response will be used as required. + +```ts +const io = new IoEmitter(); +io.on('deploy', async (msg: IoMessage) => { /* do something */ }); +io.once('deploy:confirm-security', async (msg: IoRequest): boolean => { + // reject the deployment + return false; +}) +``` + +The `CommandLineIoHost` is available, implementing all the interaction behavior for the AWS CDK CLI [TODO: this might end up in a separate package]: + +```ts +const io = new CdkCliHost({ + isInteractive: true +}) +``` + +##### SdkProvider + + [Alternative: Make this `CredentialsProvider` or `SdkConfigProvider` instead] + +The `AwsSdkProvider` defines how the toolkit interacts with AWS services. +A default provider is available. +You can provide a custom class implementing the `IAwsSdkProvider` interface. +A standard `SdkProviderForCdk` is available that includes all features of the AWS CDK CLI [TODO: this might end up in a separate package]. + +#### Cloud Executables + +A Cloud Executable is the primitive that defines a deployable AWS CDK application. +AWS CDK apps might need to be synthesized multiple times with additional context values before they are ready. +This concept is what the Cloud Executable represents. + +The most flexible way to obtain a Cloud Executable is from a function returning a `CloudAssembly`. +Providing a function allows your implementation to integrate with the [Programmatic Toolkit]'s multi-pass requirement. +The function will be called one or more times with the known context values of the current iteration. +It must then use these values to synthesize and return a `CloudAssembly`. +For all features (e.g. lookups) to work correctly, the `App()` must be instantiated with the received context values. +Since it is not possible to update the context of an app, it must be created inside the function scope. + +A basic implementation would look like this: + +```ts +const cx: ICloudExecutable = CloudExecutable.fromCloudAssemblyProducer( + async (context: Record): cxapi.CloudAssembly => { + const app = new cdk.App({ context }); + const stack = new cdk.Stack(app); + return app.synth(); + } +); +``` + +Existing applications, can also be used by simply passing an AWS CDK app directory (containing a `cdk.json` file): + +```ts +const cx: ICloudExecutable = CloudExecutable.fromCdkApp("/path/to/cdk/app"); +``` + +Alternatively the `cdk.out` directory from a previous synth can be used as well: + +```ts +const cx: ICloudExecutable = CloudExecutable.fromCdkOut("/path/to/cdk.out"); +``` + +#### Actions - synth + +The `synth` action takes a Cloud Executable and synthesizes it in to a `CloudAssembly`. + +```ts +const cx: ICloudExecutable = await cdk.synth(cx, { stacks: ['MyTestStack'] }); +``` + +It returns a Cloud Executable that is cached on disk and can be used as input for other actions. + +#### Actions - bootstrap + +The `bootstrap` action takes in a list of environments and bootstraps each environment with the provided configuration: + +```ts +const envs: string[] = cx.environments(); +await cdk.bootstrap(envs, { trust: ['000000000000', '111111111111'] }); +``` + +It returns a list of stack deployments. + +#### Errors + +All errors are thrown as exceptions and the integrator must be prepared to handle them. +Expected errors are structured data and extend the `IoMessage` interface. + +```ts +interface ToolkitError extends IoMessage { + source: 'toolkit' | 'user'; + type: 'authentication' | 'cloudformation' | 'validation' ...; + fqn?: string; +} +``` + +The toolkit might throw other exceptions. +These are bugs and you should report them by [raising an issue](https://github.com/aws/aws-cdk/issues/new?assignees=&labels=bug%2Cneeds-triage&projects=&template=bug-report.yml&title=%28toolkit%29%3A+Untyped+Exception+%28short+description%29). +To assist integrators with detecting the type of error, the following helper methods are available. +Even though errors are typed, you should not rely on `instanceof` checks because it can behave unexpectedly when working with multiple copies of the same package. [TODO: insert reference link] + +```ts +try { + await cdk.deploy(...); +} catch (e: unknown) { + if (ToolkitError.isToolkitError(error)) { + // handle toolkit errors + } else if (ToolkitError.isUserError(e)) { + // handle user code errors + } + + if (ToolkitError.isCdkError(e)) { + // handle any cdk errors + } +} +``` + +##### Recoverable Errors [TODO: Naming. All errors in JS are recoverable. Ruby calls this rescue/retry] + + [Alternative: Do not do this at all] + [Alternative: Formalize a retry budget] + +While most errors are terminal, it's possible to recover from some. +For example if an authentication token is expired, an integrator may prompt the user to re-authenticate via a browser login, before continuing with the action. +With recoverable errors, the integrator can return to normal program flow after an issue has been addressed. + +In the [Programmatic Toolkit], recoverable errors are implemented as a special type of request. +By default, errors are not attempted to recover. + +```ts +interface RecoverableError extends IoRequest { + level: 'error'; + defaultResponse: { + retry: boolean; // indicates if the block should retried + // ... other response values + }; + data: { + isRecoverable: true; + attempt: number; // the number of the current attempt, starting with 1 + } +} +``` + +When `IoHost.requestResponse()` is called with a recoverable error, the integrator may choose to return `retry: true` to indicate the block should be retried. +A single retry is allowed, if the block fails again with the same error it will be raised as an exception. +Retries are not guaranteed and integrators must handle the case where a requested retry is not executed. +Recoverable errors are rare as they require special programming and not always possible. + +##### Synth-time Errors + +There is a subtle semantic difference between errors that originate from the [Programmatic Toolkit] and from a Cloud Executable, i.e. from a user's app: +Errors from the [Programmatic Toolkit] are typically misconfigurations and maybe fixable by an integrator, +while errors from a Cloud Executable are usually code problems and only fixable by the user. + +The [Programmatic Toolkit] emits all synth-time errors as recoverable errors. +When implementing a custom Cloud Executable in code, you may prefer to handle synth-time errors directly in code: + + [Alternative: Don't allow retries on user code] + [Alternative: Implement retries as regular requests] + +```ts +class MyCloudExecutable implements ICloudExecutable { + async exec(context: Record): cxapi.CloudAssembly { + try { + const app = new cdk.App({ context }); + const stack = new cdk.Stack(app); + return app.synth(); + } catch(e: unknown) { + // handle errors here + } + } +} +``` + +#### Dispose + +The `Toolkit` class implements an `AsyncDisposable` Resource according to the [Explicit Resource Management](https://github.com/tc39/proposal-explicit-resource-management) feature in ECMAScript. +This means that any resources used by the [Programmatic Toolkit] are automatically cleaned-up. +`AsyncDisposable` guarantees this clean-up even in case of an uncaught exception. + +You may also call the `dispose()` method directly. +We recommend to do this inside a `finally` statement to guarantee execution. + +```ts +const cdk = new Toolkit(); +try { + cdk.deploy(...); +} finally { + await cdk.dispose(); +} +``` + +--- + +Ticking the box below indicates that the public API of this RFC has been +signed-off by the API bar raiser (the `status/api-approved` label was applied to the +RFC pull request): + +``` +[ ] Signed-off by API Bar Raiser @xxxxx +``` + +## Public FAQ + +### What are we launching today? + +We are launching the [Programmatic Toolkit], a new TypeScript package that enables integrators to build custom lifecycle management solutions for CDK applications. +The toolkit provides implementation for all of the CDK's actions like bootstrap, synth or deploy. +It gives integrators full control over all output and allows to interweave actions with custom steps. + +We are also launching `@aws-cdk/jsii-toolkit`, a version of the [Programmatic Toolkit] for jsii users. +It offers the same main functionality as the [Programmatic Toolkit], with some customization features limited due to jsii constraints. + +### Why should I use this feature? [USE CASES] + +#### A. ACME cli tool + +ACME develops a custom cli tool to abstract the hard parts of creating REST APIs. +ACME's data scientists are able to place a `app-config.yml` file in a repository. +They then write a FastAPI app compatible with Lambda to serve their models. +Then they run `acme-cli deploy serverless-rest-api --config app-config.yml`. +This is great, because the data scientists don't have to know anything about CloudFormation, the AWS CDK, or other IaC tools, but they can easily deploy apps. + +With [Programmatic Toolkit] ACME can automatically handle bootstrapping for its users and it allows ACME to provided targeted output to theirs +Real world examples: + +* [Amplify](https://github.com/aws-amplify/amplify-cli) uses CDK apps to enable their users to build cloud-enabled frontend and mobile apps. + Amplify is wrapping the CDK in a custom CLI and adds additional features like sandbox environments. +* [The Guardian](https://github.com/guardian/cdk) is providing their engineers with a construct library and cli tool to create new projects and migrate from existing CloudFormation YAML based stacks. +* [Pulumi CDK Adapter](https://github.com/pulumi/pulumi-cdk) is enabling Pulumi users to use CDK constructs in their applications. + The tool uses `cli-lib-alpha` to synthesize user's apps and integrate with other Pulumi tooling. + +#### B. Integration testing + +Build an app, e.g. a serverless REST API and then run functional tests against it. +That could mean sending several requests to a REST API and watching for expected responses. +On completion the stack is torn down and a report provided to the user. +This can also be used to automatically create test environments from a Pull Request and keep them up-to-date until the change is merged, at which point the environment is destroyed again. + +The [Programmatic Toolkit] enables execution of integration test cases as soon as the relevant resources are deployed (as opposed to the whole stack). +It can be run from within a Lambda function and handle complex error scenarios. + +Real world examples: + +* [integ-runner](https://github.com/aws/aws-cdk/tree/v2.165.0/packages/%40aws-cdk/integ-runner) is orchestrating lifecycle actions on behalf of the users to provide end-to-end integration testing. + It uses a wrapper library to call the AWS CDK CLI via subshell. +* [@aws-cdk-testing/cli-integ](https://github.com/aws/aws-cdk/blob/main/packages/%40aws-cdk-testing/cli-integ/lib/with-cdk-app.ts) executes complex test scenarios for features like authentication, bootstrapping, garbage collection as well as thrid-party integrations. + It runs tests in specially prepared environments. + To script the setup and the test execution, it uses a custom subshell wrapper to execute CLI commands. + +#### C. Jupyter Notebooks + +Writing a Python Jupyter Notebook that uses complex computations on large datasets. +These computations need to happen in the cloud using EMR. +The EMR cluster and tasks can be defined and deployed from within the Notebook. +API calls are then used to execute the tasks, download results and remove the infrastructure. + +Today users are limited to make imperative SDK calls or to provide a separate companion app with additional instructions. +With the [Programmatic Toolkit], CDK apps can be deployed directly from within a Notebook and resources can be referenced directly as the result of CDK actions. + +Real world examples: + +* [Boto3 with Jupyter Notebook](https://blog.jimmyray.io/boto3-with-jupyter-notebook-721a01eab285) +* [Using Jupyter Notebooks as your cloud IDE for DevOps](https://guyernest.medium.com/using-jupyter-notebooks-as-your-cloud-ide-for-devops-a49c03e5cb3f) + +## Internal FAQ + +### Why are we doing this? + +The [Programmatic Toolkit] unlocks new scenarios for programmatic use of the AWS CDK. +Today integrators can call the AWS CDK CLI via a shell or use `cli-lib-alpha` for programmatic access. +Both approaches limit integrators to inherit the exact behavior of the CLI, including all interaction patterns with the user. +This is an obvious mismatch: Programmatic integrations don't require interaction, unless that's the specific use case an integrator is building. +Additionally the interface `cli-lib-alpha` offers is not optimized for programmatic use, further limiting its usefulness. + +The [Programmatic Toolkit] aims to solve these limitations by providing a proper programmatic interface to CDK's functionality, +sallowing integrators to have full control over all output and combine CDK actions with custom steps in their applications. +With this project, we are changing the paradigm. +Programmatic usage will become an equally considered use case, in fact the proposed implementation will require it to be considered first. + +### Why should we _not_ do this? + +There are requirements that cannot be satisfied with the current available options. +Specifically hooks, control over logging, structured errors and typed returns are not possible. + +Implementing the [Programmatic Toolkit] proposal will make it more difficult to add new features to the CLI. +It creates a new level of abstraction, that needs to be considered going forward. +The complexity of these abstractions might discourage community contributions and increase the time to build new features. + +We are only aware of a small number of interested integrators, +and these might potentially be satisfied by smaller, more targeted improvements. + +### What is the technical solution (design) of this feature? + +The [Programmatic Toolkit] is building on the existing design of the `cli-lib-alpha` package. +User apps are defined as a Cloud Executable and can be created in multiple ways like reading existing on-disk CDK apps or adding code directly by implementing an interface. + +A new [Programmatic Toolkit] package is introduced to contain the implementation for all actions. +A new [Toolkit] class provides access to the actions and offers control over configuration and certain features. +Specifically **SDK configuration** (`SdkProvider`) [TODO: Maybe just auth] and **interactive controls** (`IoHost`) will become part of the public contract. + +Today Users call the CLI and Integrators either call the CLI or use cli-lib-alpha which is a wrapper around the CLI. + +To keep the solution maintainable, the codebase will restructured into three main packages: + +* `@aws-cdk/toolkit` the main package containing all implementation of actions and public interfaces. +* `aws-cdk` the existing CLI. Contains a wrapper to translate command line input to [Programmatic Toolkit] calls. + CLI focused implementations of `IoHost`, `SdkProvider` defaults. +* `@aws-cdk/jsii-toolkit` a jsii wrapper for the toolkit, contains jsii compatible version of `IoHost`, `SdkProvider` defaults. + +To limit the maintenance burden for the team, we will use a codegen solution where possible for the two wrapper packages. +Detailed design for this is tbd, but can change over time since it's not public facing. +The main idea is that actions and their options will be defined in a central place with deviations for the CLI and jsii packages included as annotations. + +#### IoHost + +This is the central piece of the proposal. +Based on tenet T5, we are aiming to separate actions from interactions. +This is important because programmatic use is inherently different to interactive use. + +A good example for this is `cdk deploy` and the `--rollback` / `--no-rollback` options. +Typically `--no-rollback` is used to increase iteration speed during development and a production deployment would run with `--rollback`. +However there are situations in which a rollback is still preferable. +For example if the stack is in a failed state or if the update contains a replacement which must always be run with rollbacks enabled. +In an interactive CLI it makes sense to prompt the user for their input if these situations are detected, even if the user originally had `--no-rollback` specified. + +Now think of a different interactive mode: An app with a UI. +All the same applies as before, but the implementation of the interaction will be different. +And finally we also need to handle this scenario in non interactive environments. +Although this is the easiest because we simply respect the value of the flag. + +`IoHost` formalizes how we deal with interaction. +In our code base, we codify where we have decision points that potentially warrant a (different) response from the integrator and in extension the user. + +Timeline of the communication between Toolkit and Integrator: First the Toolkit sends three messages. Then it sends a Request to which the integrator resonds. Finally two more messages are send from the Toolkit. + +We have an other requirement, that is in a similar space: Full control over all output. +Think different interaction modes (none vs console vs app), but also rewriting the message text messages and re-prioritization w.r.t to log levels. + +Both together make up the interface of `IoHost`. +See the readme above for more details. + +#### Messages and Requests + +The proposed `IoHost` design requires us to commit to a stable set of messages and requests send between [Programmatic Toolkit] and integrator. +A detailed definition of what would constitute a breaking change is included in the readme above. + +To support integrations, we will need to publish a list of all messages. +We will use static code analysis to automatically compile and publish this list without adding additional maintenance burden on to the team. + +#### SdkProvider + +The main purpose of this feature is to expose SDK configuration to an integrator. +We will be providing our default implementation as a drop-in solution for CLI-like environments. +However other possible scenarios like Electron or even web apps will require much different setups. + +Authentication is the primary focus of this public contract. +However from our own experience we are aware that authentication can also extend to other parts of SDK configuration. +For example proxies require HTTP transport configuration and default timeouts and retries are also worth considering. + +The existing plugin system is a superset of the SDK v3's `AwsCredentialIdentityProvider` type as it introduces a mode (reading or writing). +The public contract will subsume and formalize this. + + +Today Users call the CLI and Integrators either call the CLI or use cli-lib-alpha which is a wrapper around the CLI. + +### Is this a breaking change? + +No. + +### What alternative solutions did you consider? + +> Briefly describe alternative approaches that you considered. If there are +> hairy details, include them in an appendix. + + + +### What are the drawbacks of this solution? + +#### Increased API surface + +The main risk is the larger surface area. +Previously we have only committed to the CLI interface, which is fairly limited by design. +The new API surface covers additional option interfaces, emitted messages and newly introduced primitives such as a `CloudExecutable` or `StackDeployment`. + +Our primary mitigation is to constrain our the new APIs to real world end-to-end use cases (see tenet T2).s + +#### Separating actions and interaction makes it harder to add features to the CLI + +The solution includes a paradigm shift to consider programmatic access first and the CLI second. +This shift is codified by the introduction of a new package that contains all actions and the CLI calling them. +With this, we now have more work to do: Any feature needs to first consider its programmatic usage and then derive the CLI usage from it. + +We mitigate this by providing tooling that helps contributors to define different inputs and defaults declaratively and generate (parts of) the code for it. +Additional test tooling will help writing the same test cases onces for different input modes. + +#### A lot of refactoring + +The proposal requires to move a lot of code around, mostly into new packages. +It also implies refactoring of existing interfaces to match the new API design. +Both of these things are prone to human errors. + +Mitigation for this is test coverage and separating out PRs that are purely moving code, from actual changes. + +### Why is `CloudFormationDeployments` not include in this proposal? + +`CloudFormationDeployments` is a class providing a low-level API to deploy CloudFormation templates. +Based on customer feedback there appear to be two main scenarios where the CloudFormationDeployments is currently used: + +* As a workaround for the lack of programmatic access. +* By tools that treat CDK primarily as a template generator and implement their own deployments, to avoid some of CFNs implementation details. + +We believe both scenarios will be much better addressed by this proposal. +The CDK *is* the tool to avoid CFN implementation details. +With the proposed [Events] feature, it will be possible for integrators to deeper integrate with the deployment process. + +### Why create a new package? Why not use `cli-lib-alpha`? + +We are taking the working parts of `cli-lib-alpha` and are building on top of them. +By initially focusing on TypeScript users, we will be able to deliver more, faster. +jsii support in `cli-lib-alpha` does not exist and we plan to deliver a new jsii focused package that actually works. + +Beside the above, the old name implies it offers the same functionality as the CLI. +This RFC explains why a CLI and programmatic access are different modes. +A new name will reflect this change better. + +### What is the high-level project plan? + +The project will be delivered incrementally over multiple months. +We start with core functionalities and the most commonly used actions. +A more detailed project plan will be provided when it is available. + +#### Milestone 1 // 8 two-dev-weeks + +Covers foundational features and the most commonly used actions. + +* Actions: synth, deploy, watch, destroy +* Event system +* structured errors +* new packages +* align configuration +* implement options for cli-lib +* generate options from toolkit interface + +#### Milestone 2 // 8 two-dev-weeks + +Added support for actions required to cover the complete lifecycle of a CDK app. +Typed returns to increase support for even more complex scenarios. +Use [Programmatic Toolkit] in `integ-runner` and integration tests. + +* Actions: bootstrap, list, diff, rollback +* Typed Returns for all current actions +* events for above actions +* integration Tests +* integ-runner + +#### Milestone 3 // 4 two-dev-weeks + +GA. Added support for operational actions and release of the jsii toolkit. + +* Actions: context, metadata, notices, acknowledge, doctor, docs, gc +* Typed Returns for all above actions +* events for above actions +* new jsii package, removal of cli-lib-alpha + +#### Milestone 4 // 4 two-dev-weeks + +GA. Added support for highly interactive actions. + +* Actions: init, migrate, import +* Typed Returns for all above actions +* events for above actions +* Hooks? + +### Are there any open issues that need to be addressed later? + +None. The project plan above covers all intended functionality. + +## Appendix + +### A. GitHub issues + +* [CLI: Using the CDK programmatically · Issue #15851 · aws/aws-cdk · GitHub](https://github.com/aws/aws-cdk/issues/15851) +* [(aws-cloudformation) Deploy a CDK stack in a Lambda · Issue #15447 · aws/aws-cdk · GitHub](https://github.com/aws/aws-cdk/issues/15447) +* [How to deploy CDK app via Lambda · Issue #2637 · aws/aws-cdk · GitHub](https://github.com/aws/aws-cdk/issues/2637) +* [Programmatically expose the output of CDK list · Issue #8436 · aws/aws-cdk · GitHub](https://github.com/aws/aws-cdk/issues/8436) +* [Can we run synth programmatically? · Issue #1467 · aws/aws-cdk · GitHub](https://github.com/aws/aws-cdk/issues/1467) +* [SST usage of AWS CDK CLI code · Issue #23182 · aws/aws-cdk · GitHub](https://github.com/aws/aws-cdk/issues/23182#issuecomment-1375923880) +* [Programmatic diff inspection · Issue #2637 · aws/aws-cdk · GitHub](https://github.com/aws/aws-cdk/issues/679) +* [jsii support · Issue #1133 · aws/aws-cdk · GitHub](https://github.com/aws/aws-cdk/issues/1133) + +### B. Tenets + +* **T1: Programmatic lifecycle management is a first-class citizen.** + We want to build internal tooling and workflows that put programmatic lifecycle management front and center during development. +* **T2: Solutions for real customer use cases, not hypothetical ones.** + We want to prioritize complete end-to-end features that solve real customer problems. + The existing surface area is already large enough to catch up on. + For now, we will not offer lower-level building blocks which often already exist in other tooling. +* **T3: A first-in-class TypeScript experience.** + All sufficiently complex integrations with the programmatic interface will be build as Node/JavaScript apps. + For this primary use case we want to offer a delightful experience. +* **T4: Participate in the jsii ecosystem.** + Whenever it is possible and sensible, we strive to contribute in the jsii ecosystem. + When we can, our solutions are made available to users of all jsii languages. +* **T5: Separating out the actions from the interactions.** + A programmatic API should focus on the actions it offers. + A CLI needs to focus on the interactions with a customer. + We want to untangle both and then reconnect them through well-defined interfaces. + +*Some tenets stand intentional in conflict with each other. +The proposed design aims to resolve these tensions.* Here are some explicit call-outs: + +*T3 TypeScript vs T4 jsii ecosystem* - The tension is that participating in the jsii ecosystem usually means that all features must be jsii compatible. +It implies a lo-fi solutions compared to native TypeScript. +Both tenets are aimed at different use cases. +A tool absorbing CDK actions management will realistically be build in TypeScript and should be able to make the full use of it. +A jsii package will benefit the scripting community and use in Notebooks. +There are naturally some TypeScript features that will be impossible to implement for jsii, e.g. Error types or custom SDK providers. + +*T2 Real use cases vs T4 jsii ecosystem* - The tension is that there is little evidence that users want a jsii version of this. +Some requests are documented for Python to improve Notebooks support. +But participating in the jsii ecosystem means to always publish for all languages even if there is no explicit ask. + +### C. Requirements + +The identified functional and non-functional requirements. +Inclusion in this list does not imply the proposal addresses a requirement directly or exactly in the way the requirement describes it. + +#### Functional (FR) + +| # | Description | +| ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| FR1 | Execute the CDK actions synth, deploy, watch & destroy | +| | Support the most commonly used actions (commands) to manage the deployment of CDK apps on behalf of users. | +| FR2 | All configuration can be provided via API (i.e. do not require cdk.json or cdk.context.json) | +| | Integrators managing the CDK lifecycle on behalf of the customer must be able to take care of all configuration options and where needed exposes them to customers through it’s own interface. To support this, all configuration options for the relevant actions must be configurable via the programmatic API. In particular it has been noted that watch patterns are only configurable via a file. | +| FR3 | Structured errors | +| | Integrators will have different needs for error reporting than the CDK. Currently integrators must string-match CDK errors and map them to something else. Instead CDK should emit structured errors identified by well-defined error codes. An integrator should be able to differentiate between CLI errors, and synth-time errors. CLI errors are typically related to misconfiguration which an integrator might want to own. Synth errors can typically be addressed by users by making changes to their CDK app. CDK should emit and handle both types transparently separate from each other. When possible, CDK should maintain JavaScript errors as they are emitted by the user’s app. | +| FR4 | Full control over output (logging) | +| | Integrators have full control over any logging output. CDK should emit any logs as structured data, containing at least the log level, a timestamp and the proposed log message. For log events containing structured data, the data should be attached in structured form. | +| FR5 | Complete lifecycle management | +| | Cover the complete lifecycle of a CDK app. It will possible to fully automated the regular lifecycle of a CDK app. This extends the list of supported actions with the following: bootstrap, list, diff, rollbackIn particular the diff action must yield an inspectable representation of the stack difference. | +| FR6 | Integration tests & integ-runner | +| | The solution should be sufficient to update existing integration testing solutions like `integ-runner` and integ-tests library to use the new solution. | +| FR7 | Support operational actions | +| | Support for operational actions. While of these are informational, import will unlock additional migration use cases. This extends the list of supported actions with the following: import, context, metadata, notices, acknowledge, doctor, docs, gc | +| FR8 | Support project generation actions | +| | Extend support to actions used for project generation. This extends the list of supported commands with the following: init, migrate | +| FR9 | Typed returns | +| | Return values of toolkit actions should be meaningful and provide reusable data. E.g. synth returns the created assembly that can be reused in other actions. List returns stacks. Diff returns an inspectable representation of the diff. Deploy returns information on the just deployed stacks. Etc. | +| FR10 | Events | +| | In extension to logging focused events, the CDK should emit events for API operations including progress and state transitions (e.g. for deployment: synth complete, assets built, assets published, Hotswap/CFN deployment started ...). If available, these events should include additional data like the arn of the stack or a progress percentage. An integrator must be able to execute blocking code on these events. This will allow them to e.g. schedule pre-build scripts before synth starts or to update a service registry after deployment completed. | +| FR11 | Event hooks | +| | As an extension to events, hooks provide the ability to manipulate and return specific data to the regular flow. Hooks will be more limited than events, but could allow to change what stacks are deployed, e.g. always adding a required support stack or changing the CFN template before the upload. | +| FR12 | Custom Authentication configurations | +| | Authentication is one of the most complex parts of the CDK. Integrators will want to offer their users a streamlined solution focused on their customer needs. The solution should allow for integrators to provide their own solution. This could be implemented by allowing integrators to define a custom SDK Provider. | + +#### Non-functional (NFR) + +| # | Description | +| ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| NFR1 | API stability | +| | CDK team must provide a stable API for integrators. We need to define expectations w.r.t. what constitutes breaking changes (e.g. Do changes to events qualify?) and set expectations. | +| NFR2 | Performance | +| | A key consideration for integrators team is to improve the end-to-end performance of their user's deployments. Key performance indicator should be the synth action using a minimal example app. The baseline benchmark is the current sub-process call `cdk --app="npx ts-node app.ts`. The synth action is used as a proxy metric for time spend invoking the CDK CLI framework. Other actions (deploy, destroy) are dependent on external systems.Performance should not degrade compared to the baseline. | +| NFR3 | Execution within single process | +| | A direct consequence of FR3, FR4 and NFR2. To achieve the desired user-experience w.r.t to error handling, message logs and performance, integrators need to be able to execute the listed actions within a single Node.js process. Currently two sub-processes are required: a) to call the CDK CLI, and b) to call the customers CDK app. Both steps will be able to run within a single process that is also the integrators tool. This requirement only covers JavaScript code and not uncompiled TypeScript code. | +| NFR4 | jsii package | +| | To enrich the jsii ecosystem we will strive to make as much functionality as possible available to users in the jsii ecosystem (Python, Java, .NET, Golang). This may however be a reduced feature set compared to our offering for TS integrators. | +| NFR5 | Maintain support for plugin users | +| | The CLI offers support for various types of plugins. This needs to be continued to supported. We are also aware that some users are currently using functionality that was never intended to be used by the general public. This usage is currently tolerated and we may need to provide alternatives. | +| NFR6 | Maintainability | +| | This new interface must replace or subsume the maintenance burden of the CLI; they cannot diverge. Responsibilities need to be clearly split between components. E.g. if the CLI does anything other than handling console I/O, it’s a problem. | + +### D. Glossary + +**Action** (Toolkit action or lifecycle action)\ +Broadly what the current CLI commands are, i.e. bootstrap, synth, list, deploy, destroy, etc. + +**Integrator**\ +A software system that is integrating with the [Programmatic Toolkit] to execute actions on a CDK app. +Today these systems are calling the CLI, in future they will use the [Programmatic Toolkit]. +See also Use Case A. +This is opposed to users that are directly (or indirectly) interacting with the AWS CDK CLI. + +**jsii ecosystem**\ +Users and integrators that are using a jsii-supported language (Python, Java, .NET, Golang) instead of JavaScript/TypeScript. + +### E. Usage of @aws-cdk/cli-lib-alpha + +![Graph of downloads of the @aws-cdk/cli-lib-alpha package per month from Nov 2022 to Oct 2024. The line starts at 0 and climbs to 16k downloads/month in a wave pattern.](../images/0300/cli-lib-alpha-usage.png) +[Source](https://npm-stat.com/charts.html?package=%40aws-cdk%2Fcli-lib-alpha&from=2022-11-01&to=2024-10-2) From 17bc2d915ac9894a345b418bcee203e9b710ad0e Mon Sep 17 00:00:00 2001 From: Momo Kornher Date: Fri, 22 Nov 2024 11:36:08 +0000 Subject: [PATCH 2/3] First review round. --- text/0300-programmatic-toolkit.md | 398 +++++++++++++++++++----------- 1 file changed, 258 insertions(+), 140 deletions(-) diff --git a/text/0300-programmatic-toolkit.md b/text/0300-programmatic-toolkit.md index 95cf12060..62c131531 100644 --- a/text/0300-programmatic-toolkit.md +++ b/text/0300-programmatic-toolkit.md @@ -25,8 +25,7 @@ The package provides implementations for the following actions: ```ts // Create a [Programmatic Toolkit] await using cdk = new Toolkit({ - ioHost: new CloudWatchLogsIoHost('my-log-stream'), // write all output to CW logs - // awsSdkProvider: new DefaultAwsSdk(), // optional + ioHost: new CloudWatchLogsIoHost('my-log-stream'), // optional, e.g. an IoHost to write any output to CloudWatch Logs }); // Define the CloudExecutable @@ -55,24 +54,47 @@ const cdk = new Toolkit() ``` You can customize the functionality of the toolkit. -The main options are provided through `ioHost` and `awsSdkProvider`. +Currently only `ioHost` is available for customization: ```ts const cdk = new Toolkit({ ioHost: new MyIoHost(), - awsSdkProvider: new MyAwsSdkProvider(), }) ``` +A `CdkCommandLineIoHost` implementation will be made available, offering the default behavior of the AWS CDK CLI. + #### Messages and Requests The toolkit emits *messages* and *requests* to structure interactions. -A *request* is a *message* that requires the receiver to respond, otherwise the toolkit will continue with a default response. +A *request* is a special *message* that allows the receiver to respond, if none is given the toolkit will continue with a default. +*Messages* and *requests* only originate from the toolkit and flow to the integrator. + +A a sample flow of messages for the deployment action looks something like this (pseudo code): + +``` +msg("Starting deployment") +msg("Found 2 stacks", stacks) +msg("Diff of Stack A", diffA) +req("Found security relevant changes in Stack A, continue?", diffA) -> true +msg("Diff of Stack B", diffB) +msg("Deploying Stack A") +msg("Stack event for Stack A", event) +msg("Stack event for Stack A", event) +msg("Stack event for Stack A", event) +msg("Stack A deployment completed", stackA) +msg("Deploying Stack B") +msg("Stack event for Stack B", event) +msg("Stack event for Stack B", event) +msg("Stack B deployment completed", stackB) +``` For every emitted message, the toolkit calls the `notify` or `requestResponse` method of an `IoHost` (more on this below). Every call is `await`ed for its completion, allowing to receiver to perform asynchronous operations like HTTP calls. It's okay for the receiver not do anything with the input and return immediately. -The type definition of messages and requests is as follows: + +The type definition of messages and requests is as follows +(types are illustrative only and implementation might change): ```ts interface IoMessage { @@ -89,13 +111,21 @@ interface IoRequest extends IoMessage { } ``` -##### Changes and Breaking Changes to messages and requests +The [Programmatic Toolkit] will always send all messages for all levels. +It's up to the integrator to decide which messages should be written to an output system like a console. -Messages and requests play an important role in structuring interactions with the Toolkit. -Because messages will be emitted in many places, they will change frequently. -An integrator needs to take great care when handling messages and basing implementation on them. A list of all messages and requests is available at [TODO: link to auto-generated list of messages]. +##### Changes and Breaking Changes to messages and requests + +The [Programmatic Toolkit] is committed to providing a stable and reliable API for integrators. +As a foundational piece of infrastructure that other tools and systems will depend on, we take backwards compatibility seriously. +Once the API reaches general availability, we will follow semantic versioning principles and only introduce breaking changes in major versions. + +Messages and requests are a core part of our public contract with integrators. +We recognize that integrators will build critical workflows around these structured interactions. +Therefore, we provide clear guarantees about what changes are considered breaking versus non-breaking to help integrators build with confidence. + For a given message code, the following changes are considered breaking: - a backwards incompatible change to type definition of message data, @@ -118,7 +148,8 @@ For the avoidance of doubt, the following changes are explicitly **not** conside #### IoHost Message receivers need to implement the `IIoHost` interface. -The `IoHost` is responsible for handling all logging and interactions: +The `IoHost` is responsible for handling all logging and interactions +(types are illustrative only and implementation might change): ```ts interface IIoHost { @@ -126,7 +157,7 @@ interface IIoHost { * Notifies the host of a message. * The caller waits until the notification completes. */ - async notify(msg: IoMessage); + notify(msg: IoMessage): Promise; /** * Notifies the host of a message that requires a response. @@ -134,13 +165,13 @@ interface IIoHost { * If the host does not return a response the suggested * default response from the input message will be used. */ - async requestResponse(msg: IoRequest): U | undefined; + requestResponse(msg: IoRequest): Promise; } ``` -For every message, the toolkit calls `notify` or `requestResponse` is called respectively. +For every message, the toolkit calls `notify` or `requestResponse`, respectively. -The a generic `IoEmitter` is available to provide a familiar event emitter interface. +A generic `IoEmitter` is available to provide a familiar event emitter interface. This implementation will do nothing for messages and requests that don't have a registered listener, i.e. the default response will be used as required. ```ts @@ -152,35 +183,28 @@ io.once('deploy:confirm-security', async (msg: IoRequest): boolean => { }) ``` -The `CommandLineIoHost` is available, implementing all the interaction behavior for the AWS CDK CLI [TODO: this might end up in a separate package]: +The `CdkCommandLineIoHost` is available, implementing all the interaction behavior for the AWS CDK CLI [TODO: this might end up in a separate package]: ```ts -const io = new CdkCliHost({ - isInteractive: true +const io = new CdkCommandLineIoHost({ + useTTY: true // optional, defaults to auto detecting if TTY should be used }) ``` -##### SdkProvider - - [Alternative: Make this `CredentialsProvider` or `SdkConfigProvider` instead] - -The `AwsSdkProvider` defines how the toolkit interacts with AWS services. -A default provider is available. -You can provide a custom class implementing the `IAwsSdkProvider` interface. -A standard `SdkProviderForCdk` is available that includes all features of the AWS CDK CLI [TODO: this might end up in a separate package]. - #### Cloud Executables -A Cloud Executable is the primitive that defines a deployable AWS CDK application. +A Cloud Executable is the primitive that defines instructions on how to create a deployable AWS CDK application. AWS CDK apps might need to be synthesized multiple times with additional context values before they are ready. This concept is what the Cloud Executable represents. The most flexible way to obtain a Cloud Executable is from a function returning a `CloudAssembly`. -Providing a function allows your implementation to integrate with the [Programmatic Toolkit]'s multi-pass requirement. +Providing a function allows your implementation to integrate with the [Programmatic Toolkit]'s automatic context fetching system. The function will be called one or more times with the known context values of the current iteration. It must then use these values to synthesize and return a `CloudAssembly`. +If the Cloud Assembly contains metadata that indicates that context information is missing, +the toolkit will perform lookup AWS API calls using the appropriate credentials, and invoke the cloud executable again. For all features (e.g. lookups) to work correctly, the `App()` must be instantiated with the received context values. -Since it is not possible to update the context of an app, it must be created inside the function scope. +Since it is not possible to update the context of a `cdk.App`, it must be created inside the function scope. A basic implementation would look like this: @@ -243,87 +267,67 @@ interface ToolkitError extends IoMessage { The toolkit might throw other exceptions. These are bugs and you should report them by [raising an issue](https://github.com/aws/aws-cdk/issues/new?assignees=&labels=bug%2Cneeds-triage&projects=&template=bug-report.yml&title=%28toolkit%29%3A+Untyped+Exception+%28short+description%29). To assist integrators with detecting the type of error, the following helper methods are available. -Even though errors are typed, you should not rely on `instanceof` checks because it can behave unexpectedly when working with multiple copies of the same package. [TODO: insert reference link] +Even though errors are typed, you should not rely on `instanceof` checks +because it can behave unexpectedly when working with multiple copies of the same package. [TODO: insert reference link] ```ts try { await cdk.deploy(...); -} catch (e: unknown) { +} catch (e) { if (ToolkitError.isToolkitError(error)) { // handle toolkit errors - } else if (ToolkitError.isUserError(e)) { - // handle user code errors } - - if (ToolkitError.isCdkError(e)) { - // handle any cdk errors - } -} -``` - -##### Recoverable Errors [TODO: Naming. All errors in JS are recoverable. Ruby calls this rescue/retry] - - [Alternative: Do not do this at all] - [Alternative: Formalize a retry budget] - -While most errors are terminal, it's possible to recover from some. -For example if an authentication token is expired, an integrator may prompt the user to re-authenticate via a browser login, before continuing with the action. -With recoverable errors, the integrator can return to normal program flow after an issue has been addressed. - -In the [Programmatic Toolkit], recoverable errors are implemented as a special type of request. -By default, errors are not attempted to recover. -```ts -interface RecoverableError extends IoRequest { - level: 'error'; - defaultResponse: { - retry: boolean; // indicates if the block should retried - // ... other response values - }; - data: { - isRecoverable: true; - attempt: number; // the number of the current attempt, starting with 1 + if (ToolkitError.isValidationError(e)) { + // handle any cdk app errors } } ``` -When `IoHost.requestResponse()` is called with a recoverable error, the integrator may choose to return `retry: true` to indicate the block should be retried. -A single retry is allowed, if the block fails again with the same error it will be raised as an exception. -Retries are not guaranteed and integrators must handle the case where a requested retry is not executed. -Recoverable errors are rare as they require special programming and not always possible. - ##### Synth-time Errors -There is a subtle semantic difference between errors that originate from the [Programmatic Toolkit] and from a Cloud Executable, i.e. from a user's app: +There is an important semantic difference between errors that originate from the [Programmatic Toolkit] and from a Cloud Executable, +i.e. from a user's app: Errors from the [Programmatic Toolkit] are typically misconfigurations and maybe fixable by an integrator, while errors from a Cloud Executable are usually code problems and only fixable by the user. -The [Programmatic Toolkit] emits all synth-time errors as recoverable errors. -When implementing a custom Cloud Executable in code, you may prefer to handle synth-time errors directly in code: - - [Alternative: Don't allow retries on user code] - [Alternative: Implement retries as regular requests] +The [Programmatic Toolkit] treats and throws synth-time errors like any errors. +When implementing a custom Cloud Executable in code, an integrator may choose to handle synth-time errors in the toolkit code or in the Cloud Executable. ```ts -class MyCloudExecutable implements ICloudExecutable { - async exec(context: Record): cxapi.CloudAssembly { +const cx: ICloudExecutable = CloudExecutable.fromCloudAssemblyProducer( + async (context: Record): cxapi.CloudAssembly => { try { const app = new cdk.App({ context }); const stack = new cdk.Stack(app); return app.synth(); - } catch(e: unknown) { - // handle errors here + } catch(e) { + // this will only receive errors thrown at app construction or synth time + if (Errors.isValidationError(e)) { + // handle any cdk app errors + } } } +); + +try { + await cdk.synth(cx); +} catch (e) { + // Additional toolkit errors are only thrown here + if (ToolkitError.isToolkitError(error)) { + // handle toolkit errors + } } ``` #### Dispose -The `Toolkit` class implements an `AsyncDisposable` Resource according to the [Explicit Resource Management](https://github.com/tc39/proposal-explicit-resource-management) feature in ECMAScript. -This means that any resources used by the [Programmatic Toolkit] are automatically cleaned-up. +The `Toolkit` class implements an `AsyncDisposable` Resource according to the [Explicit Resource Management][] feature in ECMAScript. +This means that any resources, like temporary files, used by the [Programmatic Toolkit] are automatically cleaned-up. `AsyncDisposable` guarantees this clean-up even in case of an uncaught exception. +[Explicit Resource Management]: https://github.com/tc39/proposal-explicit-resource-management + You may also call the `dispose()` method directly. We recommend to do this inside a `finally` statement to guarantee execution. @@ -365,14 +369,16 @@ ACME develops a custom cli tool to abstract the hard parts of creating REST APIs ACME's data scientists are able to place a `app-config.yml` file in a repository. They then write a FastAPI app compatible with Lambda to serve their models. Then they run `acme-cli deploy serverless-rest-api --config app-config.yml`. -This is great, because the data scientists don't have to know anything about CloudFormation, the AWS CDK, or other IaC tools, but they can easily deploy apps. +This is great, because the data scientists don't have to know anything about CloudFormation, +the AWS CDK, or other IaC tools, but they can easily deploy apps. With [Programmatic Toolkit] ACME can automatically handle bootstrapping for its users and it allows ACME to provided targeted output to theirs Real world examples: * [Amplify](https://github.com/aws-amplify/amplify-cli) uses CDK apps to enable their users to build cloud-enabled frontend and mobile apps. Amplify is wrapping the CDK in a custom CLI and adds additional features like sandbox environments. -* [The Guardian](https://github.com/guardian/cdk) is providing their engineers with a construct library and cli tool to create new projects and migrate from existing CloudFormation YAML based stacks. +* [The Guardian](https://github.com/guardian/cdk) is providing their engineers with a construct library and cli tool to create new projects + and migrate from existing CloudFormation YAML based stacks. * [Pulumi CDK Adapter](https://github.com/pulumi/pulumi-cdk) is enabling Pulumi users to use CDK constructs in their applications. The tool uses `cli-lib-alpha` to synthesize user's apps and integrate with other Pulumi tooling. @@ -381,16 +387,19 @@ Real world examples: Build an app, e.g. a serverless REST API and then run functional tests against it. That could mean sending several requests to a REST API and watching for expected responses. On completion the stack is torn down and a report provided to the user. -This can also be used to automatically create test environments from a Pull Request and keep them up-to-date until the change is merged, at which point the environment is destroyed again. +This can also be used to automatically create test environments from a Pull Request and keep them up-to-date until the change is merged, +at which point the environment is destroyed again. The [Programmatic Toolkit] enables execution of integration test cases as soon as the relevant resources are deployed (as opposed to the whole stack). It can be run from within a Lambda function and handle complex error scenarios. Real world examples: -* [integ-runner](https://github.com/aws/aws-cdk/tree/v2.165.0/packages/%40aws-cdk/integ-runner) is orchestrating lifecycle actions on behalf of the users to provide end-to-end integration testing. +* [integ-runner](https://github.com/aws/aws-cdk/tree/v2.165.0/packages/%40aws-cdk/integ-runner) + is orchestrating lifecycle actions on behalf of the users to provide end-to-end integration testing. It uses a wrapper library to call the AWS CDK CLI via subshell. -* [@aws-cdk-testing/cli-integ](https://github.com/aws/aws-cdk/blob/main/packages/%40aws-cdk-testing/cli-integ/lib/with-cdk-app.ts) executes complex test scenarios for features like authentication, bootstrapping, garbage collection as well as thrid-party integrations. +* [@aws-cdk-testing/cli-integ](https://github.com/aws/aws-cdk/blob/main/packages/%40aws-cdk-testing/cli-integ/lib/with-cdk-app.ts) + executes complex test scenarios for features like authentication, bootstrapping, garbage collection as well as thrid-party integrations. It runs tests in specially prepared environments. To script the setup and the test execution, it uses a custom subshell wrapper to execute CLI commands. @@ -402,7 +411,8 @@ The EMR cluster and tasks can be defined and deployed from within the Notebook. API calls are then used to execute the tasks, download results and remove the infrastructure. Today users are limited to make imperative SDK calls or to provide a separate companion app with additional instructions. -With the [Programmatic Toolkit], CDK apps can be deployed directly from within a Notebook and resources can be referenced directly as the result of CDK actions. +With the [Programmatic Toolkit], CDK apps can be deployed directly from within a Notebook +and resources can be referenced directly as the result of CDK actions. Real world examples: @@ -426,9 +436,6 @@ Programmatic usage will become an equally considered use case, in fact the propo ### Why should we _not_ do this? -There are requirements that cannot be satisfied with the current available options. -Specifically hooks, control over logging, structured errors and typed returns are not possible. - Implementing the [Programmatic Toolkit] proposal will make it more difficult to add new features to the CLI. It creates a new level of abstraction, that needs to be considered going forward. The complexity of these abstractions might discourage community contributions and increase the time to build new features. @@ -439,20 +446,21 @@ and these might potentially be satisfied by smaller, more targeted improvements. ### What is the technical solution (design) of this feature? The [Programmatic Toolkit] is building on the existing design of the `cli-lib-alpha` package. -User apps are defined as a Cloud Executable and can be created in multiple ways like reading existing on-disk CDK apps or adding code directly by implementing an interface. +User apps are defined as a Cloud Executable and can be created in multiple ways like reading existing on-disk CDK apps +or adding code directly by implementing an interface. A new [Programmatic Toolkit] package is introduced to contain the implementation for all actions. A new [Toolkit] class provides access to the actions and offers control over configuration and certain features. -Specifically **SDK configuration** (`SdkProvider`) [TODO: Maybe just auth] and **interactive controls** (`IoHost`) will become part of the public contract. +To start with, only **interactive controls** (`IoHost`) will become part of the public contract. -Today Users call the CLI and Integrators either call the CLI or use cli-lib-alpha which is a wrapper around the CLI. +![Today Users call the CLI and Integrators either call the CLI or use cli-lib-alpha which is a wrapper around the CLI.](../images/0300/tomorrow.png) To keep the solution maintainable, the codebase will restructured into three main packages: * `@aws-cdk/toolkit` the main package containing all implementation of actions and public interfaces. * `aws-cdk` the existing CLI. Contains a wrapper to translate command line input to [Programmatic Toolkit] calls. - CLI focused implementations of `IoHost`, `SdkProvider` defaults. -* `@aws-cdk/jsii-toolkit` a jsii wrapper for the toolkit, contains jsii compatible version of `IoHost`, `SdkProvider` defaults. + CLI focused implementation of `IoHost` and defaults. +* `@aws-cdk/jsii-toolkit` a jsii wrapper for the toolkit, contains jsii compatible version of `IoHost` and defaults. To limit the maintenance burden for the team, we will use a codegen solution where possible for the two wrapper packages. Detailed design for this is tbd, but can change over time since it's not public facing. @@ -466,9 +474,11 @@ This is important because programmatic use is inherently different to interactiv A good example for this is `cdk deploy` and the `--rollback` / `--no-rollback` options. Typically `--no-rollback` is used to increase iteration speed during development and a production deployment would run with `--rollback`. -However there are situations in which a rollback is still preferable. +However there are situations in which deploying in rollback mode is necessary, +or even an explicit rollback needs to be performed before a deployment can continue. For example if the stack is in a failed state or if the update contains a replacement which must always be run with rollbacks enabled. -In an interactive CLI it makes sense to prompt the user for their input if these situations are detected, even if the user originally had `--no-rollback` specified. +In an interactive CLI it makes sense to prompt the user for their input if these situations are detected, +even if the user originally had `--no-rollback` specified. Now think of a different interactive mode: An app with a UI. All the same applies as before, but the implementation of the interaction will be different. @@ -478,7 +488,7 @@ Although this is the easiest because we simply respect the value of the flag. `IoHost` formalizes how we deal with interaction. In our code base, we codify where we have decision points that potentially warrant a (different) response from the integrator and in extension the user. -Timeline of the communication between Toolkit and Integrator: First the Toolkit sends three messages. Then it sends a Request to which the integrator resonds. Finally two more messages are send from the Toolkit. +![Timeline of the communication between Toolkit and Integrator: First the Toolkit sends three messages. Then it sends a Request to which the integrator resonds. Finally two more messages are send from the Toolkit](../images/0300/iohost.png) We have an other requirement, that is in a similar space: Full control over all output. Think different interaction modes (none vs console vs app), but also rewriting the message text messages and re-prioritization w.r.t to log levels. @@ -494,11 +504,84 @@ A detailed definition of what would constitute a breaking change is included in To support integrations, we will need to publish a list of all messages. We will use static code analysis to automatically compile and publish this list without adding additional maintenance burden on to the team. +#### Synth-time Errors + +This includes making changing all errors thrown from the construct library to typed errors. +If an integrator includes the CDK App in the same process, errors can either be handled directly or will be rethrown. +Cloud Executables that are going through a child process will eventually print all errors to stderr. +For these we are going to detect errors from the output streams and convert them to JavaScript errors. +The Toolkit will then throw them as before. + +#### Future Extensions + +This proposal focuses on a feature set required for GA. +However the design allows for easy future extensions: + +- Additional actions can be migrated to the [Programmatic Toolkit] +- The `IoHost` can be extended to include other I/O tasks like filesystem interactions. + This would allow implementations that are truly, in-memory like in browser environments. +- The Toolkit setup can allow additional configuration, like providing a custom SDK or authentication configuration. + +### Is this a breaking change? + +No. + +### What alternative solutions did you consider? + +#### Granular API + +> Disregarded. This creates the same or larger API surface as the proposed solution. +> We anticipate that most integrators will only be interested in the main actions (tenet T2). +> Therefore this would create additional work for integrators. +> We will also still need a logger implementation to satisfy FR4. +> Finally the alternatives are not exclusive and we can consider introducing more granular functions later on. + +The [Programmatic Toolkit] provides a granular API for all steps of the lifecycle of an AWS CDK app. +Return types can provide additional information or can be used as input to a following API call. +It is up the integrator to combine steps into end-to-end actions. + +For example, this is a crude implementation of today's `cdk deploy prefix/*` command: + +```ts +await using cdk = new Toolkit(); +const cx = CloudExecutable.fromCdkApp(process.cwd()); + +// Synth the app and select relevant stacks +const cxCache = await cdk.synth(cx); +const stacks = cxCache.selectStacks('prefix/*'); + +// Create a diff and changes sets +let deployments = []; +for (const stack of stacks) { + const diff = cdk.diff(cxCache.stack); + + // Possibly ask user for input + // this would be mostly custom code written by the integrator + if (requireApproval && diff.hasSecurityRelevantChanges()) { + await askForUserConfirmation(renderSecurityRelevantChanges(diff)); // will exit on decline + } + + // Use the diff as a changeset and deploy it + const changeSet = await diff.createChangeSet(); + const deployment = await changeSet.deploy(); + deployments.push(deployment); +} + +// Do something with the deployments +deployments.map(d => listResources().filter(r => r.arn)) +``` + #### SdkProvider +> Designing and committing to a public interface for SDK Provider will require some dedicated design. +> The recent SDKv3 migration highlighted that the current design needs work. +> Exposing the full SDK to users also puts a lot of requirements and work on them. +> Instead we might want to consider a more focused approach like an interface for authentication config. +> This is still in scope for phase 3, but we will run a separate RFC and design for it. + The main purpose of this feature is to expose SDK configuration to an integrator. We will be providing our default implementation as a drop-in solution for CLI-like environments. -However other possible scenarios like Electron or even web apps will require much different setups. +However other possible scenarios like standalone apps or an IDE plugin will require very different setups. Authentication is the primary focus of this public contract. However from our own experience we are aware that authentication can also extend to other parts of SDK configuration. @@ -507,25 +590,67 @@ For example proxies require HTTP transport configuration and default timeouts an The existing plugin system is a superset of the SDK v3's `AwsCredentialIdentityProvider` type as it introduces a mode (reading or writing). The public contract will subsume and formalize this. +#### Readme -Today Users call the CLI and Integrators either call the CLI or use cli-lib-alpha which is a wrapper around the CLI. +The `AwsSdkProvider` defines how the toolkit interacts with AWS services. +A default provider is available. +You can provide a custom class implementing the `IAwsSdkProvider` interface. +A standard `SdkProviderForCdk` is available that includes all features of the AWS CDK CLI [TODO: this might end up in a separate package]. -### Is this a breaking change? +#### Event stream -No. +> Disregarded. Streams are non blocking by design. +> They can support two-way communication, but synchronization would require protocol messages, which is unnecessary complex. +> The jsii implementation cannot make use of JavaScript's native stream primitives and an alternative wrapper implementation would be required anyway. -### What alternative solutions did you consider? +An integrator passes a duplex stream into the toolkit at initialization time. +The toolkit would write any events (messages) onto this stream for the caller to consume. +Every message causes the execution to paused until the integrator answers with a continue message. +Requests are a special type of message. +The response to a request, may contain data from the integrator that answers the request. + +#### Synth-time Errors via Cloud Assembly + +> Disregarded, as this approach requires changes to Cloud Assembly contract. +> We would also need to adjust the App to always write a Cloud Assembly, even if it's just the error case. +> It also doesn't cover TypeScript or other language errors that can never be caught from within the App. +> The benefit of reading JSON from a file compared to stderr/stdout is minimal. +> Main difference would be that we don't have to try and detect the error data on the output stream. -> Briefly describe alternative approaches that you considered. If there are -> hairy details, include them in an appendix. +Synth-time errors are written to disk as part of the Cloud Assembly, similar to warnings today. +This would need to be an error-only Cloud Assembly, as the rest of it won't be available. +The toolkit reads the error information from the Cloud Assembly and converts them to JavaScript errors that are thrown. - +In the [Programmatic Toolkit], recoverable errors are implemented as a special type of request. +By default, errors are not attempted to recover. + +```ts +interface RecoverableError extends IoRequest { + level: 'error'; + defaultResponse: { + retry: boolean; // indicates if the block should retried + // ... other response values + }; + isRecoverable: true; + attempt: number; // the number of the current attempt, starting with 1 +} +``` + +When `IoHost.requestResponse()` is called with a recoverable error, the integrator may choose to return `retry: true` to indicate the block should be retried. +A single retry is allowed, if the block fails again with the same error it will be raised as an exception. +Retries are not guaranteed and integrators must handle the case where a requested retry is not executed. +Recoverable errors are rare as they require special programming and not always possible. ### What are the drawbacks of this solution? @@ -543,7 +668,8 @@ The solution includes a paradigm shift to consider programmatic access first and This shift is codified by the introduction of a new package that contains all actions and the CLI calling them. With this, we now have more work to do: Any feature needs to first consider its programmatic usage and then derive the CLI usage from it. -We mitigate this by providing tooling that helps contributors to define different inputs and defaults declaratively and generate (parts of) the code for it. +We mitigate this by providing tooling that helps contributors to define different inputs and defaults declaratively +and generate (parts of) the code for it. Additional test tooling will help writing the same test cases onces for different input modes. #### A lot of refactoring @@ -582,51 +708,42 @@ The project will be delivered incrementally over multiple months. We start with core functionalities and the most commonly used actions. A more detailed project plan will be provided when it is available. -#### Milestone 1 // 8 two-dev-weeks +#### Phase 1 // 6 two-dev-weeks -Covers foundational features and the most commonly used actions. +Foundational features and the most commonly used actions. * Actions: synth, deploy, watch, destroy -* Event system -* structured errors -* new packages -* align configuration -* implement options for cli-lib -* generate options from toolkit interface +* IoHost for messages & requests +* Structured errors +* New packages +* Toolkit class and changes to Cloud Executable -#### Milestone 2 // 8 two-dev-weeks +#### Phase 2 // 14 two-dev-weeks Added support for actions required to cover the complete lifecycle of a CDK app. Typed returns to increase support for even more complex scenarios. Use [Programmatic Toolkit] in `integ-runner` and integration tests. +Jsii version of [Programmatic Toolkit]. * Actions: bootstrap, list, diff, rollback * Typed Returns for all current actions -* events for above actions -* integration Tests -* integ-runner - -#### Milestone 3 // 4 two-dev-weeks - -GA. Added support for operational actions and release of the jsii toolkit. - -* Actions: context, metadata, notices, acknowledge, doctor, docs, gc -* Typed Returns for all above actions -* events for above actions -* new jsii package, removal of cli-lib-alpha +* Messages & requests for above actions +* integ-runner uses [Programmatic Toolkit] +* new jsii package, replacement of cli-lib-alpha -#### Milestone 4 // 4 two-dev-weeks +#### Phase 3 // tbd -GA. Added support for highly interactive actions. +GA. Added support for remaining actions. More configuration options. -* Actions: init, migrate, import -* Typed Returns for all above actions -* events for above actions -* Hooks? +* Actions: init, migrate, import, context, metadata, notices, acknowledge, doctor, docs, gc +* Messages & requests for above actions +* Typed Returns for above actions +* SdkProvider or SdkAuthConfig ### Are there any open issues that need to be addressed later? None. The project plan above covers all intended functionality. +Possible extensions are noted in the design. ## Appendix @@ -670,8 +787,9 @@ A tool absorbing CDK actions management will realistically be build in TypeScrip A jsii package will benefit the scripting community and use in Notebooks. There are naturally some TypeScript features that will be impossible to implement for jsii, e.g. Error types or custom SDK providers. -*T2 Real use cases vs T4 jsii ecosystem* - The tension is that there is little evidence that users want a jsii version of this. -Some requests are documented for Python to improve Notebooks support. +*T2 Real use cases vs T4 jsii ecosystem* - The tension here is the absence of requests for jsii support. +This indicates a lack of interest that users would actually want a jsii version. +Only some requests are documented for Python support to improve integration with Notebooks. But participating in the jsii ecosystem means to always publish for all languages even if there is no explicit ask. ### C. Requirements @@ -741,5 +859,5 @@ Users and integrators that are using a jsii-supported language (Python, Java, .N ### E. Usage of @aws-cdk/cli-lib-alpha -![Graph of downloads of the @aws-cdk/cli-lib-alpha package per month from Nov 2022 to Oct 2024. The line starts at 0 and climbs to 16k downloads/month in a wave pattern.](../images/0300/cli-lib-alpha-usage.png) +![Graph of downloads of the @aws-cdk/cli-lib-alpha package](../images/0300/cli-lib-alpha-usage.png) [Source](https://npm-stat.com/charts.html?package=%40aws-cdk%2Fcli-lib-alpha&from=2022-11-01&to=2024-10-2) From 51e4fdeb5005807449906e669947ad5afeda4a21 Mon Sep 17 00:00:00 2001 From: Momo Kornher Date: Thu, 9 Jan 2025 12:02:03 +0000 Subject: [PATCH 3/3] final fixes --- text/0300-programmatic-toolkit.md | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/text/0300-programmatic-toolkit.md b/text/0300-programmatic-toolkit.md index 62c131531..34fe32713 100644 --- a/text/0300-programmatic-toolkit.md +++ b/text/0300-programmatic-toolkit.md @@ -114,7 +114,7 @@ interface IoRequest extends IoMessage { The [Programmatic Toolkit] will always send all messages for all levels. It's up to the integrator to decide which messages should be written to an output system like a console. -A list of all messages and requests is available at [TODO: link to auto-generated list of messages]. +A list of all messages and requests is available at (to be provided). ##### Changes and Breaking Changes to messages and requests @@ -131,8 +131,8 @@ For a given message code, the following changes are considered breaking: - a backwards incompatible change to type definition of message data, e.g. changing the type of a property from `string` to a `boolean` or removing a non-optional property - removing data from a message that previously had data attached -- removal of a message or request -- changing the type from request to message +- removal of a message or request other than code (to be named list of generic messages) +- changing the type from message to request or vice versa For the avoidance of doubt, the following changes are explicitly **not** considered breaking: @@ -141,7 +141,8 @@ For the avoidance of doubt, the following changes are explicitly **not** conside - a change to the default response of a request - a change to the order messages and requests are emitted in - the addition of new messages and requests -- a change to the data possibly attached to the message as long as it adheres to the same type +- the removal of standard log messages with code (to be named) +- a change to the data possibly attached to a message as long as it adheres to the same type - adding data to a message that previously had no data - a backwards compatible change to the type definition of message data, e.g. adding a new property to an interface @@ -183,7 +184,7 @@ io.once('deploy:confirm-security', async (msg: IoRequest): boolean => { }) ``` -The `CdkCommandLineIoHost` is available, implementing all the interaction behavior for the AWS CDK CLI [TODO: this might end up in a separate package]: +The `CdkCommandLineIoHost` is available from package (to be named), implementing all the interaction behavior for the AWS CDK CLI: ```ts const io = new CdkCommandLineIoHost({ @@ -209,7 +210,7 @@ Since it is not possible to update the context of a `cdk.App`, it must be create A basic implementation would look like this: ```ts -const cx: ICloudExecutable = CloudExecutable.fromCloudAssemblyProducer( +const cx: ICloudAssemblySource = CloudExecutable.fromCloudAssemblyProducer( async (context: Record): cxapi.CloudAssembly => { const app = new cdk.App({ context }); const stack = new cdk.Stack(app); @@ -221,13 +222,13 @@ const cx: ICloudExecutable = CloudExecutable.fromCloudAssemblyProducer( Existing applications, can also be used by simply passing an AWS CDK app directory (containing a `cdk.json` file): ```ts -const cx: ICloudExecutable = CloudExecutable.fromCdkApp("/path/to/cdk/app"); +const cx: ICloudAssemblySource = CloudExecutable.fromCdkApp("/path/to/cdk/app"); ``` Alternatively the `cdk.out` directory from a previous synth can be used as well: ```ts -const cx: ICloudExecutable = CloudExecutable.fromCdkOut("/path/to/cdk.out"); +const cx: ICloudAssemblySource = CloudExecutable.fromCdkOut("/path/to/cdk.out"); ``` #### Actions - synth @@ -235,7 +236,7 @@ const cx: ICloudExecutable = CloudExecutable.fromCdkOut("/path/to/cdk.out"); The `synth` action takes a Cloud Executable and synthesizes it in to a `CloudAssembly`. ```ts -const cx: ICloudExecutable = await cdk.synth(cx, { stacks: ['MyTestStack'] }); +const cx: ICloudAssemblySource = await cdk.synth(cx, { stacks: ['MyTestStack'] }); ``` It returns a Cloud Executable that is cached on disk and can be used as input for other actions. @@ -268,7 +269,7 @@ The toolkit might throw other exceptions. These are bugs and you should report them by [raising an issue](https://github.com/aws/aws-cdk/issues/new?assignees=&labels=bug%2Cneeds-triage&projects=&template=bug-report.yml&title=%28toolkit%29%3A+Untyped+Exception+%28short+description%29). To assist integrators with detecting the type of error, the following helper methods are available. Even though errors are typed, you should not rely on `instanceof` checks -because it can behave unexpectedly when working with multiple copies of the same package. [TODO: insert reference link] +because it can behave unexpectedly when working with multiple copies of the same package. ```ts try { @@ -295,7 +296,7 @@ The [Programmatic Toolkit] treats and throws synth-time errors like any errors. When implementing a custom Cloud Executable in code, an integrator may choose to handle synth-time errors in the toolkit code or in the Cloud Executable. ```ts -const cx: ICloudExecutable = CloudExecutable.fromCloudAssemblyProducer( +const cx: ICloudAssemblySource = CloudExecutable.fromCloudAssemblyProducer( async (context: Record): cxapi.CloudAssembly => { try { const app = new cdk.App({ context }); @@ -595,7 +596,7 @@ The public contract will subsume and formalize this. The `AwsSdkProvider` defines how the toolkit interacts with AWS services. A default provider is available. You can provide a custom class implementing the `IAwsSdkProvider` interface. -A standard `SdkProviderForCdk` is available that includes all features of the AWS CDK CLI [TODO: this might end up in a separate package]. +A standard `SdkProviderForCdk` is available from package (to be named) that includes all features of the AWS CDK CLI. #### Event stream