Ask HN: Which language for interacting with AWS?

5 points by bakery2k ↗ HN
There are AWS SDKs for several different languages: C++, Go, Java, .NET, Node.js, PHP, Python and Ruby [1]. It appears that some of these SDKs are more complete than others (for example, CloudFront only seems to support Java, .NET, PHP, Python and Ruby [2]).

Which SDKs are the most complete and/or the highest quality? Which language(s) would you recommend (or not recommend) using to interact with AWS?

Are some of these SDKs more "official" than others?

[1] https://aws.amazon.com/tools/#sdk

[2] http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/AWSLibraries.html

6 comments

[ 2.8 ms ] story [ 26.7 ms ] thread
Official aws cli client is written in python and supports every aws feature, so you could not go wrong with that. I wouldn't touch PHP and Node - to fragile and messy to depend on them. So API-wise python would be my first choice, java second. Maybe Go if you need native performance (if you don't know then you probably don't).
Boto framework!(completely in python)
I agree with others and say use Boto/Python if possible, since it's the "official" client. It's feature-complete and is pretty reliable based on my experiences.
If what you're doing is not too complex I recommend you consider using the AWS command line client.

You can script it for example in Python with the subprocess module.

I feel like boto3 (Python) is a good place to start. I've used Boto 2.x quite a bit and it's fine as well.

https://boto3.readthedocs.io/

Boto is actually quite a weird library in that the services are generated — defined as json files and the service classes are instantiated dynamically at runtime from these json files (as opposed to being defined in Python classes). For example, this is the definition of the S3 service [1]. You might have noticed that the official AWS clients break normal Python naming conventions and this is the reason why, that said, it's a unique approach that leads to a lot less code to maintain.

[1]: https://github.com/boto/boto3/blob/develop/boto3/data/s3/200...