Terraform State Storage

A Remote Store for Terraform State Backups and Snapshots

Secure backend for Terraform state files with locking support and global access.

Terraform state is the single most sensitive artifact in an infrastructure-as-code workflow: it holds resource IDs, connection strings, and sometimes secrets in plaintext. The canonical remote backends — Terraform Cloud, or the s3 backend paired with a DynamoDB lock table — solve concurrency with state locking, but they also drag in their own setup: an IAM policy here, a DynamoDB table there, a workspace subscription somewhere else. files.link is not a drop-in replacement for those: it does not implement Terraform's HTTP-backend locking protocol, and we will not pretend it does.

What it is genuinely good at is being the durable, private, off-platform home for your state backups and point-in-time snapshots. A common pattern is to keep your live backend wherever locking lives, then push a timestamped copy of terraform.tfstate to files.link after every successful apply so you have an independent recovery point that survives a backend misconfiguration or an accidental terraform state rm.

The upload is three calls: POST /v1/files/{folderId} to mint a presigned URL, PUT the state JSON to that URL, then POST /v1/files/confirm-upload with the returned id. A post-apply hook makes it automatic:

bash
ID=$(terraform output -raw run_id 2>/dev/null || date +%s)
UP=$(curl -s -H "Authorization: $FILESLINK_KEY" \
  -d '{"files":[{"name":"tfstate-'$ID'.json"}]}' \
  https://api.files.link/v1/files/$STATE_FOLDER)
URL=$(echo "$UP" | jq -r '.urls[0].url'); FID=$(echo "$UP" | jq -r '.urls[0].id')
curl -s -X PUT --data-binary @terraform.tfstate "$URL"
curl -s -H "Authorization: $FILESLINK_KEY" \
  -d '{"ids":["'$FID'"]}' https://api.files.link/v1/files/confirm-upload

Keep the state folder private so every snapshot is reachable only through a short-lived signed URL — state should never sit on a public link. Because each upload is its own object, you accumulate a clean, timestamped version history you can diff or roll back to, without standing up a second cloud account just for backups. Files are encrypted at rest. If you need first-class locking, keep that in Terraform Cloud or an S3+DynamoDB backend and treat files.link as the recovery layer beside it.

Benefits With No Complexity

Global CDN delivery

Your files are served from 450+ edge locations worldwide.

Edge-cached worldwide

Files are cached close to your users for fast delivery.

Signed-URL security

Private files stay protected with time-limited access.

What You Get

Unlimited files

Upload as many files as you need.

Unlimited storage

There is no storage limit.

Public + Private storage

Private files are fully secured.

CDN ready links

Upload directly to 450+ edge locations worldwide.

Prepaid credits

No subscription. Pay only for the storage and bandwidth you use.

More coming soon

We have plenty of features coming!

How files.link Works

1. Upload

Create a project and upload your first file.

2. Copy

Copy the CDN link.

3. Use Anywhere

Paste and enjoy the blazing speed.

Why Developers Choose files.link

A Better Way to Store & Deliver Files

Terraform CloudAmazon S3 + DynamoDBGitLab Managed Statefiles.link
Native Terraform backend (locking protocol)
State locking for concurrent applies
Independent off-platform backup target
Timestamped snapshot history out of the box
Encrypted at rest
Private by default with signed-URL access
No extra lock table / service required
Prepaid credits, no subscription seat

Calculate Your Needs

Storage

0GB

Egress

0GB

CDN Bandwidth

0GB
Total: $0.000/month

Start Storing Terraform State

  • Global CDN delivery
  • Edge-cached worldwide
  • Signed-URL security
  • Unlimited files
  • Unlimited storage
  • Public + Private storage
  • No subscription — prepaid credits keep spend predictable
Start Storing Terraform State

Frequently Asked Questions

Can files.link be a native Terraform backend?
No. Terraform's remote backends require an HTTP locking protocol (or DynamoDB for the s3 backend), and files.link does not implement it. Use it as a backup and snapshot target alongside your real backend, not as a replacement for it.
Why back up state separately if my backend already stores it?
A second, off-platform copy protects you from the failure modes your primary backend can't: a corrupted lock, an accidental state rm, a misconfigured workspace, or losing access to that account. Timestamped snapshots on files.link give you a clean recovery point per apply.
How do I keep state files from leaking?
Store them in a private folder. Every object is then reachable only through a signed URL that expires, and the files are encrypted at rest. Never put state on a public link — it can contain secrets and resource identifiers.
How do I roll back to an old state snapshot?
Because every push is its own timestamped object with its own URL, you list the folder, pick the snapshot you want, download it via a signed URL, and restore it into your live backend with terraform state push. No version-bucket spelunking required.
General Questions
Is there a subscription?
No. files.link uses prepaid credits, so storage, bandwidth, and API usage are deducted from your balance as you go. The app explains the payment step before uploads are enabled — no monthly subscription and no per-user fees.
What is files.link?
files.link is a developer-first file platform that makes it simple to store, secure, and deliver files globally. It provides signed URLs, public/private access, and an API-first design so you can integrate file delivery into any app without the usual complexity.
How does billing work?
files.link uses prepaid credits. As you use storage, bandwidth, and API requests, credits are deducted daily. When your balance runs low, we automatically recharge it using your saved card. If an auto-recharge doesn't go through, your files and links stay put — you simply update your payment method or top up manually to keep going. No monthly subscriptions — just simple usage-based pricing.
How secure is my data?
All files are encrypted at rest and in transit. You can use signed URLs for private files, control access with permissions, and rely on enterprise-grade infrastructure for data protection.

Related

files.link
Copyright © 2026
All rights reserved
ContactGuidesGlossaryStatusLegal