What is s3.fm?

Our guiding principle: everyone should be able to easily integrate AWS S3 without needing to write the code the hard way.

s3.fm is a cheap, easy, fast way of uploading FileMaker container data to AWS Simple Storage Solution (aka “S3”). It is a microservice, which is computerese for a simple way of getting something small, difficult and repeatable done well at a low cost. The basic gist is this: don’t re-invent the wheel. Instead of reading all night about AWS authorization, putting 200 lines of code into a script and debugging it all for hours, just send s3.fm a command instead. The s3.fm microservice does the heavy lifting for you without the hassle (and usually better, faster and cheaper than we can do on our own anyways).

How does s3.fm work?

We start off with your files in FileMaker containers. Then, you copy-paste two lines into the script editor from our demo file. When you run the script, FileMaker sends a message to s3.fm. The message tells s3.fm which file you want to upload and how to get to it. s3.fm then logs into your solution using fmrest and copies the file in your container into your AWS S3 bucket. Once the upload is completed, s3.fm pastes a link to the uploaded file right onto the container’s record before logging out of your solution.

What’s an S3 bucket?

An S3 bucket is like a cloud-based hard drive that you rent from Amazon. Like most AWS services, you pay only for what you use, so you don’t even have to decide how big of a drive you want; buckets can hold as much or as little data as you like. You own and control your own bucket in your AWS account. s3.fm just helps you fill it up.

Can s3.fm do anything other than just upload?

There’s a lot more than just uploads. As of August 2021, you can also:

  • set individual files to public-read or private
  • create a presigned URL for a file for temporary access
  • copy, rename, move or delete a file

I’m constantly adding functionality as people request it. For the most current list of what s3.fm can do, check out the REST API documentation.

How do I connect s3.fm to my solution? Is it a plugin?

s3.fm is not a plugin! There’s nothing to install. Instead, s3.fm accesses your solution from the outside: you send it commands with Insert from URL and it takes care of the rest. When you subscribe we send you s3fm_API_Explorer.fmp12, a file that helps you construct upload requests. In the API Explorer, it takes about 5 minutes to generate the two-line script to trigger an upload. You can also call s3.fm as a REST API from other applications or from Postman.

How so subscriptions and cancellations work?

To subscribe, visit the subscriptions page. We bill monthly via Paypal Subscriptions: you store a reoccurring payment method with Paypal, then they bill your card each month. We never see your bank or credit card numbers, we just get paid to keep your data flowing. You can cancel at any time: send us a message from the email address you used to sign up – we’ll suspend your API Key and stop billing you. You data you’ve already uploaded is in your AWS account, so it stays where it is.

How many ‘writes’ do I need?

Each plan has a limit to the number of files you can write to your S3 bucket per month. Each time you upload, copy, or rename/move a file using s3.fm, one of your monthly ‘writes’ is expended. Presigning URLs, toggling a file between public/private and deleting files are ‘utility’ calls and do not count against your subscription limit- they’re always free.

How do plan limits work?

Each plan’s limits act as circuit breakers, which help prevent cost overruns when our users make a coding mistakes (especially endless loops). Our service meters usage, resetting on the 1st day of each month. For example, if you choose the Century plan, you will get an error message when you try and write the 101st file. From there, you can wait until the next month begins or you can upgrade your plan. If you choose an unlimited plan, there is a default circuit breaker at 1 million writes. If you need us to increase your limits, no problem. Our service has no hard limit. Just contact us and we’ll set you up with an increase waiver.

What are the default plan limits?

SubscriptionWrite calls per monthUtility calls per month
Century10010,000
Millenium1,000100,000
Unlimited1,000,000*10,000,000
*Unlimited plans bill for each write after the first 10,000 writes per month.

How big of a file can I upload with s3.fm?

The maximum upload size is determined by your internet connection and s3.fm’s upload timeout. Most container files are small: they’re images, sound clips, PDFs or scanned documents that are under 50MB. Even on slow internet connections, small files should upload to S3 without timing out. If you have large files, we can also set up a custom timeout for an additional cost. Just contact us for details.

How many uploads can s3.fm handle at once?

We don’t have a concurrent upload limit. We can handle millions (maybe even billions) of concurrent uploads. If what you’re really asking is “how many uploads can my server hardware and internet connection handle at once?” That’s something you’ll have to find that out for yourself.

Is s3.fm secure?

There’s really no safer way to store your data. s3.fm uses:

  • Serverless, Stateless Architecture. We have no servers to hack and no copies of your uploaded files.
  • AWS Secrets Manager. We automatically encrypt and store your credentials so you don’t need to transmit them when you upload your files. Instead, you access our service with an s3.fm API key and your credentials stay hidden.
  • Transport Layer Security. Just like banks, we use TLS (aka SSL) to keep your data safe in transit.
  • S3’s Default is Privacy. You can’t download a file from S3 unless you intentionally make it public or grant temporary access to it with a presigned URL.
  • S3’s Encryption at Rest. You have the option to set your S3 bucket to encrypt your uploaded files automatically, which protects them from physical theft.
  • AWS Datacenter Security. AWS datacenters have better security control than most bank vaults. Check it out here.

Does s3.fm have any system requirements?

For s3.fm to access your FileMaker Server you need to be using FileMaker Server version 18 or later. Your server must have a valid SSL certificate installed and be available to the internet (aka “on the cloud”). If you need help with these items, click here.

I heard there are free upload scripts that work even if you’re not on the cloud. Shouldn’t I just do that instead?

The short answer: It’s far easier to use s3.fm.

If your server is already on the cloud, then pulling your container data out through the Data API is much faster, cleaner, easier and more reliable than using a script. If your FileMaker server isn’t exposed to the internet, then you should seriously consider whether migrating to the cloud would be easier than modifying someone else’s upload script. You should also consider that S3 data is private by default. Once you’ve uploaded, you’ll have to write more code to make it public or share it privately. Here’s an acid test to help you decide which route to take:

Initiating an upload via the AWS REST API can be performed by sending an HTTP PUT from a FileMaker Insert from URL script step. Your cURL options will require a payload hashed with HMAC-SHA256. For AWS to authenticate your payload, you will also need to sign your HTTP PUT headers using AWS Signature v4, which requires that your alphabetized, canonical request and any additional metadata are signed with a signing key that is derived from your AWS secret access key.

You don’t have to understand any of that to know why it can take days (or weeks) for even the most highly skilled developers to write a FileMaker-to-S3 upload script. Having a working script to use as a template doesn’t always help either – instead of just having to understand your own programming style and AWS’s style, you also have to learn the style of whoever wrote the template as well.

What about temporary access to private files? Can s3.fm create presigned S3 URLs?

Yes! Presigned URLs allow you to leave your uploaded files private, yet grant temporary access to them. A presigned URL is an unusually long web address that expires up to 7 days after it is generated. Anyone with the URL can download the file until the URL expires. Again, we’ve already done all the heavy lifting for you: s3.fm has a command for creating presigned URLs and setting their expiration. Ask for a demo.

Can I use my s3.fm API key to use s3.fm like a typical REST API?

YES! Documentation for the s3.fm REST API is here.

What’s on the roadmap for the future of s3.fm?

If there is enough interest in a specific AWS service, I’ll build a connector that works for that service. For example: if you need a way to read the text of scanned documents, sort photos based on who is in them or convert audio to text, AWS has tools for you. Contact us and we’ll figure out how to get it working for you, then we will make it available to everyone else.