getsentry / symbolicator

Native Symbolication as a Service
https://getsentry.github.io/symbolicator/
MIT License
352 stars 44 forks source link

Reevaluate usage of AWS SDK #1479

Open Swatinem opened 2 weeks ago

Swatinem commented 2 weeks ago

We should figure out what we want to do with the AWS SDK going forward.

Right now, it is the single biggest offender related to compile times, and pulls in a huge swath of dependencies. Its so bad I dedicated a blog post to it: https://swatinem.de/blog/bloaty-mcbloat-sdk/ Which itself reminded me about a talk I gave ~4½ years ago about equally bad bloat in their JS SDK: https://viennajs.org/en/meetup/2020-01/optimizing-nodejs-memory-usage

But it is not only about it being horrendously bloated. They also break the API, and especially their error handling all the time. I had to work around one of those issues here:

https://github.com/getsentry/symbolicator/blob/b55fe9b4c221642eacd8772073ebc9be313d6c91/crates/symbolicator-service/src/download/s3.rs#L306-L309

And a recent upgrade has again introduced a ton of fresh errors that were previously handled "correctly".

I’m honestly not sure what to do about this exactly. We do want to use uptodate and maintained crates, however you define "maintained". But the amount of hassle we have with the AWS SDK is in no relation to our usage. We only want to download files, nothing more nothing less, we don’t need the whole kitchen sink.

CC @josb just curious to hear your feedback on this, given you contributed the initial rewrite from rusoto to the official SDK.

josb commented 2 weeks ago

@Swatinem my first instinct is to make it clear to AWS that these are also issues for this project. The compile time issue is definitely on their radar.

A quick search for a Rust S3 client only shows https://github.com/durch/rust-s3 but it looks unmaintained.