Best Python Development Tools for AWS Development

0

Hi all,

I'm starting a new team to develop solutions in AWS Cloud ecosystem.

We will be using python as programming language and we inteend to use AWS CloudFormation to configure templates and start using them as IaC to setup our application.

We are intending to use PyCharm as IDE, however i'm looking for tips from the community to understand what are the best tools to work for the described environment. Note that we intend to have a full serverless application.

Any software, IDEs or tools suggestions that could make development easier are welcomed!

Thanks in advance.

asked 2 years ago293 views
4 Answers
1

Hello :) I use PyCharm on a daily basis and the plugin for AWS Toolkit is very good. Integrates with a lot of very useful services, including CFN, so you can see the status of stacks etc. directly from there.

I managed to get on the beta of CodeWhisperer too, which is in my PyCharm, and it is amazing.

As for IaC, CloudFormation being the bedrock of so many projects (Troposhere, CDK and many others) this is a very sane choice. I would recommend to write templates directly in YAML for simple things that need very little configuration. One does not need CDK to manage one's bucket!

Personally I prefer Troposphere, which among many really good things in there, map the properties of your resources 1:1 with the CFN native property names, making for going through the documentation so much easier. When I started to write ECS Compose-X I had the choice between CDK and Troposphere. CDK at the time was not super well documented, but then in v1 just as in v2 (oh yes, software versions changes and breaking changes, got to love these) you have to use the language specific name for properties, instead of the native CFN name for it. For me that was one of the biggest reason not to use CDK for that. I might use it for other things, but not my first go-to.

Either way, they both produce CloudFormation templates, which means I cannot recommend enough to write the code to just be a nicer wrapper -> don't hardcode region names, account ID and all that sort of things, use the Intrinsic Functions and parameters.

In compose-x for example, I extended the Parameter object to add additional attributes, which when I render the final template, auto-populates the CFN metadata section and gives me some very neat and nice looking templates.

If you plan on creating a lot of lambda functions, make sure to install AWS SAM and the toolkit can do a great deal for you there too.

Happy coding!

profile picture
answered 2 years ago
  • Thanks a bunch John, this was a really insightful answer! I really looking forward on to try out the ECS Compose-X and the Troposphere softwares.

    Kind Regards!

1

Take a look at SAM It's a framework that can help you to build serverless applications on AWS Works really well with python, and the provided templates are good starting point to develop a serverless application.

answered 2 years ago
1

Just to add to the other excellent answers, if you are building a full serverless application be sure to look into AWS Lambda Powertools for Python.

A suite of utilities for AWS Lambda functions to ease adopting best practices such as tracing, structured logging, custom metrics, idempotency, batching, and more.

AWS
answered 2 years ago
1

Adding to other answers about SAM, PyCharm and the AWS Toolkit - I'm a big fan of being able to do full step-through local debugging, which is easy when you add Docker Desktop to the mix.

EXPERT
answered 2 years ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions