A friend who happens to work at AWS recently had reason to send me about 500 GB of data. This friend is a business user. Now, say what you want about AWS’s hiring practices, they certainly don’t hire people who aren’t intelligent. This intelligent person made the very reasonable determination that the best solution they had available to send me that half terabyte of data was to mail me a hard drive.

I want to digress here for a second to point out just how brutal a condemnation this is of S3’s usability for non-technical users. There is no reason in the world that my (again, intelligent) friend should’ve had to do this. Given the sheer scope and scale of S3, it feels definitively like the service has succeeded in spite of its user interfaces rather than because of them.

Anyhoo, there I was a week and a half later with a half terabyte of data that I wanted to get into S3 myself. The day may well come when an AWS employee is able to be more ridiculous than I, but that day was not this day.

Noting that some of my AWS credits were soon to expire, I ordered myself a Snowball Edge. The date was December 22nd, 2022.

For those who haven’t heard of this service, let me begin by imploring you to look neither of the words in the name “Snowball Edge” up in the Urban Dictionary; the AWS Service Namer certainly didn’t. It’s a box that’s just shy of 50 pounds (22.54Kg) that’s stuffed full of… well, computer parts. Originally this was used to send data into and (begrudgingly) out of AWS; later someone figured out that you could stuff additional computer parts besides hard drives into these things and also run EC2 instances on them.

That box is heavily ruggedized, explosion resistant in case your workloads are far more perilous than mine, and they can run completely detached from the internet or other AWS regions for indefinite periods of time.

“Okay, so why is this stupendous overkill?” Because I can stuff half a terabyte into S3 in roughly an hour over my home internet connection, but even if I couldn’t, the much-smaller AWS Snowcone device fits on my desk, costs less, holds ~30 times as much data as the Snowball Edge monstrosity, and would have been the correct choice.

I am not correct; I am ridiculous.

I created a Snowball Edge job in the AWS console. Since I was going to be doing something unpleasant, it only made sense to do this in the land itself renowned for being unpleasant: Ohio. Sure enough, I configured the job, and within a day or so, the box was being shipped to me via UPS 2-day shipping.

I could have opted for 1-day shipping, but in addition to the $300 per-job fee, the customer also has to pay shipping both ways. Much like American healthcare or, indeed, the AWS bill itself, you only find out how much it costs you after the fact. Extra days would cost me $30 a day after the included ten days, and just to prove a philosophical point, had I been using the Snowball to egress data from AWS it would have cost me an additional $1.50 in data transfer out charges for these 500GB.

Soon enough, it was December 27th (I give some leeway for shipping times due to the holiday crush), and a rather puzzled-looking UPS driver dropped off the Snowball Edge. I immediately booted it up on the dining room table, just in time for my wife to walk in and wonder why the hell she puts up with me.

Sorry honey!

Once I had the device here, I wanted to play with it a bit more. I began the process of getting an AMI onto the thing to run an instance, but a careful reading of the docs indicated that I would potentially be paying an extra $200 the minute I spun up an instance on the thing that was already sitting here, so I opted not to do that.

That said, the process to add an AMI to a Snowball that’s already in your possession is freaking WILD. It’s a bunch of steps, no reference AMIs have been conveniently exported for you, and the entire process feels like you’ve somehow wandered into the Land of the Corporate IT Admins who are used to playing these games. I backed away slowly.

One other frustrating part was when I found myself sitting at my dining room table with a USB hard drive, staring at a bunch of USB ports on the back of the Snowball Edge–but I could not, for love or money, get them to do anything. Apparently, this is Not How It Works when the cloud comes to invade your home, and instead, I had to toss it onto the network and then either use an S3 endpoint, or NFS.

S3 seemed to make a lot of sense–right? It’s how things work in cloud? The process of getting specific IAM credentials for the device was reasonably straightforward, but I snapped when I realized that the AWS CLI has no global understanding of “use this local endpoint instead of an AWS region.” Instead, you’ve gotta pass that to every AWS CLI command you use, rather than stuffing a config option into your local AWS config for the device’s specific profile. This throws a wrench into not just data transfer jobs with Snow Family devices, but also into a whole bunch of “use my local S3-alike service instead” use cases. At least now I know why most of these have custom tooling rather than simply relying on the AWS-provided options. Ugh.

I instead opted to use the NFS option, dragged and dropped my files onto the device, and an hour or two later shut the thing down and dropped this thing off at the UPS store on December 28th

AWS wasn’t quite done having fun at my expense yet! On January 1st, I got an email telling me that there had been “a delay” in importing my data into S3. This completed on January 3rd, at which point AWS billed me for the job. In addition to the $300 job fee, the least expensive shipping option cost me another $173.60 round trip.

And as the cherry on top of all of this: because the job doesn’t bill until after it’s completed, my credits expired on December 31st, and I got soaked for the actual costs of this ridiculous misadventure myself.

Oops, my bad