Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/cdklabs/cdk-app-cli

The operator CLI for CDK apps.
https://github.com/cdklabs/cdk-app-cli

aws-cdk cli ops

Last synced: 6 days ago
JSON representation

The operator CLI for CDK apps.

Awesome Lists containing this project

README

        

# cdk-app

The operator CLI for CDK apps. Experimental.

`cdk-app` lets you associate commands with CDK constructs so that you can quickly invoke functions, redrive queues, visit resources in the AWS console, and more by just referencing the construct name.

### Examples:

* `cdk-app MyLambda tail-logs` - stream logs in real time from the Lambda's log group
* `cdk-app TransactionTable visit-console` - open the AWS console page for your table
* `cdk-app OrderQueue redrive-queue` - retry messages that failed to get processed

## 🚀 Getting Started

Create a [CDK app](https://www.npmjs.com/package/aws-cdk) with a Lambda
function, and deploy it to your AWS account.

```ts
const fn = new lambda.Function(this, 'MyLambda', {
code: lambda.Code.fromInline("exports.handler = async (event) => { console.log('event: ', event) };"),
handler: 'index.handler',
runtime: lambda.Runtime.NODEJS_14_X,
});
```

Next, `npm install -g cdk-app-cli` and view the available commands:

```
$ cdk-app MyLambda
Commands:
describe
invoke
visit-console
audit-console
```

Run a command to instantly access the construct in the AWS console:

```
$ cdk-app MyLambda visit-console
```

Or run a command to get information in your command line:

```
$ cdk-app MyLambda describe
> aws lambda get-function --function-name DemoAppStack-MyLambdaCCE802FB-lELPCJlktCim
{
"Configuration": {
"FunctionName": "DemoAppStack-MyLambdaCCE802FB-lELPCJlktCim",
...
```

Any extra arguments you pass will get automatically passed through to the
underlying command.

You can add your own commands by defining a JSON or YAML file in your CDK app
named `construct-commmands`. For example, here we define some commands that use
the [awslogs](https://github.com/jorgebastida/awslogs) CLI:

```yaml
# construct-commands.yml
aws-cdk-lib.aws_lambda.Function:
logs:
exec: awslogs get /aws/lambda/${PHYSICAL_RESOURCE_ID} --start='5m ago'
tail-logs:
exec: awslogs get /aws/lambda/${PHYSICAL_RESOURCE_ID} ALL --watch
```

Now these commands will be available to use:

```
$ cdk-app MyLambda
Commands:
describe
invoke
visit-console
audit-console
logs
tail-logs
```

Try using `cdk-app` in scripts as well!

```bash
#!/usr/bin/env bash

declare -a arr=("MyLambda" "MyTable" "MyQueue")

for construct in "${arr[@]}"; do
cdk-app "$construct" visit-console
done
```

## 📖 Documentation

### Command line options

```
cdk-app [construct] [subcommand]

Run an operator command on your CDK app's constructs.

Positionals:
construct [string] [required]
subcommand [string]

Options:
--version Show version number [boolean]
--help Show help [boolean]

Extra configuration options available via environment variables:

- CDK_APP_DIR - Path to cdk.out.
- AWS_REGION - AWS region to run commands in.
```

### construct-commands.json

#### Command types

| Type | Description |
| ----------- | ----------- |
| open | Specify a URL or file to open. |
| exec | Specify a command to run in your shell. |

#### Command substitutions

| Syntax | Description |
| ----------- | ----------- |
| `${AWS_REGION}` | The AWS_REGION of the current shell environment (e.g. `us-east-1`). |
| `${PHYSICAL_RESOURCE_ID}` | The physical resource ID of construct's default resource. A construct named "Default" or "Resource" will automatically be assumed to be the default. |
| `${URL_ENCODED_PHYSICAL_RESOURCE_ID}` | The same as `${PHYSICAL_RESOURCE_ID}`, except the value is URL encoded. |

## Security

See [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more information.

## License

This project is licensed under the Apache-2.0 License.