Skip to content

Command line tools to make aws administration a little bit easier and quicker than using the aws console. It also helps to script some AWS tasks such as cleaning up old AMIs along its snapshots or cleaning up manual RDS snapshots or even creating a manual snapshot for a particular RDS.

License

Notifications You must be signed in to change notification settings

gustavosoares/aws_pocketknife

Repository files navigation

Build Status Gem Version

Aws Pocketknife

Why?

Have you ever find yourself going through the aws cli documentation page over and over again just to remember the right syntax or argument(s) for that command that you wanna run? Do you feel that you are more productive from the command line? Are you tired of having to open private browser windows or even a different browser to work with multiple aws accounts?

What?

Command line tools to make aws administration a little bit easier and faster than using the aws console. It also helps to script some AWS tasks such as cleaning up old AMIs along its snapshots or cleaning up manual RDS snapshots or even creating a manual snapshot for a particular RDS.

These commands are also handy if you have multiple aws accounts to manage, since you can't have multiple tabs open for different accounts in a web browser. The only way would be to use diffente browsers or open incognito windows.

The aws cli allows you to setup profiles for each account. (see http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-multiple-profiles) After creating the profiles, you just export the environment variable AWS_PROFILE to specify the account you wish to use.

Installation

Add this line to your application's Gemfile:

gem 'aws_pocketknife'

And then execute:

$ bundle

Or install it yourself as:

git clone https://github.com/gustavosoares/aws_pocketknife.git
bundle install
rake install

Usage

Use the pocketknife that get installed

$ pocketknife 
Commands:
  pocketknife ami SUBCOMMAND ...ARGS      # ami command lines
  pocketknife eb SUBCOMMAND ...ARGS       # elastic beanstalk command lines
  pocketknife ec2 SUBCOMMAND ...ARGS      # ec2 command lines
  pocketknife help [COMMAND]              # Describe available commands or one specific command
  pocketknife route53 SUBCOMMAND ...ARGS  # route53 command lines

EC2

$ pocketknife ec2 help
Commands:
  pocketknife ec2 describe_instance_by_id INSTANCE_ID  # find instances by id.
  pocketknife ec2 find_instances_by_name NAME          # find instances by name. (You can filter by adding *) 
  pocketknife ec2 get_windows_password INSTANCE_ID     # get windows password.
  pocketknife ec2 help [COMMAND]                       # Describe subcommands or one specific subcommand
  pocketknife ec2 start INSTANCE_ID                    # start ec2 instance
  pocketknife ec2 stop INSTANCE_ID                     # stop ec2 instance

AMI

$ pocketknife ami
Commands:
  pocketknife ami clean AMI_NAME_PATTERN DAYS --dry_run  # Given a name or filter (i.e, test-*), this command will delete all matched AMIs (and associated snapshots) with creation time lower than DAYS.
  pocketknife ami help [COMMAND]                         # Describe subcommands or one specific subcommand
  pocketknife ami share IMAGE_ID ACCOUNT_ID              # share the IMAGE_ID with the specified ACCOUNT_ID                 # stop ec2 instance

RDS

$ pocketknife rds
Commands:
  pocketknife rds help [COMMAND]               # Describe subcommands or one specific subcommand
  pocketknife rds snapshot SUBCOMMAND ...ARGS  # snapshot command lines

Elastic beanstalk

$ pocketknife eb
Commands:
  pocketknife eb desc ENVIRONMENT_NAME  # describe environment name
  pocketknife eb help [COMMAND]         # Describe subcommands or one specific subcommand
  pocketknife eb list                   # list environments
  pocketknife eb vars NAME              # list environment variables for the specified elastic beanstalk environment name

Route53

$ pocketknife route53
Commands:
  pocketknife route53 describe_hosted_zone HOSTED_ZONE                                                                              # describe hosted zone
  pocketknife route53 get_record HOSTED_ZONE RECORD_NAME --record_type                                                              # Get record for hosted zone.
  pocketknife route53 help [COMMAND]                                                                                                # Describe subcommands or one specific subcommand
  pocketknife route53 list                                                                                                          # list hosted zones
  pocketknife route53 list_records HOSTED_ZONE                                                                                      # list records for hosted zone
  pocketknife route53 update_record HOSTED_ZONE ORIGIN_DNS_NAME DESTINY_RECORD_NAME DESTINY_HOSTED_ZONE RECORD_TYPE (default to A)  # Update a dns record from an existing dns entry.

ELB

$ pocketknife elb
Commands:
  pocketknife elb desc ELB_NAME   # describe elastic load balancer
  pocketknife elb help [COMMAND]  # Describe subcommands or one specific subcommand
  pocketknife elb list            # list elastic load balancer
  pocketknife elb list_v2         # list load balancers using v2 api (application and network loadbalancers)

ECS

Commands:
  pocketknife ecs clone_service CLUSTER_NAME, SERVICE_NAME  # creates a copy of an existing service
  pocketknife ecs desc_service CLUSTER_NAME, SERVICE_NAME   # describe service for a given cluster
  pocketknife ecs help [COMMAND]                            # Describe subcommands or one specific subcommand
  pocketknife ecs list_clusters                             # list clustes
  pocketknife ecs list_instances for CLUSTER_NAME           # list instances for a given cluster
  pocketknife ecs list_services CLUSTER_NAME                # list services for a given cluster

Development

Contributing

This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

  • Fork it
  • Make you changes
  • Submit a pull request

License

The gem is available as open source under the terms of the MIT License.

About

Command line tools to make aws administration a little bit easier and quicker than using the aws console. It also helps to script some AWS tasks such as cleaning up old AMIs along its snapshots or cleaning up manual RDS snapshots or even creating a manual snapshot for a particular RDS.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published