AWS Announces Open Source Mountpoint for Amazon S3
infoq.com
infoq.com
> it doesn’t support writes in this first release, and in the future will only support sequential writes to new objects.
[0]: https://aws.amazon.com/blogs/storage/the-inside-story-on-mou...
- The tools feel fragmented, not aligned and often don't compose well
- Always sharp corners (Billing, ops, you name it)
- Products in various state of usability / maturity, sometimes a product is launched by barely usable.
I've never worked for Amazon, but if what is said about amazon is true, then the culture is reflected in their products, teams siloed owning their own services, then it does make sense that their services have those quirks.
When you put it like that, it makes me wonder why they don't support WebDAV.
"Doesn't supports writes in the first release" is a letdown, but the latter part above seems expected. I suppose you could abstract what would have to happen to fake arbitrary seek() and overwriting portions of a file, appending, etc, but it would encourage things that wouldn't work well.
So adding "server side operations" would require work from the other team to be added.. which certainly could be done if they decided it was needed.
As a first MVP release this project seems neat for read use cases.. and feedback from the community can help ensure read operations are solid while they are also working on the write side -- which they admitted was lacking in this initial release, but want to improve.
OTOH, you can always engineer around such limitations by storing smaller objects you can completely ingest and store on a single operation.
Still, a win for reliability / performance of whatever aws will be supporting
To me it just sounds like Azure Files with less features. You can just mount a share on any machine supporting NFS or SMB or just use the REST interface. [0]
[0] https://learn.microsoft.com/en-us/rest/api/storageservices/f...
I have use cases where forbidding writes is a feature, and if it means more stability and performance it’s a trade-off that’s worth it to me.
https://news.ycombinator.com/item?id=35155944 - March 14, 2023 (97 comments)
At this point I'd probably be fine with using a different API than the filesystem, perhaps one inside of whatever backend language I was using
Feels more fused than mounted
Other than that I think you're best to treat s3 as a huge kv store and not a filesystem at all.
I wrote a NBD server to proxy to OpenStack Object Storage: https://github.com/reidrac/swift-nbd-server -- and it was fun, but not that useful.
Are you sure? I would guess most people want a networked, cheap file system. Not an object-storage.
Discussed 12 days ago:
Mountpoint – file client for S3 written in Rust, from AWS
https://news.ycombinator.com/item?id=35155944 (97 comments)
aws s3 sync (official) is orders of magnitude slower than rclone (oss)
I like s3fs, sshfs, and similar solutions, but it gets wonky in corner cases, like gaps in connectivity.
What I'd really like is a kernel-level file system abstraction which:
(1) Has capabilities, and unsupported operations fail. If I try to move a log file over to a medium like S3, it works. If I try to write a log file directly to S3, incrementally adding data, it fails. I don't want compatibility kludges (e.g. copying a file down, appending a line, and copying it back).
(2) Provides common abstractions (my file manager works on S3 as much as it does locally)
(3) Supports all media.
The current implementation broke down with NFS and hot swappable media like USB sticks. Having a removable media stuck in an impossible-to-unmount state shouldn't happen. Nor should assorted failures due to connectivity.
Oof. Can we please, please, please stop releasing software with "| sh"?
It's 2023, we have package managers, we have packages, we have containers, why are we still shipping software like this? Even worse is the fact that you can generally find Rust in your package manager of choice but it will often be outdated and you won't be able to choose your versions the same you would with rustup.
I don't know, I'm not sure I have a solution, but I just wish maintainers would put a little more effort into trying to support package managers as the de-facto way to set up a tool chain such as Rust. Even if you want to keep the meta-package manager such as nvm or rustup, at least let me download _them_ from my distros repositories instead of running a random sh script from the internet.
Package managers are modern technology, they exist because they can track what files were placed where, and can remove them cleanly when given an uninstall command.
And distros usually don’t bump versions between releases because they just don’t. Run Debian Sid or Fedora Rawhide or <whatever> if that’s what you’re after.
You have an example of a project that needs nightly to build? I’m sure some exist, but nearly all libraries and projects live on the latest stable release.
It’s probably not _why_ they did it, but I certainly like that regardless of OS, installation is the same and it’s reliable.
For what it’s worth, I had a C# dev who’d never dealt with Rust at all before get themselves setup, and then compiling and running the Rust app by themselves in about 10 minutes flat (our internet is slow) and I definitely think the ease of the setup flow contributed to that hugely, so massive thanks for making it so nice.
One simple version bump can effect hundreds of packages and, if you’re not careful, bork an entire install… ask me how I know that one.
—edit—
Also should say that I’m fully in the package manager camp. If I want to install something that’s not in the repos I almost always find or make a package and build it locally because I don’t want random orphaned files strewn around my system folders.
Unless it’s just some command line program then I usually just use it from the source directory and don’t even bother having it in my path.
It's not to say that I don't trust the Rust project, nowadays I kinda have to, but curl sh installation is messy and separated from the rest of the system. If they just packaged rustup into an rpm and set up their own repos I could point dnf to it would make system maintenance so much easier.
I just want them to use the tools that already exist instead of reinventing the wheel with an esoteric 700 lines-long sh script. This applies to Rust and any other kind of tooling that does the same installation workflow. I understand the reasoning behind it, but I believe the other options should also be considered and supported.
I'd rather have package that tracks what files it installs and removes cleanly.
The whole point of this installation method is ease of use. You can use it for convenience if you prefer it. I don't see the issue with providing more options not less.
Also as another user pointed out, uninstallation is a problem.
This would be a reasonable counter-argument if most people could honestly claim to have inspected the source of >1% of the things they'd installed from apt-get/yum/etc.
"But I trust the maintainers of those repositories to verify correctness" - yes, and people trust the Rust maintainers, too.
I'll grant you that uninstallation is usually a good argument (though not in this particular case).
...Yes, I'm intentionally invoking Cunningham's Law in the hopes that it exists and someone will link it here. Just to do a little due diligence, I searched for some answers, and found:
* https://stackoverflow.com/a/29389868/1040915 - "Because you are giving root access to whatever script you are executing. It can do a wide variety of nasty things." - apt-get and yum require sudo too.
* https://stackoverflow.com/a/34016579/1040915 - "if the script were provided to you over HTTP instead HTTPS..." sure, no arguments there! So don't do that then! ... "if the connection closes mid-stream, there may be executed partial commands, which were not intended to" ok, an actually reasonable answer! (though see the next link)
* https://www.arp242.net/curl-to-sh.html - a pretty comprehensive article in support of `curl | sh`, which points out that it's of equivalent security to `git clone && cd dir && ./make`, and only very slightly less than using package managers (which provide checksums). It also points out you can avoid the "interrupted connection" issue by running within a function
* https://medium.com/@esotericmeans/the-truth-about-curl-and-i... - reiterates that interrupted connection issues are minor, and repeats some server-side exploits that could potentially happen (if you don't trust the server, don't _ever_ install anything from it, via any means!)
* https://news.ycombinator.com/item?id=11532599 - a discussion of an article (which, ironically enough, itself has an expired certificate) with, I'll admit, more comments than I was willing to read in-depth - but one comment https://news.ycombinator.com/item?id=11533515 points out that `curl | sh` is fully portable whereas package managers are not.
Don't get me wrong - given the choice, I'd rather have the audit log, built-in checksum, uninstallability, and other features of a package manager any day. I'm not arguing that `curl | sh` is _better_ than package managers. But I have always been a little baffled why it's portrayed as _so_ much worse (when installing from a trusted source, over HTTPS) as to be anathema and repugnant.
> connection closes mid-stream
I get around this by using wget to download the script, and THEN use sh.