Package Exports
- @wheatstalk/aws-cdk-exec
- @wheatstalk/aws-cdk-exec/lib/index.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 (@wheatstalk/aws-cdk-exec) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
AWS CDK Exec
Provides cdk-exec, an AWS CDK dev tool to quickly find and execute your
Lambdas and State Machines in AWS.
$ cdk-exec integ-cdk-exec/Function --input '{"succeed":true}'
⚡ Executing integ-cdk-exec/Function/Resource (integ-cdk-exec-Function76856677-k5ehIzbG2T6S)
✨ Final status of integ-cdk-exec/Function/Resource
Output:
{
"succeed": true,
"message": "Hello from Lambda"
}
✅ Execution succeededWARNING: Do not rely on this tool to execute your functions in a production environment. Now that you have been warned, please read on.
Exporting Environment Variables
If during local development you want to access the environment variables
configured for a Lambda Function, such as to see the arns of real resources,
you may use cdk-exec --export-env integ-cdk-exec/Function.
$ cdk-exec --export-env integ-cdk-exec/Function
FOO=bar
SECRET_ARN=arn:aws:secretsmanager:REGION:000000000000㊙️SecretA720EF05-qa4X020B9S3f-UI3sIsUsage
First, add @wheatstalk/aws-cdk-exec to your project's dev dependencies.
Then synthesize your app to a cdk.out directory. Once synthesized there, you
can execute one of your resources with cdk-exec.
If you're using
cdk watch, the CDK will keep yourcdk.outup to date, so when you use watch mode, you can runcdk-exec(roughly) at will.
Full Example
app.ts
import { App, Stack } from 'aws-cdk-lib';
import { Code, Function, Runtime } from 'aws-cdk-lib/aws-lambda';
import { Choice, Condition, Fail, StateMachine, Succeed } from 'aws-cdk-lib/aws-stepfunctions';
const app = new App();
const stack = new Stack(app, 'integ-cdk-exec');
new StateMachine(stack, 'StateMachine', {
definition: new Choice(stack, 'Choice')
.when(Condition.isPresent('$.succeed'),
new Succeed(stack, 'ChoiceSucceed'))
.otherwise(
new Fail(stack, 'ChoiceFail')),
});
new Function(stack, 'Function', {
runtime: Runtime.PYTHON_3_9,
handler: 'index.handler',
code: Code.fromInline(`
def handler(event, context):
if "succeed" in event:
return {"succeed": True, "message": "Hello from Lambda"}
raise Exception('Error from lambda')
`),
});
app.synth();Synthesize your app
The cdk-exec tool operates on a synthesized cloud assembly (your cdk.out
directory), so the first step is to synthesize your app:
$ cdk synth --output cdk.outExecute a state machine with input
$ cdk-exec integ-cdk-exec/StateMachine --input '{"succeed":true}'
⚡ Executing integ-cdk-exec/StateMachine/Resource (arn:aws:states:REGION:000000000000:stateMachine:StateMachine2E01A3A5-8z4XHXAvT3qq)
✨ Final status of integ-cdk-exec/StateMachine/Resource
Output:
{
"succeed": true
}
✅ Execution succeededExecute a lambda with input
$ cdk-exec integ-cdk-exec/Function --input '{"succeed":true}'
⚡ Executing integ-cdk-exec/Function/Resource (integ-cdk-exec-Function76856677-k5ehIzbG2T6S)
✨ Final status of integ-cdk-exec/Function/Resource (integ-cdk-exec-Function76856677-k5ehIzbG2T6S)
Output:
{
"succeed": true,
"message": "Hello from Lambda"
}
✅ Execution succeededUse a custom cloud assembly directory
$ cdk-exec --app path/to/cdkout integ-cdk-exec/Function --input '{"json":"here"}'
⚡ Executing integ-cdk-exec/Function/Resource (integ-cdk-exec-Function76856677-k5ehIzbG2T6S)
✨ Final status of integ-cdk-exec/Function/Resource
Output:
{
"succeed": true,
"message": "Hello from Lambda"
}
✅ Execution succeededResource Matching
Path matching
cdk-exec searches for resources matching the exact path you provide and any
deeper nested resources. This is how we support both L1 & L2 constructs, but
is also a convenient shortcut when your app has only one executable resource.
For example, if you have only one function or state machine in a stack, you
can type cdk-exec my-stack and your resource will be found. If your entire
app has only one executable resource, you can run cdk-exec without arguments
to run it.
Tag matching
When running cdk-exec --tag mytag=value, cdk-exec will search for a resource
matching tags that you have defined in your CDK app. If more than one resource
would match, by default cdk-exec will produce an error message. But, if you
want to execute several resources simultaneously, cdk-exec provides --all.
We have also added aliases and shorthands to streamline typing label-matching
commands. For example, cdk-exec -at mytag will try to run all resources with
a tag named mytag, regardless of the value of the tag. This has the same
effect as typing the longer cdk-exec --all --tag mytag command.
Metadata matching
When running cdk-exec --metadata mymeta=myvalue, cdk-exec will search for and
run resources containing the given metadata. Same as for tag matching, you can
run one or more matching resources if you specify the --all option.
Notes
Path metadata
This tool requires path metadata to be enabled in your assembly.