Show HN: Amazon S3, Microsoft Azure, Rackspace, Backblaze via a Single API
cloudrail.com
cloudrail.com
Similar guarantees are needed around how soon after deleting something can readers expect to get 404s.
If these guarantees differ, you might find abstracting over the stores doesn't work the way you'd like...
http://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction....
Netflix have turned the S3 metadata eventually consistent problem into s3mpr metadata eventually consistent problem. The difference is that they can now inspect and reason about s3mpr's metadata.
Spotify have had to do the same thing for Google Cloud Engine. I can't help wonder if eventually consistent object stores will go the way of NoSQL databases, when a consistent, scalable hierarchical filesystem appears.
Of course they will. Eventual consistency is a huge tradeoff that I don't think anyone would make if they weren't forced to.
I reported it as a bug but Google said it was by design. More specifically they said: "You are correct, if the versioning enabled in your bucket then the object metadata is saved as an archive object in the bucket [1].This is the reason you are getting 200 for your HEAD request."
http://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction....
As far as I can tell though, it does not expose an API beyond its command line interface though.
I'm using CrashPlan to backup from my laptop to another computer on the network. I see that rclone can backup to a local filesystem. Do you happen to know if I can I do with rclone what I do with CrashPlan? i.e. use rclone to backup my local filesystem to a remote server?
It looks very sleek though, I'll have to give it a try.
Providers can also add new regions at the drop of a hat.
Limiting it to pre-defined URLs is a pain, and relies on tools updating for new regions being added.
https://github.com/andrewgaul/s3proxy
It has compatibility with local filesystem, Backblaze B2, Google Cloud Storage, Microsoft Azure, and OpenStack Swift. Note that this is software and not a service.
[S3Proxy author plug]
It appears that Cloudrail not a service either, just a commercially licensed library (like Qt for example). In fact, I find their simple library approach a bit less awkward than your local server approach, though I suppose that was necessary in order to make a neat drop-in replacement for code that's already targeting S3.
I've been working on Swift for the past 6 years, and I'd be happy to help with your OpenStack Swift API integration. See my profile for contact info.
Wouldn't surprise me if that's what they're using behind the SaaS
Edit: ah, the other APIs make way more sense to me. You can offer multiple options to a customer. But this doesn't seem to have an equivalent?
Does my whole build break because cloudrail can't handle the traffic anymore? At least with AWS or GCS or Azure, etc, one has a business relationship with the API provider and so can keep the lights on.
Simon Wardley summed this stuff up pretty well about 6 years ago, http://blog.gardeviance.org/2010/08/islands-in-sky.html
Terraform abstracts the APIs of multiple cloud providers into HCL, HashiCorp Configuration Langauge. What Terraform is essentially doing is enabling you to skip the part where you write code to talk to AWS' API, allowing you to spin an EC2 instance, or talk to GCE and store something in GCS, and instead just work in one language, via one tool. If the underlaying APIs to those providers shift and change over time, HashiCorp updates the logic under the hood within Terraform, and your code continues working. What it does not do is provide a single resource type or function/method that you can use to upload objects to both AWS and GCE - you have to write two separate resources to work with each of the two example cloud providers.
What CloudRail is saying is: the upload() function will work whether you tell it to push the object to S3 or GCS.
What Terraform forces you to do is change `resource "aws_s3_bucket_object" "picture" {}` to `resource "google_storage_bucket_object" "picture" {}` when you want to change from uploading to GCE from AWS.
Make sense? :)