asc

command module
v0.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 8, 2026 License: MIT Imports: 4 Imported by: 0

README

asc

AWS Simple CLI (asc) - A simplified interface for AWS operations

What is asc?

asc is a CLI tool designed to help me upskill in Go while building a tool that I use daily. The goal is to simplify common AWS operations in a bash-like way that is easy to remember and use.

This is a personal passion project — I am not a software developer, and am using asc as a way to improve my skills in Go. Because of this:

  • Some features may initially be slightly experimental or rough around the edges.
  • I will always do my best to test features thoroughly before including them in a release.

Service features will be added gradually, based either on:

  • What I find myself needing the most day-to-day, or
  • What I feel like working on at the time.

My aim is to implement functionality in a way that feels natural and efficient, rather than overly rigid. For example:

  • Traversing SSM Parameters in a filesystem-like way (e.g., navigating parameters as folders).
  • Creating an ASG scheduled action quickly via CLI — ideally faster and less painful than doing it manually in the AWS console.

Installation

brew tap harleymckenzie/asc
brew install asc

Service Implementation

Below is a table of service features and commands that I plan to implement, and their current status.

* Partly implemented. Missing some features that I hope to add in the future

Service Command / Subcommand Status Notes / Features
ASG ls List ASGs
ASG modify ✓* Modify ASGs, supports relative and absolute values for min, max and desired capacity
* Currently supports min, max and desired capacity only
ASG detach The specified instance will be removed from the ASG, but will not be terminated.
ASG schedule add Add schedule to ASG, supports human friendly time input
ASG schedule ls List ASG schedules
ASG schedule rm Remove schedule from ASG
ASG show / describe Show ASG details
CloudFormation events List CloudFormation stack events
CloudFormation ls List CloudFormation stacks
CloudFormation rm Delete CloudFormation stacks
CloudFormation show / describe Show CloudFormation stack details
CloudFormation wait Wait for a stack to reach a stable state
CloudFormation parameter ls List CloudFormation stack parameters
CloudFormation parameter edit Edit CloudFormation stack parameters
EC2 ls List EC2 instances
EC2 modify Modify EC2 instances
EC2 show / describe Show EC2 instance details
EC2 start Start EC2 instances
EC2 stop Stop EC2 instances
EC2 restart Restart EC2 instances
EC2 rm / terminate Terminate EC2 instances
EC2 wait Wait for an instance to reach a stable state
EC2 ami cp Copy EC2 AMI
EC2 ami ls List EC2 AMIs
EC2 ami rm Remove EC2 AMI
EC2 ami show Show EC2 AMI details
EC2 security-group add Add EC2 security group rule
EC2 security-group ls List EC2 security groups
EC2 security-group rm Remove EC2 security group
EC2 security-group show Show EC2 security group details
EC2 security-group rule add Add EC2 security group rule
EC2 security-group rule rm Remove EC2 security group rule
EC2 volume create Create EC2 volume
EC2 volume ls List EC2 volumes
EC2 volume show Show EC2 volume details
EC2 volume rm Remove EC2 volume
EC2 snapshot ls List EC2 snapshots
EC2 snapshot show Show EC2 snapshot details
EC2 snapshot rm Remove EC2 snapshot
ECS cluster ls List ECS clusters
ECS cluster show Show ECS cluster details
ECS service ls List ECS services, supports --cluster filter
ECS service show Show ECS service details
ECS task ls List ECS tasks, supports --cluster and --service filters
ECS task show Show ECS task details
ECS task wait Wait for an ECS task to reach a stable state, requires --cluster
ECS service wait Wait for an ECS service to reach a stable state, requires --cluster
ECS task-definition ls List task definition families, or revisions for a specific family
ECS task-definition show Show ECS task definition details
ECS modify Modify ECS clusters and services
ECS rm / terminate Terminate ECS tasks
ECS schedule add Add schedule to ECS services
ECS schedule ls List ECS schedules
ECS schedule rm Remove schedule from ECS services
ElastiCache ls List ElastiCache clusters
ElastiCache modify Modify ElastiCache clusters
ElastiCache rm / terminate Terminate ElastiCache clusters
ElastiCache show / describe Show ElastiCache instance details
ElastiCache wait Wait for a cluster to reach a stable state
ELB ls List Elastic Load Balancers
ELB wait Wait for a load balancer to reach a stable state
ELB modify Modify Elastic Load Balancers
ELB rm Terminate Elastic Load Balancers
ELB show / describe Show Elastic Load Balancer details
ELB target-group ls List Elastic Load Balancer target groups
ELB target-group add Add target to Elastic Load Balancer target group
ELB target-group rm Remove target from Elastic Load Balancer target group
ELB target-group show Show Elastic Load Balancer target group details
Organizations ls List accounts and organizational units
Organizations show / describe Show details for the organization, an account, or an OU
Profile ls List AWS CLI profiles and SSO sessions
RDS ls List RDS clusters and instances
RDS modify ✓* Modify RDS instances
* Currently supports instance class and preferred maintenance window only
RDS cancel-pending-modifications Cancel pending modifications of an RDS instance
RDS rm Terminate RDS instances
RDS show / describe Show RDS instance details
RDS snapshot Create a manual snapshot of an RDS instance or cluster, supports --wait
RDS wait Wait for an instance or cluster to reach a stable state
RDS cluster show Show RDS cluster details
Route53 ls List Route53 hosted zones and records
Route53 modify Modify Route53 hosted zones and records
Route53 rm Terminate Route53 hosted zones and records
Route53 show / describe Show Route53 hosted zone and record details
S3 cp Copy S3 objects
S3 ls List S3 buckets and objects
S3 mv Move S3 objects
S3 rm Delete S3 buckets
S3 show / describe Show S3 bucket or object details
SSM ls List SSM parameters
SSM show Show SSM parameter details
SSM cat Print the value of an SSM parameter
SSM set Create or update an SSM parameter
SSM edit Edit an SSM parameter in your default editor
SSM cp Copy SSM parameters
SSM mv Move/rename SSM parameters
SSM rm Delete SSM parameters
SSM history Show version history of an SSM parameter
SSM label Add labels to a parameter version
SSM unlabel Remove labels from a parameter
SSM revert Revert a parameter to a previous version
SSM document ls List SSM documents
SSM document run Run SSM documents
SSM document rm Delete SSM documents
SSM document show Show SSM document details
SSM session ls List SSM sessions
SSM session start Start SSM sessions
SSM session stop Stop SSM sessions
SSM session rm Delete SSM sessions
SSM session show Show SSM session details
VPC ls List VPCs
VPC modify Modify VPCs
VPC rm Terminate VPCs
VPC show / describe Show VPC details
VPC igw ls List VPC internet gateways
VPC igw add Add VPC internet gateway
VPC igw rm Remove VPC internet gateway
VPC igw show Show VPC internet gateway details
VPC nacl ls List VPC network access control lists
VPC nacl add Add VPC network access control list
VPC nacl rm Remove VPC network access control list
VPC nacl show Show VPC network access control list details
VPC nat-gateway ls List VPC NAT gateways
VPC nat-gateway add Add VPC NAT gateway
VPC nat-gateway rm Remove VPC NAT gateway
VPC nat-gateway show Show VPC NAT gateway details
VPC nat-gateway wait Wait for a NAT gateway to reach a stable state
VPC prefix-list ls List VPC prefix lists
VPC prefix-list add Add VPC prefix list
VPC prefix-list rm Remove VPC prefix list
VPC prefix-list show Show VPC prefix list details
VPC route-table ls List VPC route tables
VPC route-table add Add VPC route table
VPC route-table rm Remove VPC route table
VPC route-table show Show VPC route table details
VPC route-table rule add Add VPC route table rule
VPC route-table rule rm Remove VPC route table rule
VPC subnet ls List VPC subnets
VPC subnet add Add VPC subnet
VPC subnet rm Remove VPC subnet
VPC subnet show Show VPC subnet details
Service Implementation: Other Features
Description Status Notes / Features
Shell autocompletion ✓* Brew Shell Completion configuration is required.
Customise output fields/columns displayed in tables
Customise features via configuration file
Filesystem-like navigation
Optional terminal UI
Export data to CSV, JSON, or other formats
Service agnostic action commands ✓* asc wait supports protocol-style URIs (e.g. rds://my-db) and prefix auto-detection (e.g. i-xxx)
* Currently supports wait only
AWS Profile management ✓* List profiles and SSO sessions via asc profile ls
* Currently supports listing only
'Select' resources to avoid repeating identifiers
Display pricing information on supported resources
watch command for monitoring resources

Output Format

By default, most asc commands output results in a table format for easier readability. Many commands also support a --list flag to produce a simpler list-style output if preferred.

Example:

asc ec2 ls

(Outputs EC2 instances in a table.)

asc ec2 ls -l

(Outputs EC2 instances in a basic list format.)

Example Output

Example output from listing RDS clusters and instances:

╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ RDS Clusters and Instances                                                                                        │
├────────────────────┬─────────────────────────────────────────┬───────────┬──────────────┬────────────────┬────────┤
│ CLUSTER IDENTIFIER │ IDENTIFIER                              │ STATUS    │ ENGINE       │ SIZE           │ ROLE   │
├────────────────────┼─────────────────────────────────────────┼───────────┼──────────────┼────────────────┼────────┤
│ prod-aurora        │ prod-aurora-eu1a                        │ available │ aurora-mysql │ db.r6g.2xlarge │ Writer │
│                    ├─────────────────────────────────────────┼───────────┼──────────────┼────────────────┼────────┤
│                    │ prod-aurora-eu1c                        │ available │ aurora-mysql │ db.r6g.2xlarge │ Reader │
│                    ├─────────────────────────────────────────┼───────────┼──────────────┼────────────────┼────────┤
│                    │ reporting-aurora                        │ available │ aurora-mysql │ db.t4g.large   │ Reader │
├────────────────────┼─────────────────────────────────────────┼───────────┼──────────────┼────────────────┼────────┤
│ testing-cluster    │ aurora-testing                          │ available │ aurora-mysql │ db.t3.medium   │ Writer │
│                    ├─────────────────────────────────────────┼───────────┼──────────────┼────────────────┼────────┤
│                    │ aurora-legacy-cluster                   │ available │ aurora-mysql │ db.t4g.medium  │ Writer │
├────────────────────┼─────────────────────────────────────────┼───────────┼──────────────┼────────────────┼────────┤
│ legacy-cluster     │ legacy-reporting-aurora                 │ available │ aurora-mysql │ db.t3.medium   │ Reader │
│                    ├─────────────────────────────────────────┼───────────┼──────────────┼────────────────┼────────┤
│                    │ legacy-upgrade-dry-run-cluster          │ available │ aurora-mysql │ db.t4g.medium  │ Writer │
╰────────────────────┴─────────────────────────────────────────┴───────────┴──────────────┴────────────────┴────────╯

Examples

EC2
List all EC2 instances
asc ec2 ls
List all EC2 instances showing AMI ID and private IP
asc ec2 ls -A -P
List all EC2 instances sorted by launch time
asc ec2 ls -t
Output EC2 instances in a simple list format
asc ec2 ls -l
ECS
List all ECS clusters
asc ecs cluster ls
Show details for a specific cluster
asc ecs cluster show my-cluster
List all ECS services across all clusters
asc ecs service ls
List services in a specific cluster
asc ecs service ls --cluster my-cluster
List all tasks, filtered by service
asc ecs task ls --cluster my-cluster --service my-service
List task definition families
asc ecs task-definition ls
List revisions for a specific task definition family
asc ecs task-definition ls my-task-family
Show task definition details
asc ecs task-definition show my-task-family:1
Auto Scaling Groups (ASG)
List all Auto Scaling Groups
asc asg ls
List all Auto Scaling Groups showing ARNs
asc asg ls --arn
List all Auto Scaling Groups sorted by number of instances
asc asg ls -i
List instances in a specific Auto Scaling Group
asc asg ls my-asg-name
Wait
Wait for an EC2 instance using prefix auto-detection
asc wait i-1234567890abcdef0
Wait for an RDS instance using protocol syntax
asc wait rds://my-database
Wait for a CloudFormation stack
asc wait cf://my-stack
Wait for an ECS service
asc wait ecs://service/my-cluster/my-service
Wait using per-service subcommands
asc rds wait my-database
asc ec2 wait i-1234567890abcdef0
asc cf wait my-stack
asc ecs service wait my-service --cluster my-cluster
RDS
Create a snapshot of an RDS instance
asc rds snapshot my-instance my-snapshot
Create a snapshot and wait for it to complete
asc rds snapshot my-instance my-snapshot --wait
Create a cluster snapshot
asc rds snapshot my-cluster my-snapshot --cluster
ASG Schedules
List all schedules across all Auto Scaling Groups
asc asg ls schedules
List schedules for a specific Auto Scaling Group
asc asg ls schedules my-asg-name
Add a schedule to an Auto Scaling Group with minimum and maximum size set, at 10:00am on 25th April 2025
asc asg schedule add my-schedule -a my-asg -m 4 -M 8 -s 'Friday 10:00'
Add a schedule to an Auto Scaling Group with desired capacity set, at 10:00am on 25th April 2025
asc asg schedule add my-schedule -a my-asg -d 8 -s '10:00am 25/04/2025'

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
cmd
asg
asg/schedule
add.go defines the 'add' subcommand for schedule operations.
add.go defines the 'add' subcommand for schedule operations.
ec2
ec2/ami
ls.go defines the 'ls' subcommand for AMI operations.
ls.go defines the 'ls' subcommand for AMI operations.
ec2/security_group
ls.go defines the 'ls' subcommand for security group operations.
ls.go defines the 'ls' subcommand for security group operations.
ec2/snapshot
ls.go defines the 'ls' subcommand for snapshot operations.
ls.go defines the 'ls' subcommand for snapshot operations.
ec2/volume
ls.go defines the 'ls' subcommand for volume operations.
ls.go defines the 'ls' subcommand for volume operations.
ecs
efs
elb
iam
rds
ssm
vpc
vpc/igw
ls.go defines the 'ls' subcommand for volume operations.
ls.go defines the 'ls' subcommand for volume operations.
internal
service/ec2
Package ec2 provides functions for interacting with EC2 resources.
Package ec2 provides functions for interacting with EC2 resources.
shared/format
Package format provides utilities for parsing and formatting time strings in various formats.
Package format provides utilities for parsing and formatting time strings in various formats.
test

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL