Package Exports
- cdk-web
- cdk-web/dist/cdk-web.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (cdk-web) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
cdk-web
AWS CDK in your browser! (experimental)
usage
load cdk-web.js into your HTML file and start writing CDK apps like you would normally do in Node:
const cdk = require("aws-cdk-lib");
const ec2 = require("aws-cdk-lib/aws-ec2");
const sqs = require("aws-cdk-lib/aws-sqs");
const sns = require("aws-cdk-lib/aws-sns");
const s3 = require("aws-cdk-lib/aws-s3");
const app = new cdk.App();
const stack = new cdk.Stack(app, "BrowserStack");
const vpc = new ec2.Vpc(stack, "VPC");
const queue = new sqs.Queue(stack, "Queue");
const topic = new sns.Topic(stack, "Topic");
const bucket = new s3.Bucket(stack, "Bucket");
const assembly = app.synth();
console.log(assembly);output of app.synth() contains all you need to get your generated stack.
build
executing npm run build builds CDK for web. everything is bundled in dist/cdk-web.js. you may open up dist/index.html in your browser if you want to just play with the compiled bundle.
testing
testing is done by Puppeteer. the actual generated bundle is loaded into Puppeteer and tests are executed against it. run npm test to execute them.
exports
a global require function is exposed that can resolve the following modules in a browser environment:
aws-cdk-lib: core CDK libraryaws-cdk-lib/*: core scoped CDK modulesconstructs: the AWS constructs librarypath: node path utilities to be used withfsfs: in-memory and in-browser file system API
after you call app.synth() you can investigate what normally goes into your cdk.out by calling require('fs').vol.toJSON() which returns everything on "disk" within your browser.
known issues
- CDK Bootstrap is not available
- Complicated stacks that require a context and a CDK Bootstrap stack most likely will not work
- Workaround: This tool is not for managing complicated stacks :) use the native CDK instead
- Nothing from the
aws-cdknpm package (CDK CLI) is available- CLI commands (
cdk synth,cdk deploy, etc.) are not offered - Workaround: You can use the AWS SDK in your browser to implement the same functionality
- CLI commands (
- Anything that has to do with CDK Assets is not supported
- Limited support for CDK Assets might be added later
- Obviously anything that has to do with shelling (e.g. Docker, Lambda Bundles, etc.) does not work natively in browser
- Workaround: Use the combination of AWS SDK and memfs to handle simple assets in browser
- Anything that has to do with CDK Context is not supported
- Context by itself technically works and writes in your browser's localStorage
- Constructs that use Context (e.g. AMI Lookup) most likely will not work
- Workaround: You can use the AWS SDK in your browser to implement the same functionality
- Found a new one? Open up a GitHub issue.