Live data from Hacker News

Show HN: S3mini – Tiny and fast S3-compatible client, no-deps, edge-ready

github.com

71–80 of 105 posts

Re: Show HN: S3mini – Tiny and fast S3-compatible client, no-deps, edge-ready

#72
post #33

Earlier quoted context omitted.

I tried to go this route of using Bun for everything (Bun.serve, Bun.s3 etc), but was forced back to switch back to NodeJS proper and Express/aws-sdk due to Bun not fully implementing Nodes APIs.

What were the most significant missing bits?

localAddress is unsupported on sockets, meaning you can not specify an outgoing interface, which is useful if you have multiple network cards.

Re: Show HN: S3mini – Tiny and fast S3-compatible client, no-deps, edge-ready

#73
post #66
post #50

Earlier quoted context omitted.

I've built an S3 client with similar goals like TFA, but supports pre-signing: https://github.com/nikeee/lean-s3 Pre-signing is about 30 times faster than the AWS SDK and is not async. You can read about why it looks like it does here: https://github.com/nikeee/lean-s3/blob/main/DESIGN_DECISIONS...

FYI, you can add browser support by using noble-hashes[1] for SHA256/HMAC - it's a well-done library, and gives you performance that is indistinguishable from native crypto on any scale relevant to S3 operations. We use it for our in-house S3 client. [1] https://github.com/paulmillr/noble-hashes

SHA256 and HMAC are widely available in the browser APIs: https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypt...

Re: Show HN: S3mini – Tiny and fast S3-compatible client, no-deps, edge-ready

#74
post #23
post #20

Interesting project, though it's a little amusing that you announced this before actually confirming it works with AWS?

Personally, I don't like AWS that much. I tried to set it up, but found it "terribly tedious" and drop the idea and instead focus on other platforms. Right now, I am testing/configuring Ceph ... but its open-source! Every talented weirdo with free time is welcomed to contribute!

Also try out Garage.

Re: Show HN: S3mini – Tiny and fast S3-compatible client, no-deps, edge-ready

#75
post #11

Earlier quoted context omitted.

checksumming does make sense because it ensures that the file you've transferred is complete and what was expected. if the checksum of the file you've downloaded differs from the server gave you, you should not process the file further and throw an error (worst case would probably be a man in the middle attack, not so worse cases being packet loss i guess)

> checksumming does make sense because it ensures that the file you've transferred is complete and what was expected. TCP has a checksum for packet loss, and TLS protects against MITM. I've always found this aspect of S3's design questionable. Sending both a content-md5 AND a x-amz-content-sha256 header and taking up gobs of compute in the process, sheesh... It's also part of the reason why running minio in its singl…

I got some empirical data on this!

Effingo file copy service does application-layer strong checksums and detects about 4.5 corruptions per exabyte transferred (figure 9, section 6.2 in [1]).

This is on top of TCP checksums, transport layer checksums/encryption (gRPC), ECC RAM and other layers along the way.

Many of these could be traced back to a "broken" machine that was eventually taken out.

[1] https://dl.acm.org/doi/abs/10.1145/3651890.3672262

Re: Show HN: S3mini – Tiny and fast S3-compatible client, no-deps, edge-ready

#77
post #6

Earlier quoted context omitted.

> to me it makes sense to have an s3 client on my computer, but less so client side on a webapp What do you mean with a webapp?

he expected to be s3 client on desktop/local machhine

It's a typescript client it seems. While you can bundle it in a webapp, typescript application goes beyond just web applications, this is why I was confused.

Re: Show HN: S3mini – Tiny and fast S3-compatible client, no-deps, edge-ready

#79
post #67

Earlier quoted context omitted.

The S3 packages on NPM are maintained by AWS

Indeed but I was arguing about a general point. I'd be surprised if any of your Node projects had less than 100 total deps of which a large number will be maintained by a single person. See Express for example. 66 total deps with 26 deps relying on a single maintainer. https://npmgraph.js.org/?q=express But even in the case of the official aws-sdk they recently deprecated v2. I now need to update all my not-so-old No…

So let's put every package under the sun into the client?

This approach does not scale. We should make NPM better.

Post reply on HN