awsinfo is a read-only client for AWS written in Bash. It tries to replace the AWS console for getting basic information about your AWS resoures in your CLI. No more opening the AWS Console when all you want to know is basic information about your resources.
When we try to get the most out of AWS by building on top of as many AWS services as possible we regularly have to look up information about our resources. From checking the deploment status of a CloudFormation stack to the number of messages in an SQS Queue, the status of a CodeBuild Project or the number of EC2 instances currently running.
Looking up this information often requires us to go through the AWS Console as the CLI tooling that AWS provides is a great interface to their API, but hard to use for getting an overview on deployed resources quickly. awsinfo provides you with default views, similar to the AWS Console, for various (and growing) AWS services so you can get the most important information. While awsinfo provides you with some access to deeper information on specific services, for the most part once you want to dig really deep other tools like the awscli or aws-shell are great for exploring all the details.
Terminals are the most common piece of tech we all use, regardless of the specific language we prefer. By building awsinfo as a collection of bash scripts you can easily see and understand how it works under the hood. If it doesn’t do exactly what you need it to do you can copy the script, edit it to do exactly what you need and add that to your repository or local bash.
This is much more complicated if this tool were built on any specific programming language as we’d have to understand a lot more of the environment to get it up and running.
Building it with Bash also means we can use the awscli directly which removes a lot of necessary implementation.
You can run AWSInfo either directly as a script or install through Docker.
On OSX you need to make sure that you have a recent version of Bash (>4) and the GNU coreutils installed, specifically greadlink and gdate. You can install them for example with brew install bash coreutils. On Linux this should just work.
After that clone the Repository and either softlink the scripts/awsinfo.bash script or put it in your Path. You can then directly execute the script as it automatically detects the path it was cloned into. For updates just pull from the Repository.
On Linux or Windows Subsystem for Linux, you might want to clone the repo to /usr/local/bin/awsinfo.git or $HOME/bin/awsinfo.git and then cd /usr/local/bin && ln -s awsinfo.git/scripts/awsinfo.bash awsinfo or cd $HOME/bin && ln -s awsinfo.git/scripts/awsinfo.bash awsinfo.
AWSInfo needs the following tools installed on your system:
You can use the following command to use the awsinfo Docker container with pure Docker. It will automatically download it and run the container for you with any Arguments you append at the end. It makes the ~/.aws folder accessible as a Volume as well as forwarding all awscli default environment variables.
docker run -it -v ~/.aws:/root/.aws -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -e AWS_SESSION_TOKEN -e AWS_DEFAULT_REGION -e AWS_PROFILE -e AWS_CONFIG_FILE -e AWSINFO_DEBUG theserverlessway/awsinfo ARGUMENTS_FOR_AWSINFO
You can set it up as an alias in your shell config file as well.
alias awsinfo='docker run -it -v ~/.aws:/root/.aws -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -e AWS_SESSION_TOKEN -e AWS_DEFAULT_REGION -e AWS_PROFILE -e AWS_CONFIG_FILE -e AWSINFO_DEBUG theserverlessway/awsinfo'
If you’re using Whalebrew(Which I highly recommend) simply run the following to install:
whalebrew install theserverlessway/awsinfo
To update the Docker container run docker pull theserverlessway/awsinfo:latest
awsinfo commands support commands and subcommands, for example you can run awsinfo logs to print log messages
or awsinfo logs groups to get a list of all log groups in the current account and region.
To see all supported services check out the following list or run awsinfo commands.
You can see all the available commands for a service by running awsinfo commands SERVICE, e.g.
awsinfo commands ec2.
You can run any command with --help (e.g. awsinfo logs --help) to see the same help
page that is in the repo (and linked below).
You can list all supported services with awsinfo commands and get a list of all commands per service with awsinfo command SERVICE, e.g. awsinfo command ec2
Following is a list of all available commands and links to their source documentation files that are also used when you call a command with --help
acmacm certificateappautoscalingappautoscaling policiesappautoscaling policyappautoscaling schedulesappautoscaling targetsappsyncappsync datasourcesappsync resolversappsync schemaappsync typesassumeassume roleassume tokenautoscalingautoscaling groupbatchbatch compute-environmentbatch compute-environmentsbatch job-queuesbatch jobsbudgetsbudgets budgetcloudformationcloudformation change-setcloudformation change-setscloudformation eventscloudformation exportscloudformation importscloudformation outputscloudformation policycloudformation resourcescloudformation stackcloudformation stack-setcloudformation stack-set-instancescloudformation stack-set-operationscloudformation stack-set-templatecloudformation stack-setscloudformation templatecloudfrontcloudfront distributioncloudfront originscloudwatch alarmscodebuildcodebuild buildcodebuild buildscodecommitcodecommit branchescodecommit pull-requestcodecommit pull-requestscodecommit repositorycodepipelinecodepipeline executionscognitocognito clientscognito userscommandscompletecomplete zshcostscosts servicecosts servicescosts usagecredentialsdynamodbdynamodb tableec2ec2 imagesec2 instanceec2 keysecrecr imagesecsecs instanceecs instancesecs serviceecs service-eventsecs servicesecs taskecs task-definitionecs task-definitionsecs task-familiesecs tasksefsefs file-systemefs mount-targetsefs security-groupselasticbeanstalkelasticbeanstalk applicationselasticbeanstalk eventselasticbeanstalk healthelasticbeanstalk instanceselasticbeanstalk stackselasticbeanstalk versionselbelb listenerelb listener-certificateselb listenerselb oldelb ruleselb target-groupelb target-groupselb targetseses domaineventsevents targetsfirehosefirehose streamiamiam attached-group-policiesiam attached-role-policiesiam attached-user-policiesiam aws-policiesiam group-policiesiam group-policyiam groupsiam instance-profilesiam keysiam keys-last-usediam mfaiam password-policyiam policiesiam policy-versioniam roleiam role-policiesiam role-policyiam rolesiam saml-provideriam saml-providersiam useriam user-policiesiam user-policyiam userskmskms aliaseskms policieskms policylambdalambda codelambda functionlogslogs export-taskslogs groupslogs streamsmeorgsrdsrds clusterrds clustersrds engine-versionsrds eventsrds instanceroute53route53 recordss3s3 acls3 encryptions3 lifecycles3 locations3 notificationss3 objectss3 policys3 websitesecretsmanagersecretsmanager policysecretsmanager secretsecretsmanager valuesessnssns subscriptionssqsssmssm instance-associationsssm parameterssm parametersssm sessionversionvpcvpc endpointsvpc endpoints-availablevpc nat-gatewaysvpc network-aclvpc network-aclsvpc network-interfacevpc network-interfacesvpc peering-connectionsvpc route-tablevpc route-tablesvpc security-groupvpc security-groupsvpc subnetvpc subnets