I've used the SDK in the past (before the 1.0).<p>I am far from being a Go expert but you can see this has been written by Java developers.<p>The usage is so verbose and you need to pass pointers around all the time. Even when it's clearly not changing the original instance (when passing by value would be enough).<p>If you compare it to another lib like goamz you can clearly see how easier it is to use comparing to the Amazon SDK.<p>There's also an issue from June 4 that discusses this: <a href="https://github.com/aws/aws-sdk-go/issues/265" rel="nofollow">https://github.com/aws/aws-sdk-go/issues/265</a><p>In my lib I ended up going with goamz, it was much simpler to use and required much less boilerplate.
aws.String just to get a pointer to a string rubs me the wrong way. I guess that lets it be nillable but I still don't like it.<p>I have been watching it's development fairly closely, seeing their strange decisions, and hoping they would rectify them. They haven't, and as a whole the API is not written "the Go way". It's written like they are fighting the language.<p>I assure you that in Go there are better solutions to much of this. I pray V2 to be better but if it's anything like their other SDKs they'll avoid breaking changes to the interface until its simply no longer reasonable.<p>Their PHP SDK is largely powered by magic getters, setters and method calls, and the methods therein are largely defined by a file describing the API. This works but is hardly ideal particularly for static analysis. I was at able with a PR to talk them into putting the method hints back at least.<p>You can really tell they were missing the magic in Go and working very hard to try to make it work in a somewhat similar fashion.
Full points to Amazon for not treating client SDK's like some sort of third class afterthought. And double points for not just palming off client SDK responsibility to "the open source community".<p>A cloud feature does not exist unless it is supported by the SDK that you program with.
<a href="https://github.com/minio/minio-go" rel="nofollow">https://github.com/minio/minio-go</a> is a nice S3 Client library in Go
Great. I've been using it for the past few months. Documentation is terrible and there was quite a lot of breaking changes, but other than that it works... so I am okay with that.