This post was originally published at https://betterdev.blog/my-aws-toolbox/ - check it out for more related content.
Developers, like all specialists, discover and collect their favorite tools over time. Having a good, proven set of tools makes the work easier and more pleasant. We can focus on getting the job done. Sometimes eliminating minor inconveniences or improving a small element of everyday activity makes the greatest impact on the comfort of work.
It’s not always easy to find the best tools. There is a wide choice. More importantly, everyone has different habits and preferences. The best way is to test them yourself and see what suits you.
To help a little bit with that, here I present a collection of my AWS tools. These are applications, plugins, and extensions that I use in my daily work with AWS.
The AWS CLI is the obvious first position on this list. After all, sometimes it’s just quicker to do something in the CLI. Other times we need to wrap some process interacting with AWS in a simple script.
The AWS CLI v2 has some nice features, such as improved command completion. I’m using a fish shell in the terminal and AWS CLI does not natively provide command completion for it. Fortunately, fish is extremely good with completions, so the fix is quite easy. It’s enough to add one (quite long) line to the config file and it works like a charm.
test -x (which aws_completer); and complete --command aws --no-files --arguments '(begin; set --local --export COMP_SHELL fish; set --local --export COMP_LINE (commandline); aws_completer | sed \'s/ $//\'; end)'
As mentioned above, I’m using a fish shell. True beauty and power of it can be unlocked with Oh My Fish, which is basically a plugin and theme manager for the shell.
The OMF plugin I use daily when working with AWS is asp. It’s a small, handy plugin that allows changing the currently selected AWS profile. I took it over from the original author and I’m its maintainer right now.
The Serverless Framework is the most basic tool for my work with AWS. The built-in functionalities and number of community plugins accelerate infrastructure development. Even when creating just “ordinary” stacks, without any Lambda functions or other plugin-driven resources, writing CloudFormation with syntax extended by Serverless (for example, with variables) is far easier.
While CloudFormation is not always the best, it’s the default IaC for AWS and supported by them. The Serverless Framework is, in fact, building and deploying normal CloudFormation templates. That gives me confidence that I’m depending mostly on AWS, without additional parties. Anything that is not directly supported by Serverless or its plugins can be created using raw CloudFormation in the stack. This makes the IaC, the critical element of systems, stable and powerful.
If you are working on multiple AWS accounts and/or using various roles, then you must know the pain of switching between them in the AWS Console. The site remembers your past roles, so you don’t have to provide the role name and account ID every time. At least as long as you have no more than 5 of them. That’s the limit of roles history, after which they are overridden.
Here to help comes AWS Extend Switch Roles extension. The configuration is dead simple – you just copy the content of
~/.aws/config file. From that point, when you click on the extension icon, you will get a nice, filterable list of all defined roles to choose from. And you can have as many of them as you need.
Available also for Firefox.
This one is from the category “small but delightful”. AWS Simple Iconification Service extension fixes favicons in AWS Console.
The fact that half of the service pages in AWS Console has one of two versions of the same default favicon is somehow astonishing. The fact that the other half has favicons in a few different styles, from 3D to flat, is just amusing. Well, we all know that the UI is not the AWS team priority, and the whole site looks a little bit like a Frankenstein’s monster.
But identical or inconsistent favicons are not only hurting someone’s sensitive UI feelings. It also makes it more difficult to quickly find one of 15 currently open AWS Console tabs during development. Or, worse case, while looking for the cause of an error on the production on some pleasant Friday afternoon.
With the Iconification extension, all services have their own favicons, from the official AWS architecture icons.
Available also for Firefox.
We can argue what IDE is the best, but for me, it’s always the ones from the JetBrains stable. Thus that list could not be missing the AWS Toolkit for JetBrains IDE.
There is a slowly growing list of services that the plugin supports. As I’m not building SAM applications, so far most useful for me are the S3, CloudWatch, and CloudFormation interfaces. Being able to operate with them directly from the IDE, sometimes easier and faster than going through the AWS Console in the browser, is really handy.
The plugin works with all JetBrains IDE (IntelliJ, WebStorm, PyCharm, Rider, etc.).
The AWS Toolkit for Visual Studio Code is a little bit younger brother of the Toolkit for JetBrains. Their development goes with similar, but not identical paths. Some features are available sooner in one of them.
I’m not using VS Code on a daily basis, but the AWS Toolkit for it is one of the reasons I launch it. It provides Amazon States Language graph preview, which is a great help when working a lot with Step Functions.
This will stay on the list for now, at least until the same feature is not available in the Toolkit for JetBrains.
The Serverless Framework Completion/Navigation/Syntax plugin for IntelliJ provides support for writing Serverless stacks. While rather basic, it can help a lot. First, it warns of references to non-existing files or resources. Furthermore, the ability to click on the resource name or path and jump straight to the code is very useful and minimizes the scrolling and clicking through files.
Picture tells more than a thousand words. And a good software architecture diagram can tell more than any other kind of documentation. Especially when working in microservice or serverless environment.
The OmniGraffle is a paid and Mac-only application for prototyping, design, and diagramming. My case is the latter and the application does a good job in that area. After remembering only a few shortcuts the work is intuitive and fast. Even if you are pedantic like me and everything on the diagram must be exactly aligned, with OmniGraffle it’s quick to do.
The nice feature is the Stenciltown – community-driven library of “stencils”. Stencils are packs of graphics that you can add and use in the OmniGraffle. Apart from that, there are also paid stencils over the internet.
If you use OmniGraffle and need AWS icons, here is a stencil from me.
And if you want to create a stencil on your own, here is my tool that will do it for you: OmniGraffle Stencil generator.
The OmniGraffle app is great to use but has several drawbacks. It’s for macOS only and paid. Sometimes you cannot expect everyone to use it.
For such cases, I use diagrams.net (previously known as draw.io). It’s free and works in the browser, so everyone can edit the diagrams. And for Confluence, it’s really worth to buy an add-on that integrates it. Having editable diagrams in the same place as the rest of the documentation is the best thing possible.
Sadly, in comparison with OmniGraffle, while diagrams.net win in the accessibility category, the usability and user experience is, in my opinion, worse. Not bad, just worse.
It’s not an especially long list. There are a lot more tools, toolkits, extensions, and plugins on the internet. From quite a few that I revied and tested only the ones above survived the time trial. Maybe some list of “tools for AWS that I do not use” can appear someday?
Of course, apart from AWS-related tools, there are a lot of different ones that I use. But it also may be a topic for another post.
Maybe you have some tools not listed here that you find extremely useful when working with AWS? Or at least ones that solve some minor inconveniences – that’s important as well. If so, let me know in the comments, and I will be happy to check them out!