Skip to content

The moment it happens

Store files sent to a link in S3

Files or file URLs posted to your link are saved in your bucket under the date, and you get a download link.

Runs
The moment it happens
Apps
AWS
AI
Not needed
Access
s3:PutObject, s3:GetObject (+ s3:ListBucket, s3:DeleteObject for management commands)

Send this to your assistant

Create a ClickRuntime automation: give me a link I can post a file or file URL to. Upload it to my S3 bucket acme-uploads under today's date and email me a download link that works for 7 days.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

Plenty of tools can produce a file but cannot talk to S3: a no-code form that accepts uploads, an image generator, a script on a laptop, a webhook from a scanner. Moving those files to a bucket usually means someone downloads each one and uploads it by hand, or a developer writes a small service with credentials and error handling. Files end up on desktops and in email threads instead of in the one place the team backs up and shares from.

Send a file, or a URL to download one, to your ClickRuntime link. ClickRuntime stores it in your S3 bucket under a key that includes the date, creates a presigned URL for it and emails you the link. The file is saved and shareable within seconds.

It is a quick way to give any tool, even one with no AWS support, a place to deposit its output.

What you get out of it

  • Files land in one reliable place

    Instead of scattering outputs across inboxes and desktops, everything goes into a bucket that is backed up and permissioned. Finding last month's generated images becomes a matter of browsing by date.

  • Tools without S3 support still work

    Anything that can post a file to a URL can now deliver to S3. You do not need an engineer to write an upload service before your form or scanner becomes useful.

  • Dated keys keep the bucket organized

    Because each file is stored under a dated path, you can find items by day and avoid name collisions. Two files called image.png on the same day do not overwrite each other.

  • Sharing does not mean making things public

    A presigned URL gives time-limited access to a single file. You can send it to a client without opening the bucket or the other files in it. Clients get exactly one file, nothing more, and only for a limited time.

  • Credentials stay out of the sending tool

    The sender only needs the link, not AWS keys. If a tool is compromised or a laptop is lost, your AWS credentials are not exposed. A lost laptop does not mean rotating keys.

How it works

What happens, step by step

  1. When a file, or a link to one, is sent to your ClickRuntime link, the automation picks it up straight away.

  2. It saves the file to your S3 bucket in a folder named after today's date.

  3. It creates a temporary download link.

  4. You get an email with the file name, where it was saved and the download link.

Before it runs live

  • Connect AWS
  • Paste your automation's link into the other app's webhook settings

What you get

RunsThe moment it happens
Store files sent to a link in S3just nowSucceeded
Email · S3 uploadSaved q3-contract.pdf to S3 s3://acme-uploads/2026-10-19/q3-contract.pdf

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Act only on the items that match your own rules, and skip the rest
  • Add an AI step, for example to summarize, sort or draft a reply
  • Add another app, for example also send it to Slack
  • Combine it with other AWS steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
save_files_sent_to_a_link_into_s3.pyexample
from datetime import date
import boto3
from clickruntime import on_event, credentials, http, notify

REGION = "us-east-1"

def aws(service):
    return boto3.client(service, region_name=REGION, aws_access_key_id=credentials.secret("AWS_ACCESS_KEY_ID"),
                        aws_secret_access_key=credentials.secret("AWS_SECRET_ACCESS_KEY"))

BUCKET = "acme-uploads"

@on_event
def handle(event):
    body = event.json or {}
    if body.get("url"):
        resp = http.get(body["url"])
        resp.raise_for_status()
        data, name = resp.content, body.get("filename") or body["url"].rstrip("/").split("/")[-1]
    else:
        data, name = event.body.encode(), event.header("x-filename") or f"upload-{event.event_id}"
    key = f"{date.today()}/{name}"
    s3 = aws("s3")
    s3.put_object(Bucket=BUCKET, Key=key, Body=data)
    link = s3.generate_presigned_url("get_object", Params={"Bucket": BUCKET, "Key": key}, ExpiresIn=7 * 24 * 3600)
    notify.email_me(f"Saved {name} to S3", f"s3://{BUCKET}/{key}\nDownload (7 days): {link}")
    return {"key": key, "bytes": len(data)}

FAQ

Common questions

How long does the presigned URL work?
Presigned URLs expire after a set time, which you decide when the flow is set up, commonly a few hours or days. After that the link stops working, but the file remains in the bucket, and a new link can be generated whenever you need one.
Can I send a URL instead of the file itself?
Yes. If the file is already online, such as a generated image hosted by another tool, send the URL, and ClickRuntime downloads it and uploads it to S3. This avoids pushing a large file through your own connection twice.
Is there a size limit on the files?
Very large files are better uploaded directly to S3 than through a web request, and ClickRuntime enforces practical limits on request size. For typical documents, images and exports there is no problem. Ask your AI assistant if you plan to send files over a few hundred megabytes.
What permissions does it need?
s3:PutObject, s3:GetObject (+ s3:ListBucket, s3:DeleteObject for management commands). Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run for each event the app sends.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Store files sent to a link in S3” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.