There's basically nothing you can't build on AWS. But having a great set of developer tools & resources is a necessity.
A small introduction about the tools and resources that I'm using on a daily basis while working with AWS, which are having the greatest impact on my productivity.
Disclaimer: All of them are just recommendations and based on my personal experience. Always remember: the best tool, language, framework, or resource is the one that works the best for you and gets the job done.
Creating resources in the console is great for testing things out, but shouldn't be done for serious projects. You'll be quickly overwhelmed with all the infrastructure you created and there's no easy glance at your overall architecture or how things are actually connected. Furthermore, misconfigurations can slip in more often as you can't just easily make references between resources.
That's why an Infrastructure as Code tool is a must. It enables you to define resources via code and then execute it against AWS APIs which will take care of the creation. By that, you're easily able to replicate whole environments or destroy them in the blink of an eye.
My pick goes to Pulumi.
There are two major factors I love about it:
- you don't have to learn a new syntax as you can use your favorite programming language you already know and love. For me it's TypeScript, but Pulumi also supports Python, Go, or .NET.
- you're not locked to a single provider. You can create resources also at Azure or Google Cloud Platform or at any platform that's already available at Pulumi - and there are a lot!
In the end, it's a personal preference, as there are other great tools like Terraform or the AWS Cloud Development Kit (AWS CDK). I'd suggest trying all of them and picking the one you like the most.
You'll always work a lot with AWS's ultimate core service: Identity and Access Management (AWS IAM).
The most underrated - and to be honest, not easy to find - resource is the documentation about all actions, resources & conditions you can use in policies.
Often you have to fight with Access Denied responses from AWS, due to missing access rights. Having the documentation about all possible actions, resources and key conditions that you can apply for a given service at a policy is a blessing and will help you greatly.
With aws-shell you're able to quickly run commands against any AWS API from your local terminal with great auto-completion. I use it very regularly and it reduces the need to jump to the documentation. You can find it on Github but can also install it easily via your favorite package manager like homebrew.
Most likely you'll work with multiple AWS accounts to have separated, independent environments. Managing your credentials locally for all of them is tedious - especially if you're using Multi-Factor Authentication.
Leapp helps to easily assume identities & roles. Bonus: it also supports other providers like Azure.
Quickly browsing S3 files, viewing CloudWatch logs, invoking Lambdas to test implementations, or even deploying them with a single click - the AWS Toolkit is the right choice. It reduces the need to jump to the web console, therefore impacting your productivity.
You can even set breakpoints to debug your serverless function locally!
Most of the time, Lambda is my core service of choice. But it gets easier to lose track of what's going on in my application landscape with every new resource. As a Lambda-powered, serverless architecture is mostly event-driven, debugging issues can also be a frustrating task. Even though you're not having the burden to maintain servers, there will still be issues like timeouts, failed invocations, or just bugs in your business logic that will lead to unwanted application behavior.
Dashbird helps by being a clutter-free, single resource for finding issues & bottlenecks in any Lambda-powered, serverless application. It automatically tracks all your serverless core services like for example Lambda, SQS, SNS, DynamoDB, and API Gateway by querying the events logs that are already generated by AWS. This isn't done via an agent you have to install, but just with a CloudFormation stack that grants Dashbird the permissions to query the AWS API to gather those metrics.
Zero clutter, zero friction, and zero performance impact.
Every day you'll learn something new & it's normal to forget things.Github Copilot helps you by giving great proposals for all the blocks of code you just can't remember - like properly matching with a regular expression in Bash or doing a POST request with form parameters with Axios.
It's also great for diving into a new framework. It suggests very fitting solutions before you even have to think about browsing the framework's documentation.
I just started to use it a few weeks ago and yes, some proposals are not great and do contain errors, but I'm already that convinced that I never want to miss it in the future.