Prerequisites
- The bucket name, and an access key with the two permissions below.
- For a non-AWS store, the endpoint URL.
- A BeforeQuery workspace
ownerrole.
Data ingested
When you connect a bucket, BeforeQuery indexes every readable object under the prefix:- Object address —
s3://bucket/key, or the public URL the bucket’sindex.jsonmaps that key to - Title, from the document’s own first heading and falling back to the object key
- Content as markdown, extracted by file type — PDF, Word, Excel, CSV, HTML, markdown and text
- The object’s ETag, so an object the bucket reports unchanged is never downloaded again
Permissions required
Both are read-only — nothing is ever written to your bucket. We recommend creating dedicated credentials with only these two permissions, scoped to the bucket you’re connecting.
Set up the connector
1
Add the source
Open Knowledge Base → Sources → Add source and choose S3 Bucket. Enter the bucket, access key ID and secret access key, plus the endpoint if the store isn’t AWS.
2
Check the connection and add
Click Test connection — it lists the bucket and names what is wrong: a refused credential, a prefix matching nothing, or nothing in it we can read. Then click Add.
Connection settings
A prefix is matched against the start of the key, not walked as a directory.
handbook/ indexes that folder; handbook also picks up handbook-archive/.What gets indexed
Objects up to 32 MB whose type the extractor can read:.pdf, .docx, .xlsx, .xlsm, .xltx, .xltm, .md, .mdx, .txt, .html, .htm, .csv, .tsv. Images, archives and video are passed over — a bucket holding those alongside the documents is the ordinary case.
Making citations clickable
A document’s URL iss3://bucket/key, which identifies it but isn’t something a reader can click. If those documents are published somewhere, add an index.json at the root of the prefix and BeforeQuery cites the mapped address instead:
index.json
Keeping content in sync
The bucket is re-listed every 10 minutes — there is no schedule to configure, and Sync on the source’s page runs one now if you cannot wait. Only objects whose ETag changed are downloaded again, so a quiet bucket costs one listing. An object deleted from the bucket is removed from the index on the next sync, unless that would trip the 45% review threshold.Troubleshooting
AccessDeniedon sync? The key almost certainly hass3:GetObjectbut nots3:ListBucket— see Permissions required.- Signature rejected? The secret access key doesn’t match the access key ID. The region is not the cause — it’s detected from the bucket.
- MinIO or Ceph returning
NoSuchBucket? Turn on path-style addressing. - Nothing indexed? Usually the prefix. Run Test connection — it says whether the prefix matched anything.
- A file missing? Objects over 32 MB and files no text could be read from are listed, with the reason, under the run in Sync history.
- Citations reading
s3://…? That’s the default. Add anindex.json.